3、遥控器校准与信号检测:检查RC信号是否进入仿真,校准摇杆通道,确保油门最低、解锁开关正确映射

电机解锁失败,十次里有七八次是遥控器信号没进仿真。这不是夸张,我刚开始搞SITL时,花了一整个下午查代码、看日志,最后发现——遥控器根本没开。嗯,这种低级错误,犯过一次就记住了。

这一节,我们聚焦一个核心问题:仿真环境到底有没有收到正确的遥控器信号?油门是不是最低?解锁开关映射对了没有?摇杆通道有没有校准?一个一个来排查。

核心原则:仿真里的遥控器信号,本质是物理遥控器 → 接收机 → 地面站 → MAVLink → SITL 的一条链路。任何一个环节断了,电机都不会解锁。

3.1 检查RC信号是否进入仿真

我个人习惯,第一步不是看代码,而是看数据。打开地面站(Mission Planner 或 QGroundControl),找到 RC 信号显示界面。

  • Mission Planner: 主界面 → 飞行数据 → 状态栏 → RC 通道值实时显示。
  • QGroundControl: 设置 → 遥控器校准 → 通道监视器。

如果你看到所有通道值都是 0 或 65535,说明信号根本没进来。这时候别急着调参数,先检查物理连接:

  1. 遥控器电池有电吗?(别笑,我见过有人忘开遥控器电源)
  2. 接收机与地面站之间是用 USB 还是数传?连接是否正常?
  3. 地面站是否选择了正确的 COM 口和波特率?

如果通道值在跳动,但数值范围不对(比如油门通道只有 800-1200,正常应该是 1000-2000),那就是校准问题了。

小技巧:在终端输入 param show RC_MIN 和 param show RC_MAX,可以快速查看当前飞控记录的通道范围。如果这些参数是默认值(1000/2000),但实际信号范围偏差很大,飞控会认为信号异常,拒绝解锁。

3.2 校准摇杆通道

校准这件事,说白了就是让飞控知道:你遥控器摇杆打到最左边时,对应数值是多少;打到最右边时,又是多少。

我建议用地面站自带的校准向导:

  1. 进入遥控器校准页面。
  2. 按照提示,依次将每个摇杆打到极限位置。
  3. 点击完成,飞控会自动更新 RC_MIN 和 RC_MAX 参数。

但有时候校准向导会抽风。我曾经在 QGC 上校准完,发现油门通道最小值变成了 1100,最大值只有 1900。飞控默认的 RC_MIN 是 1000,RC_MAX 是 2000,这一偏差直接导致飞控认为油门信号异常。

手动修正方法:

# 在 MAVLink 控制台或终端输入
param set RC3_MIN 1000
param set RC3_MAX 2000
param save

注意:RC3 是油门通道(Channel 3),其他通道同理。校准完成后,重新检查通道值,确保范围在 1000-2000 之间。

警告:不要跳过校准步骤直接手动改参数。每个遥控器的输出范围不同,强行设置可能导致飞控误判摇杆位置。校准是让飞控「学习」你的遥控器,而不是让遥控器去适配飞控的默认值。

3.3 确保油门最低

解锁的硬性条件之一:油门通道值必须低于 RC_MIN + 某个阈值(通常是 50-100)。说白了,飞控要确认你确实把油门拉到底了。

检查方法:

  • 在地面站 RC 监视器里,油门拉到底时,通道值是否接近 RC3_MIN?
  • 如果油门拉到底还有 1200,而 RC3_MIN 是 1000,飞控会认为油门没归零。

常见原因:

  • 遥控器油门微调旋钮被拧到了中间位置。
  • 遥控器油门行程设置不正确(部分遥控器有油门行程调节功能)。
  • 校准过程中,油门最低点没有被正确记录。

我记得有一次,一个学员的遥控器油门拉到底显示 1150,折腾了半天,最后发现是遥控器上的油门微调旋钮被碰到了。复位后,数值回到 1000,解锁成功。

3.4 解锁开关正确映射

解锁开关通常映射到 RC7 或 RC8(辅助通道)。飞控通过读取这个通道的值来判断是否允许解锁。

检查步骤:

  1. 确认解锁开关映射到了哪个通道。在 Mission Planner 的「初始设置」→「遥控器校准」里,拨动解锁开关,看哪个通道的数值在变化。
  2. 确认该通道的 RCx_MIN 和 RCx_MAX 正确。开关拨到「解锁」位置时,通道值应接近 RCx_MAX(或 RCx_MIN,取决于开关逻辑)。
  3. 检查 RC_MAP_ARM_SWITCH 参数,确保它指向正确的通道号。
参数名 默认值 说明
RC_MAP_ARM_SWITCH 0(禁用) 解锁开关对应的通道号,设为 7 或 8
ARMING_CHECK 1(启用) 解锁前是否执行全面检查,建议保持开启
RC7_MIN / RC7_MAX 1000 / 2000 辅助通道 7 的数值范围

经验之谈:我习惯把解锁开关映射到 RC8,因为 RC7 经常被其他功能占用(比如飞行模式切换)。另外,解锁开关建议用两段式开关(不是三段式),逻辑更清晰:拨上去解锁,拨下来锁定。

3.5 知识体系:RC信号链路全景图

下面这张图,把遥控器信号从物理设备到飞控的完整路径画了出来。你排查问题时,可以对照这张图,逐级检查。

RC信号链路全景图 物理遥控器 接收机 地面站 MAVLink SITL 飞控 2.4G RF USB/数传 UDP/TCP MAVLink 消息 ① 遥控器电源/开关 ② 接收机连接 ③ 地面站RC监视器 ④ 通道校准/范围检查 排查顺序: 从物理设备(遥控器/接收机)开始,逐级向软件端(地面站/MAVLink/SITL)检查。 哪一级没有信号,问题就出在哪一级。

3.6 常见问题与避坑指南

  • 问题:地面站显示RC通道值,但飞控收不到。
    原因:MAVLink 转发未开启。检查地面站设置,确保「RC Override」或「RC Channel Forwarding」已启用。
  • 问题:校准后通道范围仍然不对。
    原因:遥控器端有行程限制(EPA/ATV)设置。我遇到过有人把油门行程限制在 80%,校准后范围只有 1100-1900。解决方法:在遥控器上将油门行程设为 100%。
  • 问题:解锁开关拨到解锁位置,飞控不响应。
    原因:RC_MAP_ARM_SWITCH 参数未设置,或通道号错误。我曾经犯过把开关映射到 RC7,但参数写的是 RC8 的蠢事。

避坑指南:我曾经在排查时,发现所有通道值都正常,但就是不解锁。最后用 param show ARMING_CHECK 一看,发现这个参数被设成了 0(禁用检查)。飞控跳过了所有安全检查,包括RC信号检查,但同时也跳过了解锁逻辑中的某些前置条件。所以,ARMING_CHECK 建议保持默认值 1,不要为了省事关掉它。