(6)(6.2) 任务命令

文章目录

        前言

6.2.1 概述

6.2.2 导航命令

6.2.3 条件命令

6.2.4 DO命令


前言

本文介绍了 CopterPlaneRover 切换到自动模式时支持的任务指令

Warning

这是一项正在进行中的工作,尚未经过全面审核。有关 Copter 的更佳列表,请点击此处(Copter can be found here)。


6.2.1 概述

MAVLink 协议定义了大量 MAV_CMD 航点命令类型(在MAVLink_mission_item_message中发送)。ArduPilot 对这些命令的子集和命令参数进行了处理,这些子集和参数对每辆飞行器来说都是最相关和最有意义的。发送到特定自动驾驶仪的不支持命令将被直接丢弃。

本文列出并描述了每种车辆类型所支持的命令和命令参数。任何"灰色"的参数都是自动驾驶仪不支持的,将被忽略。本文仍对这些参数进行了记录,以明确说明飞行器不执行 MAV_CMD(MAV_CMD protocol)协议支持的哪些属性。

有些命令和命令参数没有执行,是因为它们与特定的飞行器类型无关(例如,"MAV_CMD_NAV_TAKEOFF"命令适用于固定翼和旋翼飞机,但不适用于无人车,而俯仰参数只适用于固定翼)。还有一些可能有用的命令参数没有被处理,因为信息大小有限制,而且已经决定优先处理某些参数,而不是其他参数。

Note

有关 Copter 支持命令的其他信息(从 Mission Planner 的角度),请参阅 Copter 任务命令列表(Copter Mission Command List)。

命令类型

任务中可以使用几种不同类型的命令:

  • 导航指令用于控制飞行器的移动,包括起飞、前往和绕行航点、改变高度和着陆;
  • DO命令用于辅助功能,不影响飞行器位置(例如,设置摄像机触发距离或设置伺服值);
  • 条件指令用于延迟 DO 指令,直到满足某些条件,例如无人机达到一定高度或距离航点一定距离。

在一次任务中,最多只能同时运行一条"Navigation(导航)"命令和一条"Do(执行)"或"Condition(条件)"命令。一个典型的任务可能会设置一个航点(NAV 命令),添加一个在距离目的地一定距离后才完成的 CONDITION 命令(MAV_CMD_CONDITION_DISTANCE),然后添加一些 DO 命令,这些命令会在条件完成后按顺序执行(例如 MAV_CMD_DO_SET_CAM_TRIGG_DIST,用于定时拍照)。

Note

CONDITION DO 命令与前面的 NAV 命令相关联:如果无人飞行器在执行这些命令之前到达下一个航点,则将加载下一条 NAV 命令,并跳过这些命令。

参考框架

许多命令(尤其是 NAV_ commands)都包含位置/定位信息。这些信息是相对于特定"参照系"提供的,该参照系在信息的"参照系"(Frames of reference)字段中指定。旋翼飞机和无人车飞行任务使用 MAV_CMD_DO_SET_HOME 命令在全球坐标框架(MAV_FRAME_GLOBAL)、WGS84 坐标系(WGS84 coordinate system)中设置"原点位置",其中海拔高度相对于平均海平面。所有其他命令都使用 MAV_FRAME_GLOBAL_RELATIVE_ALT 框架,该框架使用相同的经纬度,但将高度设置为相对于原点位置(原点高度 = 0)。

固定翼命令还可以使用 MAV_FRAME_GLOBAL_TERRAIN_ALT 参照基准。这同样具有 WGS84 的纬度/经度参考框架,但指定了相对于地面高度的高度(如地形数据库中的定义)。

Note

任务命令不支持 MAVLink 协议中定义的其他帧类型(请参阅 MAV_FRAME)。

信息的准确性如何?

如果一条命令或参数被标记为支持,那么它很可能(但不保证)会按照指示执行。如果命令或参数未列出(或标记为不支持),则极有可能 ArduPilot 不支持该命令或参数。

原因是,这些信息主要是通过检查命令处理程序的信息推断出来的:

  • 对 AP_Mission::mavlink_to_mission_cmd 中的开关语句进行检查,以确定所有飞行器平台都会处理哪些命令,并存储信息中的哪些参数;
  • 每种飞行器类型(Plane, Copter, Rover)的命令处理程序开关会告诉我们每种飞行器可能支持哪些命令,以及哪些参数会传递给处理程序。

通过上述检查,可以非常准确地了解哪些命令和参数不受支持。它们还能比较准确地说明哪些命令/参数可能会被支持。不过,这种显示并不保证准确,因为命令处理程序可能会丢弃所有信息(我们也没有完全检查所有这些信息)。

除上述检查外,我们还合并了旋翼飞机任务指令列表中的信息(Copter Mission Command List)。

如何解释命令参数

表中列出了每条命令的参数。"灰色显示"的参数不受支持。命令字段列(参数名)使用 "粗体"文本表示协议中定义的参数(""参数使用普通文本)。

