# 路径规划界面

PX4 使用多个 MAVLink 接口,用于集成配套计算机的路径规划服务(包括任务中的避障)、 安全着陆以及未来的服务):

PX4 在自动模式(着陆、起飞、保持、任务、返回)下启用了路径规划,如果 com_obs_avoid=1.在这些模式下,规划软件应向 PX4 提供设定点;如果软件无法支持特定的飞行模式,则必须从飞行器上反射设定点。

TIP

从 PX4 UORB 主题到 MAVLink,再到 ROS,然后再返回的信息流都记录在其中: 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 (打开新窗口).