附-MP地面站中50个航点任务的用法,如何查询?
附:官方wiki指令大全 1)多旋翼的命令列表: https://ardupilot.org/copter/docs/common-mavlink-mission-command-messages-mav_cmd.html 2)固定翼的命令...
官方wiki指令解析
1)多旋翼的命令列表: https://ardupilot.org/copter/docs/common-mavlink-mission-command-messages-mav_cmd.html
2)固定翼的命令列表: https://ardupilot.org/plane/docs/common-mavlink-mission-command-messages-mav_cmd.html
3)巡航车的命令列表: https://ardupilot.org/rover/docs/common-mavlink-mission-command-messages-mav_cmd.html
4)潜水艇的命令列表: https://ardupilot.org/sub/docs/common-mavlink-mission-command-messages-mav_cmd.html
一、前言
在《航线快速入门(视频教程)》这个章节中介绍了MP地面站的基本使用、航线规划中最常用的起飞命令、航点命令、返航命令。
但是相信用过MP地面站的朋友都知道,还有非常多的命令可以选择,因此本章节的内容就讲解一下其余的这些命令都是什么用途!
在航线规划页面中,鼠标单击地图的某处位置即可进行航点选择,默认该点的命令是WAYPOINT(航点)。
用户可以通过下拉选框选择其他,如下图所示:

二、超高频指令
起飞命令:TAKEOFF
该起飞命令适用于多旋翼和固定翼,垂起需要使用VTOL_TAKEOFF
无人机执行自动任务后,会先起飞到这个预设的高度,再朝下一个航点飞去!

在起飞命令中,可以预设的参数有:
1)起飞高度:
航点命令:WAYPOINT
想要飞到地图上的哪个位置点,就选用这个WAYPOINT航点指令。(默认在地图上选一个位置,然后点击以后就是航点)

在航点命令中,可以预设的参数有:
1)航点悬停时间:单位是秒。设值代表,到达这个航点后,会在该航点上停留多少秒的时间。
2)经度:
3)纬度:
4)飞行高度:
返航命令:RETURN_TO_LAUNCH
在所有航点执行完毕后,记得 在最后加上一个RETURN_TO_LAUNCH返航指令,这个指令不用设置任何参数

在返航命令中,无需设置任务参数;飞控识别到这个是返航命令,就会自动执行返航的业务逻辑!
需要注意的是:当用户勾选了TAKEOFF和RETURN_TO_LAUNCH指令后,起飞点与返航点就会在地图上消失,这个是正常的。

三、LAND指令(慎用)
在某个航点处使用LAND命令,无人机就会在这个点上直接执行降落。
通用我们使用RETURN_TO_LAUNCH(返航指令,返航到头顶时候飞控会自动执行降落!
此指令要慎用,一般不用;

四、跳转指令(测试过程中常用)
当规划了一个航线任务,我们希望飞机能够从某个航点后开始,重复执行几圈,可以使用DO_JUMP跳转指令

在跳转命令中,可以预设的参数有:
1)要跳转的航点序号(WP#):比如在5号航点后面紧跟跳转命令,然后序号填写2号。那么就会在飞完5号航点后朝向2号航点飞去!
2)重复的次数(Repea#):设置为1、2、3....则代表循环对应的次数;如果设置为-1,那么就是无线续航,直到触发低电量返航!(通常用来做航程测试)
五、继电器/PWM舵机控制-相关指令
DO_SET_RELAY继电器抛投指令,它是0/1开关量的控制逻辑,可以通过挂载继电器模块,使得无人机在空中航点任务中,能够开启或关闭继电器!
它的使用还需要设置一些前置参数,详情请参阅文档《继电器模块的使用》

它有两个参数可以进行设置,分别是:
1)继电器通道:选择控制哪个继电器通道
2)继电器开关电平:该通道触发高电平还是低电平。
此外,还有DO_SET_SERVO的舵机控制指令,它是控制PWM值的控制量,可以在无人机上挂载舵机进行控制,再空中实现抛投控制等效果。
具体抛投模块的应用,可以参阅文档《舵机抛投器的使用》

六、其余航点任务含义如何查看?
估计很多人看完后都会有个疑问:在航线规划界面中,除了那3个常用的起飞命令、返航命令、航点命令外,还有一大堆命令(共计有50个命令+1个UNKNOWN)。
其他的指令到底是什么意思?每个指令又可以配置什么参数?

其实MP地面站的50个航点指令,在Ardupilot的官方wiki中,都有详细的说明,很多新手朋友对Ardupilot的官网信息的架构不清楚,表示找不到在哪里,其原文如下:
https://ardupilot.org/copter/docs/common-mavlink-mission-command-messages-mav_cmd.html#

