本文介绍了Ardupilot固件无人船(车)的各种模式。
用户通常使用遥控器开关设置无人船(车)模式。也可以使用地面站更改模式。
对于3档开关,通常最好将一个开关位置设置为HOLD,另一个设置为MANUAL,第三个设置为STEERING或AUTO。
一、ACRO模式
在ACRO模式下,用户的转向杆控制无人船(车)的转弯速率,油门杆控制无人船(车)速度。
- ACRO_ TURN_RATE参数控制用户的转向杆可以达到的最大转弯率。当RC输入从中间拨到最大时,转弯率从零到ACRO_ TURN_RATE线性变化。一旦摇杆回中,无人船(车)将保持当前航向,以补偿外部扰动影响,即“航向保持”。
- 从CRUISE_ THROTTLE和CRUISE_。这些参数在TURNING SPEED AND THROTTLE(调整速度和油门)页面中有说明。
此模式可能是调整无人船(车)转向率控制器PID最有用的模式。
二、AUTO模式
在AUTO模式下,无人船(车)将遵循自动驾驶仪中存储的航线任务,该任务由导航命令(即航路点)和“执行”命令(即不影响无人船(车)位置的命令,包括触发相机快门)组成。
此模式需要无人船(车)具有GPS和/或视觉里程计或车轮编码器。
速度微调
当无人船(车)执行任务时,用户可以通过将遥控器的油门杆提高到75%至100%来提高无人船(车)的速度。在75%时,无人船(车)将保持在其配置的速度(即WP_SPEED),当操控者的油门杆达到100%时,这将线性增加到无人船(车)的最大速度。
任务结束
如果任务在航路点结束,则将切换到由MIS_DONE_BEHAVE参数确定的模式。
恢复或重新启动任务
如果任务中断(例如,如果用户在完成任务之前将无人船(车)从自动模式切换出来),则会存储执行的最后一个命令,当无人船(车)下一次返回自动模式时,它将从此命令恢复任务。注意:加锁再重新解飞控将使任务重置为第一个航点。
如果您希望任务始终从头开始,请将MIS_RESTART参数设置为“1”。
三、CIRCLE模式
当进入模式时,CIRCLE将绕位于无人船(车)前方CIRC_RRADIUS米处的点运行。
将CIRC_RRADIUS设置为零将使无人船(车)只能停留在原位。
无人船(车)的速度(以米/秒为单位)由CIRC_SPEED参数设置。方向由CIRC_DIR参数设置,“0”为CW,“1”为CCW。
操作说明:
半径、速度和方向参数仅在无人船(车)进入CIRCLE模式(或开始LOITER_TURNS任务命令)时生效,因此用户在该模式下无法直接更改半径或方向。相反,他们必须退出并重新进入模式。在任务中,可以使用DO_CHANGE_SPEED MAVLINK或任务命令更改速度。
四、Dock模式
DOCK模式自动将无人船(车)操纵向静止的停靠目标。目前,我们支持在连接到配套计算机的摄像头的帮助下进行对接。辅助计算机估计标记的姿态( A RUCO MARKER / APRILTAG )放置在停靠站,并发送 着陆目标 MAVLINK消息给无人船(车),然后由精确着陆处理库( AC _PRECLAND )来估计对接目标的位置。
已经使用OPENMV相机作为配套计算机进行了成功的测试,以执行自动对接。然而,任何配备RGB摄像头的配套计算机(如OPENMV摄像头、RASPBERRY PI 、JETSON NANO等)都可以使用,这些摄像头可以估计放置在对接目标处的标记的姿态,并向无人船(车)的自动驾驶仪生成LANDING_TARGET MAVLINK信息。
1、OPENMV相机
OPENMV相机是一种口袋大小的相机板,能够执行各种计算机视觉任务。它可以通过UART接口传输所需的MAVLINK消息,因此可以用作配套计算机来执行自动对接。相机可以直接从openmv.io购买
2、自动驾驶仪
配套计算机需要通过其UART接口连接到自动驾驶仪上的串行端口。
- 如上图所示,将摄像头的P4、VIN和GND引脚连接到自动驾驶仪的一个串行端口。在上图中,OPENMV摄像头连接到PIXHAWK的TELEM2端口。其他配套计算机的连接方案也类似。用户只需在配套计算机上的TX引脚与自动驾驶仪上遥测端口的RX引脚之间进行连接,即可为配套计算机通电。
- 如果使用SERIAL2/TELEM2,则设置SERIAL2_PROTOCOL=1(MAVLINK);如果连接到另一个串行端口,则使用相应的SERIALX_PROTOCOL参数
- 设置SERIAL2_BAUD=115
3、生成APRILTAG标记
OPENMV摄像机能够检测APRILTAGS。OPENMV IDE带有内置的APRILTAG生成器。使用它生成APRILTAG的步骤如下:
- 前往工具->机器视觉->APRILTAG生成器->TAG36H11系列(587个标签-推荐)。这将打开一个小对话框。
- 设置要生成的标记的范围。例如,如果要生成标记号1,请将“最小值”和“最大值”设置为1。也可以通过相应地设置“最小值”和“最大值”,一次生成一系列标记。
- 单击“确定”并将标记保存到所需的目录中。
成功生成标签后,用户可以将其打印出来并垂直放置在对接目标处。根据下一节中的示例脚本,标签的默认打印尺寸为165毫米。只需将生成的标签图像打印在A4尺寸的纸张上,即可获得这种尺寸的标签。
提示:
使用下一节中提到的示例脚本和165毫米标记时,标记检测的最大范围约为1.5-2米。使用更大尺寸的标记可以增加该范围。通过在测试过程中使用380毫米的标记,成功地获得了大约4米的最大范围。下一节将讨论有关修改脚本以使用更大标记的说明。
4、将代码上传到相机
可以使用OPENMV IDE对OPENMV相机进行编程。详细的操作说明可以在这里找到。
- 使用MICRO-USB电缆将OPENMV相机连接到您的电脑。
- 打开OPENMV IDE,然后单击IDE窗口左下角的连接按钮。
- 转到“文件”菜单,创建新文件并将此脚本复制到编辑器窗口。
- 在此处设置标记号和标记的大小。尺寸必须从边缘到边缘(包括黑色边框)以毫米为单位进行测量。
- 要将代码上传到相机,请转到“工具”菜单,然后单击“将打开的脚本保存到OPENMV CAM(如main.py)”。
- 完成!现在,您可以拔下MICRO USB电缆,并使用外部电源为相机通电。如果脚本成功运行,您应该会看到相机上的红色或绿色LED闪烁。当标记在摄像机视线范围内时,LED闪烁绿色,而当摄像机看不到标记时,LED则闪烁红色。
5、安装到无人船(车)上
摄像头应安装在无人船(车)前部。相机板的安装应使带有镜头的相机边缘向上(即远离地面)。这是我们认为在大多数情况下都会使用的默认设置配置。然而,还提供了用于将相机安装在背面和不同安装方向的支撑。如果您想以任何其他配置安装摄像头,请不要忘记相应地设置相关的PLND_XXX参数。
注意:
精确着陆库还依赖于飞行器的罗盘来构建目标矢量。无人船(车)指南针中的任何类型的磁干扰都可能导致无人船(车)在对接过程中表现不当。
6、通过GCS设置
需要设置以下参数,以便使用漫游车上的配套计算机实现精确着陆。
- PLND_ENABLED=1
- PLND_TYPE=1
一旦设置了上述参数,就需要重新启动无人船(车)。
如果您以上一节中提到的默认配置以外的任何配置安装相机,请适当设置以下参数。
- PLND_CAM_POS_X、PLND_CAM_POS_Y、PLND_CAM_POS_6Z:相机在机身框架中的位置(单位:m)
- PLND_ORIENT:摄像头在车身上的方向。摄像头可以安装在车身的前部或后部
- PLND_YAW_ALIGN:相机从默认配置到安装配置的旋转角度,围绕从镜头指向的轴(以厘米为单位)
对接过程可以使用以下参数进行微调。
- DOCK_SPEED:无人船(车)在停靠模式下可以操纵的最大速度限制。
- DOCK_HDG_CORR_EN:在停靠时启用航向校正。这将使无人船(车)能够正面停靠在坞站,即使在无人船(车)不完全在前面时切换了停靠模式。请注意,此功能仅在DOCK_DIR参数设置正确的情况下有效。
- DOCK_DIR:这是指南针的方向,无人船(车)在停靠时需要朝这个方向前进。此方向与坞站所面对的方向相反。例如,如果坞站面向北方,则希望无人船(车)从南方停靠,因此参数应设置为180度。
- DOCK_HDG_CORR_WT:此参数定义无人船(车)尝试校正其航向的力度。
- DOCK_STOP_DIST:与无人船(车)应停靠坞站的距离(以米为单位)。
提示:
如果出现突然的意外移动(将模式更改为保持或手动),请做好重新控制的准备。
五、Follow模式
当切换到跟随时,无人船(车)将尝试以指定的偏移跟随另一辆车(或任何公布其位置的无人船(车))。必须使用如下所示的遥测系统将引导无人船(车)的位置发布到跟随模式下的无人船(车)。QGROUNDCONTROL的ANDROID手机和电脑应用程序(QGC)在测试版中也有这一功能,因此它将跟随地面控制站,而不是跟随无人船(车),类似于COPTER中的FOLLOW ME模式。
最简单的形式是,每辆车的一个遥测端口上都有一个具有相同NETID的遥测无线电。
无人船(车)A仅进入跟随模式,它将尝试跟随无人船(车)B,反之亦然。
如果无人船(车)A或B需要地面站控制,可以在无人船(车)控制器的另一个遥测端口上安装一个不同NETID(YY)上的额外遥测无线电,并与同一NETID上的GCS无线电配对。
如果使用QGROUNDCONTROL,确保GENERAL选项卡STREAM GCS POSITION下的APPLICATION(应用程序)设置为“WHEN IN FOLLOW ME FLIGHT MODE”或“ALWAYS”。接下来连接到无人船(车)并切换到跟随模式,然后它将跟随运行QGC的计算机/手机。
以下参数可用于优化FOLLOW模式的性能:
- FOLL_ENABLE:设置为1,启用跟车模式,刷新参数。
- FOLL_SYSID:领先无人船(车)的 MAVLINK 系统 ID(“0”表示跟随“看到”的第一辆无人船(车))。
- FOLL_DIST_MAX:如果引导无人船(车)距离超过这几米,则放弃跟随并保持位置(如果是船,则徘徊,如果是地面无人船(车),则停车)。
- FOLL_OFS_X、FOLL_OFS_Y、FOLL_OFS_Z(未在ROVER中使用):距领头无人船(车)的3D偏移量(以米为单位)。如果它们为零,则每次都使用当前无人船(车)在进入模式时与跟随目标的偏移量。这些偏移可以通过MAVLINK进行更改,并将立即生效。但是,如果它们最初为零,并且在跟随模式期间而不是在另一个模式期间发生了更改,则在下一次进入跟随模式时,它们将重置为零,直到重新启动,然后更改的偏移将恢复。
- FOLL_OFS_TYPE:如果偏移是东北(NED),则设置为0;如果偏移是相对于前车的航向,则设置1,请参见下图。
- FOLL_POS_P:控制无人船(车)向引导无人船(车)移动的力度的增益(受WPNAV_SPEED限制)。
六、GUIDED模式
GUIDED模式旨在允许地面站或配套计算机控制无人船(车)。
1、从地面站发送命令
大多数地面站支持命令无人船(车)行驶到通过点击地图指定的位置。如果使用任务规划器:
- 使用遥测无线电连接到无人船(车)。
- 在飞行数据屏幕上,用鼠标右键点击地图,然后选择“飞到这里”。
- 无人船(车)将切换到GUIDED模式并尝试行驶到指定的位置。
- 一旦到达目的地,如果是水面无人船(车),它将保持位置,如果是船,它将在目的地周围徘徊/绕圈。
在发送目标目的地之前,地面站通常会将无人船(车)设置为引导模式,这意味着无需在遥控器哦模式开关上设置引导模式。
2、速度
当无人船(车)行驶时,用户可以通过将遥控器哦的油门杆提高到75%到100%之间来提高无人船(车)的速度。在75%时,无人船(车)将保持在其配置的速度(即,如果WP_SPEED为零,则为WP_SPEED或CRUISE,3.5.1之后的无人车版本仅使用WP_SPEED),当操控者的油门杆达到100%时,这将线性增加到无人船(车)的最大速度。
3、其他控制
在GUIDED模式下支持这些附加MAVLINK消息。这些主要是为地面站或配套计算机应用程序的开发人员列出的:
- SET_ATTITUDE_TARGET
- SET_POSITION_TARGET_CAL_NED
- SET_POSITION_TARGET_GLOBAL_INT
- COMMAND_LONG中的MAV_CMD_NAMEV_SET_YAW_SPEED命令
七、HOLD模式
在HOLD模式下,无人船(车)应停止,对于常规转向油门无人车,转向将指向正前方。
这是一个很好的无人船(车)加锁和解锁模式,因为加锁/解锁所需的遥控器输入不会影响转向或电机。
通常设置各种故障保护功能以将无人船(车)切换到此模式。
SERVO AND MOTORS 的输出将存在 SERVOX_TRIM参数中(即SERVO1_TRIM、SERVO3_TRIM)中保持的值。
八、LEARNING模式(已弃用)
在ROVER-3.2(及更高版本)中,学习模式已被删除,取而代之的是“保存路点”辅助开关功能。
在ROVER-3.1及更早版本中,LEARNING与MANUAL完全一样驾驶,当通道7开关瞬间切换时,航路点将保存在任务命令列表中。
有关此模式的更多信息,请参阅主题“学习任务”。
九、LOITER模式
LOITER模式允许船只在强大的水流中保持位置。
笔记:
ROVER-3.4(及更高版本)提供此模式。
如果飞行模式设置屏幕上没有显示该模式,您可以手动将MODEX参数设置为“5”。
此模式的工作方式是:
- 用户切换到LOITER模式,使用无人船(车)的当前位置、速度和最大减速度被用来规划一个合理的停车点。
- 当船在目标的LOIT_RADIUS内时,它只是漂移。
- 如果/当船只偏离目标超过LOIT_RADIUS时:
- 旋转以直接指向目标或直接远离目标(以旋转较少的为准)。
- 以0.5米/秒的速度向前或向后驱动/漂浮到目标周围圆圈的边缘,但速度不大于WP_SPEED。
提示:
为了获得最佳性能,ESC死区应较小。MOT_THR_MIN可用于补偿ESC死区。有关详细信息,请参阅本节。
十、MANUAL模式
在MANUAL模式下,遥控器的转向和油门杆直接控制无人船(车)的油门和转向输出。
- 此模式不需要位置估计(即不需要GPS)。
- 建议始终将一个变送器模式开关位置分配给该模式。
- 转向角速度缩放可通过MANUAL_OPTIONS的第一位启用。这需要从多种类型的传感器中的一种来估计地面速度。
- 转向EXPO可以使用MANUAL_STR_EXPO来降低空档附近的变送器转向控制灵敏度。
十一、RTL模式
RTL代表返回启动。当切换到RTL模式时,无人船(车)将转向并尝试直接返回到上次待命的位置(除非通过地面站更改了原始位置)。一旦到达目的地,如果是船,它将在目的地周围徘徊/绕圈。
- RTL_SPEED参数可用于设置无人船(车)返回原点的速度(以米/秒为单位)。默认情况下,此参数为零,这意味着它将使用WP_SPEED(或CRUISE_SPEED用于ROVER 4.0之前的版本,如果WP_SPEED为0)。
十二、SIMPLE模式
SIMPLE模式允许操作员从操作员的角度控制无人船(车)的移动,而不管无人船(车)当前朝向哪个方向。这对于那些还没有掌握根据无人船(车)朝向的方向调整转向输入的新操作员以及无人船(车)距离足够远以至于其航向不明显的情况非常有用。
- SIMPLE模式允许你在待命时相对于无人船(车)的航向控制无人船(车),并且仅依赖于良好的指南针航向。
1、MANUAL/ACRO模式
在MANUAL或ACRO模式下,操作员的遥控器哦操纵杆输入应用于无人船(车)的方向。例如,在上图中,当操作员向右偏航(红色)时,只要操纵杆输入未释放,无人船(车)就会向右偏航。
当无人船(车)朝向与操作员相同的方向时,控制无人船(车)相对容易,但当无人船(车)朝向操作员时,缺乏经验的操作员会感觉到控制都颠倒了。即,如果操作员输入右偏航,无人船(车)将从操作员的角度向左转向。
2、SIMPLE模式
这种模式允许你驾驶无人船(车),就好像它指向了启动时所指向的方向,而不管其当前的航向如何。因此,如果你向前握住油门杆,无人船(车)将远离你(朝着它启动的方向),向后拉油门杆,它将转向并朝着你回来,朝着与被启动时相反的方向。同样,如果在油门处于空档的情况下将转向杆向右保持,无人船(车)将转向与启用时成90度的方向,并沿该方向移动。
无人船(车)移动的速度与油门和/或方向盘操纵杆离开空档的位置成正比,与ACRO模式类似,在ACRO模式中,空档停止,全杆为最大速度(SPEED_MAX)。在节气门全开的情况下,无人船(车)将尝试在启用方向上以75%的最大速度行驶,目标速度将为最大速度的1/2,在启用时的相反方向上以25%的最大速度1/2行驶。同样,对于方向盘操纵杆,最右侧为90度时的最大速度,最左侧为与启用方向成-90度时的最高速度。速度目标被限制在最大速度,因此全速前进油门和全速右转向不会导致45度时的速度快于最大速度,而是被限制在最高速度。
一般情况下,当你启动时,你应该站在无人船(车)后面,当启动时,它的头部直接指向远离你的地方。移动时,应尽量将无人船(车)保持在起始位置的前方,因为如果无人船(车)在您后方移动,所有控制装置都会感觉颠倒。
如上所述,简单模式在紧急情况下也非常有用,因为无人船(车)离得足够远,很难确定其航向。
SIMPLE_TYPE参数允许移动方向基于绝对北/南/东/西罗盘方向,而不是相对于待命方向。
十三、STEERING模式
在转向模式中,用户的转向操纵杆控制无人船(车)的横向加速度,油门操纵杆控制车速。在给定的转向杆百分比下,无人船(车)将受到控制,以尝试以当前目标速度转弯时产生的横向加速度为G力的百分比,不超过ATC_TURN_MAX_G G。因此,对于全杆转向输入,在较低的速度下,转弯半径将为TURN_RADIUS,并随着速度的增加而逐渐增加,从而不会超过ATC_TURN_MAX_G。一旦输入返回空档,无人船(车)将尝试保持航向,以补偿外部影响,即“航向保持”。对于地面无人船(车),这是为了防止侧翻或打滑。
- TURN_RADIUS参数控制转弯的最大攻击性。数量越小,转弯越激烈。这是地面无人船(车)所能达到的最窄半径,通常在低速行驶时。
- ATC_TURN_MAX_G参数设置转向时横向G的最大限制,以防止地面无人船(车)上的侧翻或打滑。
- 当不移动时,滑移转向无人船(车)将响应转向输入而枢转,但常规转向油门无人车几乎不会显示出转向响应。
- 从CRUISE_ THROTTLE和CRUISE_。这些参数在TUNING SPEED AND THROTTLE(调整速度和油门)页面中有说明。
- 对象回避(如果已配置)在此模式下是活动的。
- 在早期版本的(ROVER 3.4.1之前)中,SPEED_TURN_AIN(ROVER 3.1及更早版本)或WP_OVERSHOOT参数将使无人船(车)减速,就像在AUTO中一样。在TUNING NAVIGATION页面上对此进行了简要描述。当前稳定版本在转向模式中不使用任何参数。
- 此模式可用于在尝试调整导航控制之前调整转向速率和速度控制器,但最好使用ACRO模式来防止转向模式限制任何转弯速率。
十四、SMART RTL模式
当切换到SMART RTL时,与REGULAR RTL一样,无人船(车)将尝试回家。这种模式的“智能”部分是,它将沿着安全的路线回家,而不是直接回家。如果无人船(车)和原位之间有障碍物,这可能会很有用。一旦到达目的地,如果是水面无人船(车),它将保持原位,如果是船,它将在目的地周围徘徊/绕圈。
注意:
当无人车处于待命状态或SMARTRTL将被禁用时,无人船(车)必须具有良好的位置估计(LED应为绿色)。如果无人船(车)在没有良好位置估计的情况下启用,“SMARTRTL DEACTIVATED:BAD POSITION”将发送到地面站。
当无人船(车)在任何其他模式下飞行时,用于回家的路径都会被捕获在缓冲区中。路径是“简化”的(意味着弯曲的路径变成一系列直线)和“修剪”的(意思是循环被删除)。缓冲区的大小有限(见下文)。当它接近满时,“SMARTRTL空间不足”将作为信息消息发送到地面站,一旦满了,地面站的HUD上将显示“SMARTRTL-DEACTIVATED:BUFFER FULL”,用户将无法再切换到此模式。为了避免SMARTRTL被停用,你可以暂时切换到该模式,在返回时排出路径点一段时间,然后退出该模式并继续,直到空间再次变低。
- RTL_SPEED可用于设置无人船(车)返回原点的速度(以米/秒为单位)。默认情况下,此参数为零,这意味着将使用WP_SPEED参数值,或者在ROVER 4.0之前的版本中使用CRUISE_SPEED,如果WP_SPEED也为0。
- SRTL_ACCURACY控制所执行的简化和修剪的精度(以米为单位)。简化算法将曲线路径转换为直线,但直线与原始路径的距离永远不应超过此距离。修剪算法将切割彼此相距这么多米以内的路径。
- SRTL_POINTS控制可存储的最大点数。每增加100个点需要大约3K的RAM。允许的最大点数为500。