手动控制接口处理无线电遥控器 (RC) 和 MAVLink 操纵杆的输入,生成标准化的手动控制设定点和飞行控制系统的操作请求。该系统负责输入验证、信号源选择、校准、开关处理以及操纵杆解锁手势等安全功能。
有关使用这些手动控制输出的飞行控制系统的信息,请参阅“飞行控制系统”部分。有关提供替代手动控制输入的 MAVLink 通信的详细信息,请参阅“MAVLink 实现”部分。
系统架构
手动控制界面由两个主要模块组成,这两个模块协同工作以处理飞行员的输入:

RC输入处理流程
该模块通过多级流水线处理原始RC输入:
RCUpdate
RC通道校准
原始RC通道值使用每个通道的参数进行校准:

校准过程应用了定义在 中的死区变换、反转变换和缩放变换。
最小值/最大值:和
RC{n}_MIN参数修剪:
RC{n}_MAX中心位置参数死区:
RC{n}_TRIM修剪区域周围零区域的参数反转:
RC{n}_DZ用于反转通道方向的参数
RC{n}_REV
功能映射
通过以下方法将校准通道映射到飞行控制功能:
update_rc_functions()
| 功能 | 范围 | 目的 |
|---|---|---|
|
|
主油门控制 |
|
|
横滚轴控制 |
|
|
俯仰轴控制 |
|
|
偏航轴控制 |
|
|
返回发射开关 |
|
|
紧急熄火开关 |
|
|
布防/撤防开关 |
手动控制输入选择
该类管理多个输入源,并根据配置选择活动输入源:
ManualControlSelector
输入选择模式
该参数控制输入选择行为:
COM_RC_IN_MODE
| 模式 | 价值 | 行为 |
|---|---|---|
| 仅限遥控 | 0 | 仅接受遥控发射器输入 |
| 仅限操纵杆 | 1 | 仅接受 MAVLink 操纵杆输入 |
| 遥控器和操纵杆备用方案 | 2 | 使用任何可用的输入并回退 |
| 保持第一 | 3 | 锁定到第一个有效输入源 |
| 摇杆输入已禁用 | 4 | 拒绝所有摇杆输入 |
| RC 优先 | 5 | 优先使用遥控器,其次使用 MAVLink。 |
| 操纵杆优先级 | 6 | 首选 MAVLink,其次是 RC。 |
切换处理
RC开关被处理成离散的位置状态,并触发特定的动作:
开关位置检测
和方法
getRCSwitchOnOffPosition()将模拟通道值转换为开关位置:
getRCSwitch3WayPosition()

飞行模式切换
飞行模式选择支持传统开关和按钮输入:
开关模式:单通道映射,6 个位置; 按钮模式:多通道配置,
RC_MAP_FLTMODE位掩码
RC_MAP_FLTM_BTN
模式槽计算src/modules/rc_update/rc_update.cpp592-594将信道范围划分为相等的段。
棍棒武装手势
该模块实现了安全杆手势,用于布防和撤防:
ManualControl

手势检测逻辑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 主题来传递处理后的控制数据:

关键信息结构
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}