这样,用户/开发人员就能看到 ArduPilot 支持哪些协议字段,以及不支持哪些协议字段。

GCS上使用此信息

Mission Planner (MP) 公开了 ArduPilot 支持的全部命令和参数子集,经过过滤后仅显示与当前连接的飞行器相关的命令和参数。将 MP 命令映射到本文档非常简单,因为它只需使用完整命令名称的缩减版来命名命令(例如DO_SET_SERVO,而不是完整命令名称:MAV_CMD_DO_SET_SERVO)。此外,本文档还方便地列出了 Mission Planner 在每个参数旁边使用的列标。

其他 GCSAPM Planner 2Tower 等)可能支持其他一些命令/参数子集,并使用其他名称/标签。在大多数情况下,映射应该是显而易见的。

6.2.2 导航命令

篇幅过多,另起一篇介绍:

6.2.3 条件命令

篇幅过多,另起一篇介绍:

6.2.4 DO命令

篇幅过多,另起一篇介绍:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/79807.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

湘潭大学 湘大 XTU OJ 1325 K-Good Number 题解(非常详细)

链接 1325 题面 题目描述 如果一个整数的二进制(无前导0)中1的个数比0的个数多,我们称其为好数。如果其中1比0多k个,我们称其为k-好数 现在给你一个整数,请计算它的k。 输入 第一行一个整数T(1≤T≤10000)&#…

jvm-类加载子系统

1.内存结构概述 类加载子系统负责从文件系统或网络中加载class文件,class文件在文件开头有特定的文件标识 ClassLoader只负责class文件的加载,至于它是否运行,则由Execution Engine决定 加载的类信息存放于一块称为方法区的内存空间&#xff…

初识Sentinel

目录 1.解决雪崩的方式有4种: 1.1.2超时处理: 1.1.3仓壁模式 1.1.4.断路器 1.1.5.限流 1.1.6.总结 1.2.服务保护技术对比 1.3.Sentinel介绍和安装 1.3.1.初识Sentinel 1.3.2.安装Sentinel 1.4.微服务整合Sentinel 2.流量控制 2.1.簇点链路 …

如何使用CSS实现一个瀑布流布局?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 使用CSS实现瀑布流布局⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅!这个专栏是为那些对Web开发感兴趣、刚刚…

语法篇--XML数据传输格式

一、XML概述 1.1简介 XML,全称为Extensible Markup Language,即可扩展标记语言,是一种用于存储和传输数据的文本格式。它是由W3C(万维网联盟)推荐的标准,广泛应用于各种系统中,如Web服务、数据…

【了解一下常见的设计模式】

文章目录 了解一下常用的设计模式(工厂、包装、关系)导语设计模式辨析系列 工厂篇工厂什么是工厂简单工厂「模式」(Simple Factory「Pattern」)简单工厂代码示例:简单计算器优点:缺点: 静态工厂模式特点: 工…

NLP | 基于LLMs的文本分类任务

比赛链接:讯飞开放平台 来源:DataWhale AI夏令营3(NLP) Roberta-base(BERT的改进) ①Roberta在预训练的阶段中没有对下一句话进行预测(NSP) ②采用了动态掩码 ③使用字符级和词级…

基于nginx禁用访问ip

一、背景 网络安全防护时,禁用部分访问ip,基于nginx可快速简单实现禁用。 二、操作 1、创建 conf.d文件夹 在nginx conf 目录下创建conf.d文件夹 Nginx 扩展配置文件一般在conf.d mkdir conf.d 2、新建blocksip.conf文件 在conf.d目录新建禁用ip的扩展配置文…

【HCIP】08.ISIS中间系统

链路状态协议,传递LSA信息ISIS基于数据链路层封装在OSI时,也有自己的网络层地址和自己的路由协议,即ISIS。之前的ISIS支持OSI的网络层地址,是为OSI中的CLNP(无连接网络协议)网络设计的路由协议,…

8.23作业

设计一个Per类&#xff0c;类中包含私有成员&#xff1a;姓名、年龄、指针成员身高、体重&#xff0c;再设计一个Stu类&#xff0c;类中包含私有成员&#xff1a;成绩、Per类对象 p1&#xff0c;设计这两个类的构造函数、析构函数和拷贝构造函数。 #include <iostream>u…

Java如何调用接口API并返回数据(两种方法)

Java如何调用接口API并返回数据&#xff08;两种方法&#xff09; java处理请求接口后返回的json数据-直接处理json字符串 处理思路&#xff1a; 将返回的数据接收到一个String对象中&#xff08;有时候需要自己选择性的取舍接收&#xff09; 再将string转换为JSONObject对象 …

MPP 还是主流架构吗

MPP 架构&#xff1a; MPP 架构的产品&#xff1a; Impala ClickHouse Druid Doris 很多 OLAP 引擎都采用了 MPP 架构 批处理系统 - 使用场景分钟级、小时级以上的任务&#xff0c;目前很多大型互联网公司都大规模运行这样的系统&#xff0c;稳定可靠&#xff0c;低成本。…