# 离机模式
飞行器服从由飞行算法池外部来源(如配套计算机)提供的位置、速度、加速度、姿态、姿态速率或推力/扭矩设定点。这些设定点可通过 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 消息及其特定字段和字段值。除了提供心跳功能外、 机外控制模式
还有两个主要目的:
- 控制 PX4 控制结构 必须注入离线设定点,并禁用旁路控制器。
- 确定需要哪些有效估计值(位置或速度),以及应使用哪些设定点信息。
机外控制模式
信息的定义如图所示。
# 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 信息
指定帧允许使用以下 MAVLink 报文及其特定字段和字段值。
# 直升机/VTOL
-
- 支持以下输入组合
- 位置设定点(仅
x
,y
,z
) - 速度设定点(仅
vx
,vy
,vz
) - 加速度设定点(仅
afx
,安提
,afz
) - 位置设定点 和 速度设定点(速度设定点用作前馈;它与位置控制器的输出相加,结果用作速度控制器的输入)。
- 位置设定点 和 速度设定点 和 加速度(速度和加速度设定点用作前馈;速度设定点与位置控制器的输出相加,其结果用作速度控制器的输入;加速度设定点与速度控制器的输出相加,其结果用于计算推力矢量)。
- 位置设定点(仅
- PX4 支持以下功能
坐标框架
值(仅): mav_frame_local_ned (打开新窗口) 和 mav_frame_body_ned (打开新窗口).
- PX4 支持以下功能
- 支持以下输入组合
set_position_target_global_int (打开新窗口)
- 支持以下输入组合
位置设定点(仅
lat_int
,lon_int
,选一
)速度设定点(仅
vx
,vy
,vz
)推力 设定点(仅
afx
,安提
,afz
)备注
加速度设定点值被映射为标准化推力设定点(即不支持加速度设定点)。
位置设定点 和 速度设定点(速度设定点用作前馈;它与位置控制器的输出相加,结果用作速度控制器的输入)。
- 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
).
- 态度/方向 (
- 支持以下输入组合
# 固定翼飞机
-
- 支持以下输入组合(通过
类型掩码
):- 位置设定点 (
x
,y
,z
仅;速度和加速度设置点被忽略)。指定 类型 中设定点的
类型掩码
(如果未设置这些位,飞行器将以花朵状模式飞行):备注
部分 设定点类型 下面的值不属于 MAVLink 标准的一部分。
类型掩码
field.这些值是
- 292:滑行设定点。该设置将 TECS 配置为优先考虑空速而非高度,以便在没有推力时使飞行器滑行(即通过控制俯仰来调节空速)。这相当于设置
类型掩码
作为位置_目标类型掩码_z_忽略
,position_target_typemask_vz_ignore
,位置目标类型掩码忽略
. - 4096:起飞设定点
- 8192:陆地设定点。
- 12288: 负载设定点(以设定点为中心飞一圈)。
- 16384:空转设定点(零节流、零滚转/俯仰)。
- 292:滑行设定点。该设置将 TECS 配置为优先考虑空速而非高度,以便在没有推力时使飞行器滑行(即通过控制俯仰来调节空速)。这相当于设置
- 位置设定点 (
- 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无人车
-
- 支持以下输入组合(以
类型掩码
):- 位置设定点(仅
x
,y
,z
)指定 类型 中设定点的
类型掩码
:备注
设定点类型 下面的值不属于 MAVLink 标准的一部分。
类型掩码
领域:这些值是
- 12288: 装载设定点(载具在接近设定点时停止)。
- 速度设定点(仅
vx
,vy
,vz
)
- 位置设定点(仅
- PX4 支持坐标框架 (
坐标框架
字段): mav_frame_local_ned (打开新窗口) 和 mav_frame_body_ned (打开新窗口).
- 支持以下输入组合(以
set_position_target_global_int (打开新窗口)
- 支持以下输入组合(以
类型掩码
):- 位置设定点(仅
lat_int
,lon_int
,选一
)
- 位置设定点(仅
- 指定 类型 中设定点的
类型掩码
(不属于 MAVLink 标准)。这些值是- 未设置以下位,则行为正常。
- 12288: 装载设定点(载具在接近设定点时停止)。
- PX4 支持坐标框架 (
坐标框架
字段): mav_frame_global (打开新窗口).
- 支持以下输入组合(以
-
- 支持以下输入组合
- 态度/方向 (
SET_ATTITUDE_TARGET.q
)与推力设定点 (SET_ATTITUDE_TARGET.thrust
).备注
实际使用/提取的只有偏航设置。
- 态度/方向 (
- 支持以下输入组合
# 机外参数
机外模式 受以下参数影响:
参数 | 说明 |
---|---|
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)。
以下资源可能对开发人员有用: