# 预防碰撞
预防碰撞 可用于在载具撞上障碍物之前自动减速和停车。
多旋翼飞行器可在以下情况下启用该功能 位置模式它可以使用来自机载配套计算机的传感器数据、通过 MAVLink 连接的机载测距仪、连接到飞行控制器的测距仪或上述设备的任意组合。
如果传感器范围不够大,防碰撞功能可能会限制飞行器的最高速度!它还可以防止在没有传感器数据的方向上移动(例如,如果没有后方传感器数据,就无法向后飞行)。
TIP
如果高飞行速度非常重要,可考虑在不需要时禁用防撞功能。
TIP
确保您想飞的所有方向都有传感器/传感器数据(启用防碰撞功能时)。
# 概述
预防碰撞 在 PX4 上,通过设置最小允许进场距离 (CP_DIST).
该功能需要外部系统提供障碍物信息(通过 MAVLink 障碍物距离 (打开新窗口) 消息)和/或 距离传感器 连接到飞行控制器。
备注
多个传感器可用于获取物体信息并防止碰撞 围绕 载具。如果多个数据源为 一样 定向时,系统会使用报告与物体距离最小的数据。
载具会限制最大速度,以便在接近障碍物时减慢速度,并在达到允许的最小间距时停止移动。为了远离(或平行于)障碍物,用户必须命令载具向一个不会使载具更接近障碍物的设定点移动。如果确定在所请求的设定点两侧的固定范围内存在更好的设定点,算法将对设定点方向进行微调。
通过以下方式通知用户 QGroundControl 虽然 预防碰撞 主动控制速度设定点。
下一节将介绍 PX4 软件的设置。如果使用连接到飞行控制器上的距离传感器来防止碰撞,则需要按照下一节的说明进行连接和配置。 PX4 距离传感器.如果使用配套计算机提供障碍信息,请参阅 同伴设置.
# PX4(软件)设置
通过以下方式配置碰撞预防 设置以下参数 于 QGroundControl:
参数 | 说明 |
---|---|
CP_DIST | 设置最小允许距离(载具可以接近障碍物的最近距离)。设置为负数则禁用 预防碰撞. >; 警告 该值是到传感器的距离,而不是到载具或螺旋桨外部的距离。请务必留出安全余量! |
CP_DELAY | 设置传感器和速度设定点跟踪延迟。参见 延时调整参数 下图 |
CP_GUIDE_ANG | 设置角度(指令方向的两侧),如果载具在该方向上发现的障碍物较少,则可以偏离该角度。参见 引导调整 下图 |
CP_GO_NO_DATA | 设置为 1,允许载具在没有传感器覆盖的方向移动(默认为 0/)。假的 ). |
# 算法说明
所有传感器的数据都被融合到载具周围 36 个扇形区域的内部表示中,每个扇形区域都包含传感器数据和最后一次观测的时间信息,或者表示该扇形区域没有数据。当指令载具向特定方向移动时,会检查该方向半球上的所有扇区,以确定移动是否会使载具接近任何障碍物。如果会,则限制载具速度。
这种速度限制既考虑到了由...... MPC_XY_P以及 速度控制器 经由 MPC_JERK_MAX 和 MPC_ACC_HOR.限制速度的目的是使载具能够及时停止,以保持在"...... "中指定的距离。 CP_DIST.每个扇区的传感器范围也会考虑在内,并通过相同的机制限制速度。
备注
如果某个方向没有传感器数据,该方向的速度将被限制为 0(防止载具撞上看不见的物体)。如果您希望在没有传感器覆盖的方向上自由移动,可以通过设置 CP_GO_NO_DATA 至 1。
载具在跟踪速度设定点和接收外部传感器数据时的延迟,可通过 CP_DELAY 参数。应为 调整参数 特定载具。
如果与指令扇区相邻的扇区 "更好 "很多,则所要求的输入方向可以修改,最大修改角度为 CP_GUIDE_ANG.这有助于对用户输入进行微调,以 "引导 "载具绕过障碍物,而不是卡在障碍物上。
# 范围数据丢失
如果自动驾驶仪在超过 0.5 秒的时间内没有从任何传感器接收到测距数据,则会输出警告信号 未收到测距数据,不允许移动.这将迫使 xy 的速度设置点为零。5 秒钟未接收到任何数据后,载具将切换到 保持模式.如果您想让载具再次移动,则需要禁用碰撞预防功能,方法是设置参数 CP_DIST 为负值,或切换到除 位置模式 (例如 高度模式 或 稳定模式).
如果您连接了多个传感器,但其中一个失去了连接,您仍然可以在报告传感器的视场 (FOV) 内飞行。故障传感器的数据将过期,该传感器覆盖的区域将被视为未覆盖区域,这意味着您将无法在该区域移动。
警告
启用时要小心 cp_goo_noo_data=1,允许飞行器在传感器覆盖的区域外飞行。如果您与多个传感器中的一个失去连接,故障传感器所覆盖的区域也会被视为未覆盖区域,您可以不受任何限制地在该区域内移动。
# CP_DELAY 延迟调整参数
应考虑到两个主要的延迟来源: 传感器延迟载具 速度设定点跟踪延迟.这两个延迟源都通过 CP_DELAY 参数。
传感器延迟 对于直接连接到飞行控制器的距离传感器,可以假定其延迟时间为 0。
载具 速度设定点跟踪延迟 可以通过在 位置模式然后发出停止指令。实际速度与速度设定点之间的延迟可以通过日志进行测量。跟踪延迟一般在 0.1 至 0.5 秒之间,具体取决于载具大小和调校。
TIP
如果车速在接近障碍物时出现波动(即减速、加速、减速),则延迟时间设置过高。
# CP_GUIDE_ANG 导向调整
根据载具、环境类型和驾驶仪技能的不同,可能需要不同的引导量。设置 CP_GUIDE_ANG 参数设置为 0 时,将禁用制导功能,使飞行器只能按指令方向飞行。增加该参数可让飞行器选择最佳方向避开障碍物,从而更容易飞过狭小的空隙,并在绕过物体时精确保持最小距离。
如果该参数过小,载具在靠近障碍物时可能会有 "卡住 "的感觉,因为只允许以最小距离远离障碍物。如果该参数过大,载具可能会感觉 "滑 "离障碍物的方向与操作员的指令不符。根据测试,30 度是一个很好的平衡点,不过不同的载具可能会有不同的要求。
备注
在没有传感器数据的情况下,制导功能永远不会引导载具前进。如果只有一个距离传感器指向前方,载具会感到 "卡住",这很可能是因为缺乏信息,制导功能无法安全地调整方向。
# PX4 距离传感器
在撰写本文时,PX4 允许您使用 兰宝 PSK-CM8JL65-CC5 红外距离传感器用于防止碰撞,开箱即用,只需最少的额外配置:
- 第一 安装和配置传感器并启用防碰撞功能(如上所述,使用 CP_DIST).
- 使用 sens_cm8jl65_r_0.
也可启用其他传感器,但这需要修改驱动程序代码,以设置传感器的方向和视野。
- 在特定端口上连接并配置距离传感器(请参阅 传感器专用文档) 并使用 CP_DIST.
- 修改驱动程序以设置方向。应通过模仿
sens_cm8jl65_r_0
参数(不过您也可以在传感器的 module.yaml 文件改成如下内容sf0x start -d ${SERIAL_DEV} -R 25
- 其中 25 相当于朝下旋转
). - 修改驱动程序以设置 视野 在距离传感器 UORB 主题 (
距离传感器_s.h_fov
).
TIP
您可以从 专题公关 (打开新窗口).请将您的修改意见反馈给我们!
# 同伴设置
如果使用配套计算机或外部传感器,则需要提供一个 障碍物距离 (打开新窗口) 信息,其中应反映出检测到障碍的时间和地点。
信息的最小传输速率 必须 发送的速度取决于车速--速度越快,载具对检测到的障碍物做出反应的时间就越长。
备注
对该系统的初步测试使用了一辆速度为 4 米/秒的载具,该载具在行驶过程中会出现以下问题 障碍物距离
以 10 Hz(视觉系统支持的最大速率)的频率发送信息。该系统可以在更高的速度和更低的距离更新频率下正常工作。
经过测试的配套软件是 本地计划 从 PX4/回避 (打开新窗口) repo.有关硬件和软件设置的更多信息,请参阅 PX4/avoidance > 在硬件上运行 (打开新窗口).
硬件和软件的设置应符合《指南》中的描述。 PX4/回避 (打开新窗口) repo.为了发射 障碍物距离
您必须使用 rqt_reconfigure 工具,并设置参数 发送障碍物
为 true。
# 仿真场景Gazebo设置
预防碰撞 也可以使用 Gazebo 进行测试。查看 PX4/回避 (打开新窗口) 获取设置说明。