PX4-Autopilot代码解析(20)-手动控制界面

手动控制接口处理无线电遥控器 (RC) 和 MAVLink 操纵杆的输入,生成标准化的手动控制设定点和飞行控制系统的操作请求。该系统负责输入验证、信号源选择、校准、开关处理以及操纵杆解锁手势等安全功能。

有关使用这些手动控制输出的飞行控制系统的信息,请参阅“飞行控制系统”部分。有关提供替代手动控制输入的 MAVLink 通信的详细信息,请参阅“MAVLink 实现”部分。

系统架构

手动控制界面由两个主要模块组成,这两个模块协同工作以处理飞行员的输入:

PX4-Autopilot代码解析(20)-手动控制界面

RC输入处理流程


RCUpdate
模块通过多级流水线处理原始RC输入:

RC通道校准

原始RC通道值使用每个通道的参数进行校准:

PX4-Autopilot代码解析(20)-手动控制界面

校准过程应用了定义在 中的死区变换、反转变换和缩放变换。

最小值/最大值
RC{n}_MIN

RC{n}_MAX
参数修剪
RC{n}_TRIM
中心位置参数死区
RC{n}_DZ
修剪区域周围零区域的参数反转
RC{n}_REV
用于反转通道方向的参数

功能映射

通过以下方法将校准通道映射到飞行控制功能
update_rc_functions()

功能 范围 目的

FUNCTION_THROTTLE

RC_MAP_THROTTLE
主油门控制

FUNCTION_ROLL

RC_MAP_ROLL
横滚轴控制

FUNCTION_PITCH

RC_MAP_PITCH
俯仰轴控制

FUNCTION_YAW

RC_MAP_YAW
偏航轴控制

FUNCTION_RETURN

RC_MAP_RETURN_SW
返回发射开关

FUNCTION_KILLSWITCH

RC_MAP_KILL_SW
紧急熄火开关

FUNCTION_ARMSWITCH

RC_MAP_ARM_SW
布防/撤防开关

手动控制输入选择

该类
ManualControlSelector
管理多个输入源,并根据配置选择活动输入源:

PX4-Autopilot代码解析(20)-手动控制界面

输入选择模式


COM_RC_IN_MODE
参数控制输入选择行为:

模式 价值 行为
仅限遥控 0 仅接受遥控发射器输入
仅限操纵杆 1 仅接受 MAVLink 操纵杆输入
遥控器和操纵杆备用方案 2 使用任何可用的输入并回退
保持第一 3 锁定到第一个有效输入源
摇杆输入已禁用 4 拒绝所有摇杆输入
RC 优先 5 优先使用遥控器,其次使用 MAVLink。
操纵杆优先级 6 首选 MAVLink,其次是 RC。

切换处理

RC开关被处理成离散的位置状态,并触发特定的动作:

开关位置检测


getRCSwitchOnOffPosition()
和方法
getRCSwitch3WayPosition()
将模拟通道值转换为开关位置:

PX4-Autopilot代码解析(20)-手动控制界面

飞行模式切换

飞行模式选择支持传统开关和按钮输入:

开关模式:单通道映射,
RC_MAP_FLTMODE
6 个位置; 按钮模式:多通道配置,
RC_MAP_FLTM_BTN
位掩码

模式槽计算src/modules/rc_update/rc_update.cpp592-594将信道范围划分为相等的段。

棍棒武装手势


ManualControl
模块实现了安全杆手势,用于布防和撤防:

PX4-Autopilot代码解析(20)-手动控制界面

手势检测逻辑src/modules/manual_control/ManualControl.cpp368-401需要:

控制臂:油门 < -0.8,偏航 > 0.9,横滚/俯仰 < 0.1解除武装:油门 < -0.8,偏航角 < -0.9,横滚/俯仰角 < 0.1终止条件:油门 < -0.8,偏航 < -0.9,俯仰 < -0.9,滚转 > 0.9

滞后效应可防止意外触发,需要持续的手势输入。

消息流架构

该系统使用多个 uORB 主题来传递处理后的控制数据:

PX4-Autopilot代码解析(20)-手动控制界面

关键信息结构

manual_control_setpoint:最终输出,包含摇杆位置、有效性、数据源和运动检测标志。

action_request:用于启动、模式更改、转换和其他系统操作的命令

手动控制开关:已处理开关位置并跟踪更改

配置参数

系统行为由众多参数控制,这些参数按功能分组:

RC校准参数


RC{n}_MIN/MAX/TRIM/REV/DZ
:每个通道的校准值
RC_CHAN_CNT
已配置通道总数

控制映射参数


RC_MAP_{ROLL,PITCH,YAW,THROTTLE}
:主飞行控制通道
RC_MAP_{ARM,KILL,RETURN}_SW
安全开关分配
RC_MAP_FLTMODE
飞行模式切换通道

手动控制行为


COM_RC_IN_MODE
输入源选择模式
COM_RC_LOSS_T
输入超时时间
MAN_ARM_GESTURE
启用/禁用摇杆启动手势
COM_RC_ARM_HYST
手势滞后时间

开关阈值


RC_{RETURN,KILL,ARM}SWITCH_TH
:开关激活阈值
RC_PAYLOAD_{TH,MIDTH}
有效载荷开关位置阈值

© 版权声明

相关文章

暂无评论

none
暂无评论...