目的和范围
RC输入系统管理无线电接收机信号,并将其转换为飞行员指令以控制飞行器。该系统处理来自RC接收机的PWM脉冲宽度信号,进行校准和滤波,管理辅助开关功能,并通过MAVLink提供手动控制功能。该系统最多支持16个RC通道,并提供丰富的配置选项。
系统架构

该系统由三个主要层组成:
- RC_Channel - 代表一个 RC 输入的独立通道,支持校准、转换和辅助功能
- RC_Channels - 单例管理器,协调所有通道、模式切换和系统级操作
- 车辆集成- 车辆特定的通道分配和处理(例如
copter.channel_roll,,copter.channel_pitch)
核心数据结构

输入处理流程
PWM到控制值转换
RC系统通过多级流水线将原始PWM脉冲(通常为1000-2000微秒)转换为缩放的控制值:

通道更新流程
该RC_Channel::update()方法读取输入并将其转换为控制值:

控制类型转换
支持两种控件类型:
| 控制类型 | 用法 | 输出范围 | 转换方法 |
|---|---|---|---|
ANGLE |
横滚、俯仰、偏航 | ±4500摄氏度 | pwm_to_angle() 375-378 |
RANGE |
风门 | 0 到high_in |
pwm_to_range() 405-408 |
角度类型转换(带死区和微调):
角度转换会在修剪点周围设置一个死区,并按比例缩放输入:
if (radio_in > trim + deadzone):
angle = (high_in * (radio_in - trim - deadzone)) / (radio_max - trim - deadzone)
else if (radio_in < trim - deadzone):
angle = (high_in * (radio_in - trim + deadzone)) / (trim - deadzone - radio_min)
else:
angle = 0
范围类型转换:
范围转换是单向的,从最小值到最大值:
radio_trim_low = radio_min + deadzone
if (radio_in > radio_trim_low):
range = (high_in * (radio_in - radio_trim_low)) / (radio_max - radio_trim_low)
else:
range = 0
归一化函数
几种不同的归一化函数对摇杆位置给出了不同的解释:
| 功能 | 范围 | 修剪处理 | 死区 | 用法 |
|---|---|---|---|---|
norm_input() |
-1.0 至 1.0 | 以装饰条为中心 | 不 | 基本归一化输入 |
norm_input_dz() |
-1.0 至 1.0 | 以装饰条为中心 | 是的 | 摇杆输入死区 |
norm_input_ignore_trim() |
-1.0 至 1.0 | 以中档产品为主 | 不 | 绝对位置 |

输入&spm=1001.2101.3001.5002&articleId=157692578&d=1&t=3&u=18bd68eaed484413a2d159882f6cbebb)
4865

被折叠的 条评论
为什么被折叠?



