# 离机模式

飞行器服从由飞行算法池外部来源(如配套计算机)提供的位置、速度、加速度、姿态、姿态速率或推力/扭矩设定点。这些设定点可通过 MAVLink(或 MAVLink API,例如 MAVSDK (打开新窗口))或 ROS 2.

PX4 要求外部控制器通过流式传输任何受支持的 MAVLink 设定点信息或 ROS 2,提供连续的 2Hz "寿命证明"信号。 机外控制模式 信息。PX4 只有在收到信号超过一秒后才会启用车外控制,如果信号停止,则会重新获得控制权。

备注

  • 这种模式需要位置或姿态/姿态信息,如 GPS、光流、视觉惯性里程测量、mocap 等。
  • 除更改模式外,遥控控制被禁用(通过设置参数 COM_RC_IN_MODE 至 4:棒输入禁用)。
  • 载具必须已经接收到 MAVLink 设定点信息流或 ROS 2。 机外控制模式 在离机模式下上膛或飞行时切换到离机模式之前,请先查看信息。
  • 如果 MAVLink 设定点信息或 机外控制模式 的速率接收。
  • 并非所有设定点信息和载具都支持 MAVLink 允许的所有坐标框架和字段值。请阅读以下章节 好好 以确保只使用支持的值。

# 说明

机外模式用于通过设置位置、速度、加速度、姿态、姿态速率或推力/扭矩设定点来控制飞行器的运动和姿态。

PX4 必须接收 MAVLink 设定点信息流或 ROS 2。 机外控制模式 频率为 2 Hz,以证明外部控制器是健康的。数据流必须发送至少一秒钟,PX4 才会在离板模式下上膛,或在飞行时切换到离板模式。在外部控制下,如果速率低于 2Hz,PX4 将在超时 (COM_OF_LOSS_T),并尝试着陆或执行其他故障安全操作。该操作取决于是否可以使用遥控,并在参数 COM_OBL_RC_ACT.

在使用 MAVLink 时,设定点信息既可传递信号以表明外部信号源还活着,也可传递设定点值本身。在这种情况下,为了保持位置,载具必须接收当前位置的设定值流。

在使用 ROS 2 时,外部源还活着的证明由以下数据流提供 机外控制模式 信息,而实际设定点则通过发布到设定点 uORB 主题之一来提供,例如 轨迹设置点.在这种情况下,为了保持位置,载具必须接收到一股 机外控制模式 但只需要 轨迹设置点 一次

请注意,离机模式仅支持非常有限的一组 MAVLink 命令和信息。起飞、着陆、返回发射等操作最好使用相应的模式。上传、下载任务等操作可在任何模式下执行。

# ROS 2 消息

指定帧允许使用以下 ROS 2 消息及其特定字段和字段值。除了提供心跳功能外、 机外控制模式 还有两个主要目的:

  1. 控制 PX4 控制结构 必须注入离线设定点,并禁用旁路控制器。
  2. 确定需要哪些有效估计值(位置或速度),以及应使用哪些设定点信息。

机外控制模式 信息的定义如图所示。

# uint64 timestamp # 系统启动后的时间(微秒) bool 位置 bool 速度 bool 加速度 bool 姿态 bool 身体速率 bool 执行器

字段按优先级排序,即 位置 优先于 速度 及以后的领域、 速度 优先于 加速度等等。第一个非零值字段(从上到下)定义了使用离板模式所需的有效估计值,以及可以使用的设定点信息。例如,如果 加速度 字段是第一个非零值,则 PX4 需要一个有效的 速度估计设置点必须使用 轨迹设置点 留言

所需的控制量 位置场 速度场 加速度场 态度领域 body_rate 字段 执行器领域 所需估计数 必填信息
定位(POSITION)(NED) - - - - - 位置 轨迹设置点
速度(荷兰) - - - - 速度 轨迹设置点
加速度(荷兰) - - - 速度 轨迹设置点
态度(FRD) - - 载具高度设定点
身体速率(FRD) - 载具速率设定点
推力和扭矩(FRD) 载具推力设定点载具扭矩设定点

其中,✓ 表示位已设置,✗ 表示位未设置,而 - 表示该位的值无关紧要。

备注

在使用 ROS 2 的离板模式之前,请花几分钟时间了解不同的 框架公约 PX4 和 ROS 2 使用的。

# 直升机

  • px4_msgs::msg::TrajectorySetpoint (打开新窗口)

    • 支持以下输入组合
      • 位置设定点 (位置 异于 ).非 速度值和加速度值作为内环控制器的前馈项。
      • 速度设定点 (速度 异于 位置 设为 ).非 加速度值作为内环控制器的前馈项。
      • 加速度设定点 (加速度 异于 位置速度 设为 )
    • 所有数值均以 NED(北、东、下)坐标系解释,位置、速度和加速度的单位分别为[m]、[m/s]和[m/s^2]。
  • px4_msgs::msg::VehicleAttitudeSetpoint (打开新窗口)

    • 支持以下输入组合
      • 四分位数 q_d + 推力设定值 推力.非 的值 偏航运动速率 作为前馈项,用地球帧和 [rad/s] 表示。
    • 四元数表示无人机机身 FRD(前、右、下)帧与 NED 帧之间的旋转。信任度在无人机机身 FRD 框架内,以归一化 [-1, 1] 值表示。
  • px4_msgs::msg::VehicleRatesSetpoint (打开新窗口)

    • 支持以下输入组合
      • 滚动, 沥青, 打呵欠推力.
    • 所有数值均以无人机机身 FRD 帧为单位。速率单位为[rad/s],而推力_body 的归一化单位为[-1, 1]。
  • px4_msgs::msg::VehicleThrustSetpoint (打开新窗口) + px4_msgs::msg::VehicleTorqueSetpoint (打开新窗口)

    • 支持以下输入组合
      • xyz 用于推力和 xyz 扭矩。
    • 所有数值都在无人机机身 FRD 框架内,并在 [-1, 1] 范围内进行了归一化处理。
    • 为了节省资源,该模式默认为禁用。如果要使用它,需要手动添加 载具推力设定点载具扭矩设定点订阅主题然后手动重新编译固件。

