恢复任务回放¶
本页介绍了什么是 "任务继续时后退 "功能以及如何使用该功能。
备注
从 4.1 版起,飞机、旋翼飞行器和UGV无人车均可使用此功能。
在某些应用或运行区域,为了消除冲突,通常会中断任务,方法是切换到另一种模式,并使飞行器偏离计划的任务路径。当准备继续执行任务时,飞行器的正常行为是直接飞行/驾驶到任务中加载的最后一个 "活动 "航点。这种行为如下图所示:
可以看出,这使得计划飞行任务的很大一部分要么被错误的航迹和航向覆盖,要么根本没有覆盖。这对于数据收集任务(如勘测)来说是个问题,导致需要重复执行任务。
恢复时倒退功能可以纠正这种行为。后退距离由操作员定义。当飞行任务恢复时,飞行器将在飞行任务中断点后方所需的距离内返回飞行任务轨道。这样,飞行器就有足够的时间在到达最初被中断的位置之前实现所需的轨道和航向。这种行为如下所示:
配置¶
通过设置 DO_SET_RESUME_REPEAT_DIST 任务项,可以启用恢复时倒带功能。有两种方法可供选择:
1) 地面控制站识别 DO_SET_RESUME_REPEAT_DIST 任务项目
在任务中希望启用该功能的位置添加 DO_SET_RESUME_REPEAT_DIST 任务项。
将第一列数据设置为任务恢复时的倒带距离(以米为单位)。
2) 地面控制站无法识别 DO_SET_RESUME_REPEAT_DIST 任务项目
从希望启用该功能的任务点添加一个 UNKNOWN 任务项目,并将 MAVLink ID 设置为 215。
将第一列数据设置为任务恢复时的倒带距离(以米为单位)。
备注
必须将 MIS_RESTART 参数设置为零,以防止飞行任务重新启动,这项功能才能起作用。
要检查飞行任务中是否正确设置了倒带距离,请监控地面控制站的信息输出。当飞行器注册指令时,将显示以下信息:"Resume repeat dist set to <DISTANCE> m"(恢复重复距离设置为 <DISTANCE> 米)。
在整个任务过程中,可以设置多个 DO_SET_RESUME_REPEAT_DIST 命令。这使操作员能够在整个任务过程中改变倒带距离或开关该功能,因为在某些任务路段操纵飞行器时需要非常小心和准确。
可以通过设置距离为零的 DO_SET_RESUME_REPEAT_DIST 任务项来关闭这一功能。
提示
在确定所需的恢复距离时,对大多数载具来说,一个合理的值是最小转弯半径的两倍。唯一的例外是可以原地转向的载具(多旋翼飞行器和某些漫游车),在这种情况下,合理的距离应为 WP_RADIUS 的两倍。
工作原理¶
一旦启用,ArduPilot 将开始记录成功加载为 "活动 "的航点。最多可存储七个航点的历史记录。任务恢复后,将搜索任务历史记录,直到以下任一情况:
在任务轨道中找到一个满足倒带距离要求的位置。
在这种情况下,恢复位置将是历史记录中存储的最后一个航点。
然后,飞行器将恢复到任务轨道上的该位置,并按计划继续执行任务。
备注
恢复位置会考虑高度因素。如果飞行器沿任务航迹恢复飞行,而飞行器的高度正在发生变化,则恢复位置的高度将在两个相邻航点之间进行线性插值。
备注
为防止飞行器存储模糊的历史记录并重新回到意外位置,如果使用地面控制站或脚本中的设定航点功能更改任务,则历史记录将被重置。这可以防止飞行器将任务倒带回到历史记录被重置的位置。
备注
该功能与 DO_JUMP 命令配合使用,在飞行器继续执行任务时,跳跃次数不会递增。
局限性¶
1) 任务腿短: 如果任务中的航点间距很近,而请求的后退距离大于最后通过的六个航点的距离,那么飞行器将在存储的 "最老 "航点上继续前进。
2) 样条航点: 该功能可与直线航点一起使用。不过,由于距离计算是基于导航命令位置之间的直线,因此恢复距离的精确度会降低。
3) 非航点导航指令: 该功能适用于非航点导航命令,例如 LOITER_TURNS。但是,在这些命令中,距离计算并不考虑飞行器航迹的距离。以前面的例子为例,距离计算并不考虑徘徊中的飞行距离。