轮式编码器设置
Rover 固件最多支持两路 AB 相轮式编码器,用来提高位置估计精度,没有 GPS 时作用尤其明显。编码器装在电机轴或轮轴上,一路对应一侧车轮。
接线与设置
编码器的 A、B 两相各占一个输出口,接线前先把这两个口从舵机输出改成普通 IO。

▲ A、B 两相各占一个输出口;黄线为 A 相、白线为 B 相,绿线 GND、蓝线 Vcc
- A、B 两相接到控制器空闲的输出口(官方示例用 AUX OUT 3~6)。
- 把这些口的
SERVOx_FUNCTION设为 -1,该口即作为 GPIO 输入使用。示例中对应SERVO11_FUNCTION~SERVO14_FUNCTION。 - 这些口若被中继占用,把
RELAY1_PIN、RELAY2_PIN设为 -1 释放出来。
输出口编号以控制器为准
不同控制器上 AUX 口对应的 SERVOx 编号不同,以机身丝印和地面站输出列表为准,不要照抄示例里的 11~14。
两个编码器的参数分开设置,WENC_ 对应第一路,WENC2_ 对应第二路。
| 参数 | 设为 | 说明 |
|---|---|---|
WENC_TYPE / WENC2_TYPE | 1 | 编码器类型,1 为 AB 相增量编码器 |
WENC_CPR / WENC2_CPR | 查手册 | 轮子转一圈的计数,查电机或编码器手册 |
WENC_RADIUS / WENC2_RADIUS | 按实车 | 轮子半径,单位米;半径 5 cm 填 0.05 |
WENC_POS_X / WENC2_POS_X | 按实车 | 该轮相对控制器(重心)的前后距离,前方为正,单位米 |
WENC_POS_Y / WENC2_POS_Y | 按实车 | 该轮相对控制器(重心)的左右距离,右侧为正,单位米 |
要让编码器参与位置解算,必须用 EKF3,按下面几项配置完再重启控制器。
| 参数 | 值 | 说明 |
|---|---|---|
AHRS_EKF_TYPE | 3 | 使用 EKF3 |
EK2_ENABLE | 0 | 关闭 EKF2 |
EK3_ENABLE | 1 | 打开 EKF3 |
EK3_SRC1_VELXY | 7 | 水平速度源取 WheelEncoder |
EK3_SRC1_POSXY | 0(可选) | 完全不用 GPS 定位时设为 None |
EK3_SRC1_VELZ | 0(可选) | 同上,垂直速度也不用 GPS |
地面测试
WHEEL_DISTANCE 这条 MAVLink 消息实时给出两侧车轮的累计行驶距离。Mission Planner 里按 Ctrl+F,打开 MAVLink Inspector 即可查看。
车放地面直线推行一段已知距离(比如 5 m),对照两侧读数:两轮差得明显,先查轮胎打滑和 WENC_RADIUS,再查 WENC_CPR;某一轮读数反向增长,说明该路 A、B 相接反,对调即可。
轮速闭环
平衡车可以用编码器对左右两侧的油门输出做轮速闭环控制,具体步骤见官方 Balance Bot 调参页面的轮速控制部分。
日志记录
两侧车轮的累计距离同时写入日志的 WENC 消息,跑完一轮可以直接回放核对里程。