下面,结合MP地面站的指令与官网Wiki来详细说明下!
6.1、例1:TAKEOFF指令
在航线任务中,起飞命令TAKEOFF相信大家都非常熟悉了,细心的朋友会发现,好像每个指令的后面都可以跟7个参数,这是固定格式!
如下图所示:在MP地面站的TAKEOFF中,只有最后1个参数7(飞行高度),可设置!

在Ardupilot的官方wiki中,可找到MAV_CMD_NAV_TAKEOFF指令,该指令就是对应的MP地面站的TAKEOFF命令。
如下图所示:表中一共有7个参数(所有命令都是7个参数),其中参数2和参数3(标记Empty空的占位符参数),可以直接无视。
在TAKEOFF命令中,只有最后一个没有置灰参数--高度;也就跟MP地面站的参数7--高度对应上了。

至于全是英文的语言障碍问题,现在这个时代谁还自己翻译,直接复制给AI翻译即可!
6.2、同一命令在不同机型的适配性
如下图所示:每条命令在开头,都有一个适配的机型说明。
比如TAKEOFF命令,可用在多旋翼和固定翼中,但无法用在巡航车上!

我们可以在链接着将copter改为plane,就可以跳转到plane载具的命令中!此时可以发现第一个参数就不再是灰色,可以选择设置!

6.3、DO_JUMP命令
当规划了一个航线任务,希望飞机能够在某个航点之后,重复多执行几圈时,可以使用DO_JUMP命令。如下图所示:
当无人机飞完4号航点后,正常应该是执行返航。但是如果在4号航点后面加上DO_JUMP命令,无人机就可以选择跳转到的某个航点重复执行。

DO_JUMP指令,可设置的参数有:
1)WP#:跳转到哪个航点
2)Repea#:重复的次数。(设-1代表,无限循环直到低电返航)
那么,还是打开Ardupilot的官方wiki进行搜索,可以发现:
DO_JUMP命令在Ap的官网中对应的是MAV_CMD_DO_JUMP命令!
如下表所示,参数1和参数2就有详细的解释说明。并且这个指令是的适配All Vehicles(所有机型载具)!

通过对上述2个命令的分析,所以后续再遇到不懂的航点,可直接在Ardupilot的Mission Commmand List页面进行查阅!

6.4、航点命令在飞控源码中的体现(进阶)
细心的朋友,可以会发现:
MP地面站的TAKEOFF,对应MAV_CMD_NAV_TAKEOFF!
MP地面站的DO_JUMP,对应MAV_CMD_DO_JUMP!
这是因为MP地面站是UI显示界面,所以对上述航点命令进行了简写。在Ardupilot/PX4飞控中,不管是飞机数据发给地面站,还是控制指令从地面发向无人机,其通讯走的都是Mavlink协议。
在Ardupilot源码中,跟Mavlink相关的指令代码,在以下目录中:
ardupilot/modules/mavlink/message_definitions
如果没有下载源码的朋友,可通过github链接进行查阅:

其中上述50个航点指令,主要又集中在以下这两个文件中。

还是以TAKEOFF指令为例,在以下目录中
ardupilot/modules/mavlink/message_definitions/v1.0/common.xml
可以看到如下图所示的代码:

代码如下:
<entry value="22" name="MAV_CMD_NAV_TAKEOFF" hasLocation="true" isDestination="true">
<description>Takeoff from ground / hand. Vehicles that support multiple takeoff modes (e.g. VTOL quadplane) should take off using the currently configured mode.</description>
<param index="1" label="Pitch" units="deg">Minimum pitch (if airspeed sensor present), desired pitch without sensor</param>
<param index="2">Empty</param>
<param index="3">Empty</param>
<param index="4" label="Yaw" units="deg">Yaw angle (if magnetometer present), ignored without magnetometer. NaN to use the current system yaw heading mode (e.g. yaw towards next waypoint, yaw to home, etc.).</param>
<param index="5" label="Latitude">Latitude</param>
<param index="6" label="Longitude">Longitude</param>
<param index="7" label="Altitude" units="m">Altitude</param>
</entry>大家可以将上述代码复制,仍然直接发给豆包/千问/Deepseek/GPT等大模型,就可以得到精准的翻译与解析!

到此,可能有朋友会问:前面都讲了Ardupilot官方有对指令的解析文档了,为什么还需要通过复制代码去问大模型?
因为代码是最新的,文档的更新速度一般跟不上代码的更新!