指定帧允许使用以下 MAVLink 报文及其特定字段和字段值。

# 直升机/VTOL

  • 设置目标位置 (打开新窗口)

    • 支持以下输入组合
      • 位置设定点(仅 x, y, z)
      • 速度设定点(仅 vx, vy, vz)
      • 加速度设定点(仅 afx, 安提, afz)
      • 位置设定点 速度设定点(速度设定点用作前馈;它与位置控制器的输出相加,结果用作速度控制器的输入)。
      • 位置设定点 速度设定点 加速度(速度和加速度设定点用作前馈;速度设定点与位置控制器的输出相加,其结果用作速度控制器的输入;加速度设定点与速度控制器的输出相加,其结果用于计算推力矢量)。
  • set_position_target_global_int (打开新窗口)

    • 支持以下输入组合
      • 位置设定点(仅 lat_int, lon_int, 选一)

      • 速度设定点(仅 vx, vy, vz)

      • 推力 设定点(仅 afx, 安提, afz)

        备注

        加速度设定点值被映射为标准化推力设定点(即不支持加速度设定点)。

      • 位置设定点 速度设定点(速度设定点用作前馈;它与位置控制器的输出相加,结果用作速度控制器的输入)。

  • 设置目标姿态 (打开新窗口)

    • 支持以下输入组合
      • 态度/方向 (SET_ATTITUDE_TARGET.q)与推力设定点 (SET_ATTITUDE_TARGET.thrust).
      • 身体速率 (设置目标姿态 .body_roll_rate ,.body_pitch_rate, .body_yaw_rate)与推力设定点 (SET_ATTITUDE_TARGET.thrust).

# 固定翼飞机

  • 设置目标位置 (打开新窗口)

    • 支持以下输入组合(通过 类型掩码):
      • 位置设定点 (x, y, z 仅;速度和加速度设置点被忽略)。
        • 指定 类型 中设定点的 类型掩码 (如果未设置这些位,飞行器将以花朵状模式飞行):

          备注

          部分 设定点类型 下面的值不属于 MAVLink 标准的一部分。 类型掩码 field.

          这些值是

          • 292:滑行设定点。该设置将 TECS 配置为优先考虑空速而非高度,以便在没有推力时使飞行器滑行(即通过控制俯仰来调节空速)。这相当于设置 类型掩码 作为 位置_目标类型掩码_z_忽略, position_target_typemask_vz_ignore, 位置目标类型掩码忽略.
          • 4096:起飞设定点
          • 8192:陆地设定点。
          • 12288: 负载设定点(以设定点为中心飞一圈)。
          • 16384:空转设定点(零节流、零滚转/俯仰)。
    • PX4 支持坐标框架 (坐标框架 字段): mav_frame_local_ned (打开新窗口)mav_frame_body_ned (打开新窗口).
  • set_position_target_global_int (打开新窗口)

    • 支持以下输入组合(通过 类型掩码):
      • 位置设定点(仅 lat_int, lon_int, 选一)
        • 指定 类型 中设定点的 类型掩码 (如果未设置这些位,飞行器将以花朵状模式飞行):

          备注

          设定点类型 下面的值不属于 MAVLink 标准的一部分。 类型掩码 field.

          这些值是

          • 4096:起飞设定点
          • 8192:陆地设定点。
          • 12288: 负载设定点(以设定点为中心飞一圈)。
          • 16384:空转设定点(零节流、零滚转/俯仰)。
    • PX4 支持以下功能 坐标框架 值(仅): mav_frame_global (打开新窗口).
  • 设置目标姿态 (打开新窗口)

    • 支持以下输入组合
      • 态度/方向 (SET_ATTITUDE_TARGET.q)与推力设定点 (SET_ATTITUDE_TARGET.thrust).
      • 身体速率 (设置目标姿态 .body_roll_rate ,.body_pitch_rate, .body_yaw_rate)与推力设定点 (SET_ATTITUDE_TARGET.thrust).

# UGV无人车

# 机外参数

机外模式 受以下参数影响:

参数 说明
COM_OF_LOSS_T 当板载连接丢失时,在触发板载丢失故障安全("板载连接丢失")前等待的超时(秒) (COM_OBL_RC_ACT)
COM_OBL_RC_ACT 如果失去机载控制,将切换到的飞行模式(数值为-)。 0: 定位(POSITION), 1: 海拔高度, 2: 手册, 3:* 返回、 4: 土地).
com_rc_override 控制在多旋翼飞行器(或 多旋翼 模式下的 VTOL)上移动摇杆是否会导致模式切换为 位置模式.默认情况下离线模式不启用此功能。
com_rc_stick_ov 杆的移动量会导致过渡到 位置模式 (如果 com_rc_override 已启用)。
COM_RCL_EXCEPT 指定忽略 RC 丢失和不触发故障安全动作的模式。设置位 2 以忽略离板模式下的 RC 丢失。

# 开发人员资源

通常情况下,开发人员不会直接在 MAVLink 层工作,而是使用机器人应用程序接口,如 MAVSDK (打开新窗口)ROS (打开新窗口) (提供开发人员友好的应用程序接口,并负责管理和维护连接、发送信息和监控响应--这些都是与 机外模式 和 MAVLink)。

以下资源可能对开发人员有用: