Skip to content

轮式编码器设置 ​

Rover 固件最多支持两路 AB 相轮式编码器,用来提高位置估计精度,没有 GPS 时作用尤其明显。编码器装在电机轴或轮轴上,一路对应一侧车轮。

接线与设置 ​

编码器的 A、B 两相各占一个输出口,接线前先把这两个口从舵机输出改成普通 IO。

编码器 A、B 相接到控制器输出口:黄线为 A 相、白线为 B 相,右侧为线色与功能对应表

▲ A、B 两相各占一个输出口;黄线为 A 相、白线为 B 相,绿线 GND、蓝线 Vcc

  1. A、B 两相接到控制器空闲的输出口(官方示例用 AUX OUT 3~6)。
  2. 把这些口的 SERVOx_FUNCTION 设为 -1,该口即作为 GPIO 输入使用。示例中对应 SERVO11_FUNCTION~SERVO14_FUNCTION。
  3. 这些口若被中继占用,把 RELAY1_PIN、RELAY2_PIN 设为 -1 释放出来。

输出口编号以控制器为准

不同控制器上 AUX 口对应的 SERVOx 编号不同,以机身丝印和地面站输出列表为准,不要照抄示例里的 11~14。

两个编码器的参数分开设置,WENC_ 对应第一路,WENC2_ 对应第二路。

参数设为说明
WENC_TYPE / WENC2_TYPE1编码器类型,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_TYPE3使用 EKF3
EK2_ENABLE0关闭 EKF2
EK3_ENABLE1打开 EKF3
EK3_SRC1_VELXY7水平速度源取 WheelEncoder
EK3_SRC1_POSXY0(可选)完全不用 GPS 定位时设为 None
EK3_SRC1_VELZ0(可选)同上,垂直速度也不用 GPS

地面测试 ​

WHEEL_DISTANCE 这条 MAVLink 消息实时给出两侧车轮的累计行驶距离。Mission Planner 里按 Ctrl+F,打开 MAVLink Inspector 即可查看。

车放地面直线推行一段已知距离(比如 5 m),对照两侧读数:两轮差得明显,先查轮胎打滑和 WENC_RADIUS,再查 WENC_CPR;某一轮读数反向增长,说明该路 A、B 相接反,对调即可。

轮速闭环 ​

平衡车可以用编码器对左右两侧的油门输出做轮速闭环控制,具体步骤见官方 Balance Bot 调参页面的轮速控制部分。

日志记录 ​

两侧车轮的累计距离同时写入日志的 WENC 消息,跑完一轮可以直接回放核对里程。

文档反馈:hongle@cuav.net