路径规划界面
PX4 使用多个 MAVLink 接口,用于集成配套计算机的路径规划服务(包括任务中的避障)、 安全着陆以及未来的服务):
- 有两个 MAVLink 路径规划协议 接口:
- 心跳/连接协议 用于生命证明检测。
- 定位 和 纬度 分别发送载具的本地位置和高度。
PX4 在自动模式(着陆、起飞、保持、任务、返回)下启用了路径规划,如果 com_obs_avoid=1.在这些模式下,规划软件应向 PX4 提供设定点;如果软件无法支持特定的飞行模式,则必须从飞行器上反射设定点。
TIP
从 PX4 UORB 主题到 MAVLink,再到 ROS,最后再回到 PX4 UORB 主题的信息流都记录在以下文件中 PX4/PX4-Avoidance > 信息流.
使用该接口的所有服务都发送和接收相同类型/格式的信息。因此,开发人员可以使用该接口创建自己的新同伴路径规划服务,或调整现有的规划器软件。
信息
PX4 Vision 自主开发套件 推荐用于开发路径规划软件。它具有 避免 PX4 该软件已预装,可用作您自己算法的基础。
PX4 配置
路径规划在 PX4 中通过以下方式激活 设置 的 COM_OBS_AVOID 至 1。
配套电脑设置
在《手册》中提供了同伴端硬件设置和硬件/软件配置。 PX4/PX4-Avoidance Github repo。
实际所需的设置/配置取决于所使用的计划器。
警告
一次只能有一个规划器在配套计算机上运行(在编写本报告时)。这意味着使用不同规划器的车外功能不能同时在同一辆车上启用(例如,一辆车可以支持避障和防碰撞,但不能同时支持安全着陆,反之亦然)。
轨迹界面
PX4 发送有关 理想路径 连接到配套计算机(当 com_obs_avoid=1
在 汽车 模式),并接收回一个设置点流,用于 计划路线 来自路径规划软件。
所需的路径信息由 PX4 使用 轨迹代表航点 信息,如下文 PX4 航点界面.
路径规划软件会发回设置点,以便 计划路线 使用 轨迹代表航点
(见 同伴航点界面)或 轨迹表示贝塞尔曲线 (见 同伴贝塞尔轨迹界面).两者的区别在于,航点只是指定下一个设定点目的地,而贝塞尔轨迹描述的是载具的精确运动(即在时间上移动的设定点)。
警告
路线规划软件在执行任务时不应混合使用这些接口(PX4 将使用最后收到的任一类型的报文)。
PX4 航点界面
PX4 在 轨迹代表航点 信息频率为 5 赫兹。
PX4 设置的字段如图所示:
时间
:UNIX 时间。有效点数
:3- 点 0 - 当前航点 适应型 由 FlightTaskAutoMapper(见 下注):
pos_x[0]
,pos_y[0]
,pos_z[0]
:经调整的 x-y-z NED 本地位置的类型 当前 任务航点。vel_x[0]
,vel_y[0]
,vel_z[0]
:类型调整后的 x-y-z NED 本地速度 当前 任务航点。acc_x[0]
,acc_y[0]
,acc_z[0]
:无pos_yaw[0]
:当前偏航角vel_yaw[0]
:无指令[0]
:""""""""""""等字样。 MAVLink 命令 为当前航点。
- 点 1 - 当前航点(未修改/未调整类型)):
pos_x[1]
,pos_y[1]
,pos_z[1]
: x-y-z NED 的当地位置 当前 任务航点vel_x[1]
,vel_y[1]
,vel_z[1]
:无acc_x[1]
,acc_y[1]
,acc_z[1]
:无pos_yaw[1]
:偏航设定点vel_yaw[1]
:偏航速度设定值指令[1]
:""""""""""""等字样。 MAVLink 命令 为当前航点。
- 点 2 - 当地坐标中的下一个航点(未修改/未调整类型):
pos_x[2]
,pos_y[2]
,pos_z[2]
: x-y-z NED 的当地位置 下一个 任务航点vel_x[2]
,vel_y[2]
,vel_z[2]
:无acc_x[2]
,acc_y[2]
,acc_z[2]
:无pos_yaw[2]
:偏航设定点vel_yaw[2]
:偏航速度设定值指令[2]
:""""""""""""等字样。 MAVLink 命令 下一个航点。
- 所有其他指数/字段均设置为 NaN。
备注
- 0 点是根据目标类型修改的当前航点/目标。例如,着陆时需要指定目标的 x、y 坐标和下降速度。要做到这一点
飞行任务自动映射器
修改 0 号点的陆地航点,将位置的 Z 分量设为 NAN,将 Z 速度设为所需值。 - 安全着陆规划器不使用第 1 和第 2 点。
- 当地和全球规划者都使用第 1 点。
处理同伴故障
PX4 可以安全地处理未从机载系统接收到信息的情况:
- 如果没有规划程序运行,并且
COM_OBS_AVOID
在启动时/从启动时启用:- 飞行前检查将失败(无论载具模式如何),并且直到
COM_OBS_AVOID
设置为 0。
- 飞行前检查将失败(无论载具模式如何),并且直到
- 如果没有规划程序运行,并且
COM_OBS_AVOID
启动后启用:- 载具将在手动模式下正常运行。
- 如果您切换到自主模式(如降落模式),它会立即退回到 保持模式.
- 启用外部路径规划时
同伴航点界面
路径规划软件(在配套电脑上运行) 可以 将规划的路径作为数据流发送给 PX4 轨迹代表航点 设置点为 0 的报文。
来自配套计算机的信息字段设置如图所示:
时间
:UNIX 时间。有效点数
:1- 当前载具信息:
pos_x[0]
,pos_y[0]
,pos_z[0]
: x-y-z NED 载具本地位置设定点vel_x[0]
,vel_y[0]
,vel_z[0]
: x-y-z NED 速度设定点acc_x[0]
,acc_y[0]
,acc_z[0]
:无pos_yaw[0]
:偏航角设定值vel_yaw[0]
:偏航速度设定值指令[0]
:无。
- 所有其他指数/字段均设置为 NaN。
实现该接口的规划器必须
- 接收 PX4 发送的信息时,以超过 2Hz 的频率发送设定点。PX4 将进入 保持模式 如果超过 0.5 秒仍未收到信息。
- 当它不支持当前载具状态的规划时,会镜像回它收到的设定点(例如,本地规划器会镜像回安全着陆时发送的信息,因为它不支持降落模式)。
同伴贝塞尔轨迹界面
路径规划软件(在配套电脑上运行) 可以 将规划的路径作为数据流发送给 PX4 轨迹表示贝塞尔曲线 留言
该信息以曲线(由控制点定义)的形式定义了载具应遵循的路径,起点是信息 时戳
时间后到达终点 三角洲
.PX4 利用信息发送时间、当前时间和曲线总时间(delta)计算出新的设定点(沿曲线的预期当前位置/速度/加速度)。
信息
例如,假设信息是在 0.1 秒前发送的,并且 三角洲
(曲线持续时间)为 0.3 秒。PX4 可在曲线的 0.1 秒位置计算其设定点。
更详细的情况是 轨迹表示贝塞尔曲线
解析如下
- 贝塞尔控制点的数量决定了贝塞尔曲线的阶数。例如,3 个点构成一条具有恒定加速度的二次贝塞尔曲线。
- 贝塞尔曲线在 x、y、z 和偏航方向上的度数必须相同,且所有贝塞尔控制点都是有限的
-
三角洲
数组中应包含与最后一个贝塞尔控制点相对应的值,以表示航点从开始到结束执行曲线到该点所需的时间。数组中的其他值三角洲
将被忽略。 - MAVLink 信息的时间戳应为曲线开始的时间,飞行控制器将通过时间同步机制补偿通信延迟和时钟不匹配。
- 所有控制点都应以本地坐标 (mav_frame_local_ned).
- 贝塞尔曲线会在贝塞尔曲线的执行时间结束后失效。确保以足够高的速率发送新信息,并有足够长的执行时间。否则,载具将切换到保持模式。
支持的硬件
经测试的配套电脑和照相机列于 PX4/PX4-Avoidance.