# 路径规划界面

PX4 使用多个 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 会发出一条状态信息(显示在 QGroundControlquot;避让系统丢失"或"避让系统超时"(取决于飞行器状态)。这与当前的飞行模式无关。
    • 如果超过 0.5 秒未收到轨迹信息,且飞行器处于自主模式(返回、任务、起飞、着陆),则飞行器将切换为 保持模式.

    备注

    规划人员必须始终在这一时限内提供要点。

    • 当载具处于不提供路径规划的模式/状态时,规划器会将接收到的设定点反射回去。(也就是说,载具将按照其所需的路径行驶,但会有很小的延迟)。
    • 如果在路径规划过程中,最后提供的贝塞尔轨迹的执行时间已过(当使用 贝塞尔轨迹界面),这与 0.5 秒内未收到新信息的情况相同(即载具切换到 保持模式).

# 同伴航点界面

路径规划软件(在配套电脑上运行) 可以 将规划的路径作为数据流发送给 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 (打开新窗口).