Rover supports up to two “AB” wheel encoders like those in this Pololu motor which can be used to improve position estimation especially when no GPS is used.
Connection and Setup¶
connect motor encoder’s A and B outputs to the autopilot (i.e. Pixhawk’s) AUX OUT 3,4,5 and 6 pins. Normally 3,4 should be used for the left motor’s encoder, 5,6 for the right’s.
BRD_PWM_COUNTto 2 to allow AUX OUT 3 and 4 to be used as inputs
in firmware versions 4.2 and later, the method for setting a PWM/SERVO/MOTOR output to be a GPIO function is changed. Instead of
BRD_PWM_COUNT being used, the individual
SERVOx_FUNCTION parameter is merely set to “-1”. If set to “0”, it remains a PWM output, unassigned to a function, and outputs that output’s trim value when board safety is not active. If the servo function is being “mirrored” to a remote device, as in the case of a DroneCAN or KDECAN ESC, then in order to change the autopilot board’s corresponding output pin to be a GPIO, but allow the
SERVOx_FUNCTION to still be assigned to the remote device, the SERVO_GPIO_MASK parameter can be used to assign the board pin to be a GPIO without affecting the
SERVOx_FUNCTION assignment for the remote device.
To enable position estimation using the wheel encoders the EKF3 must be used and configured as follows:
set AHRS_EKF_TYPE to 3 (means use EKF3)
set EK2_ENABLE to 0 (disable EKF2)
set EK3_ENABLE to 1 (enable EKF3)
set EK3_SRC1_VELXY to 7 (“WheelEncoder”)
(optionally) set EK3_SRC1_POSXY to 0 (“None”) to disable use of GPS for horizontal position
(optionally) set EK3_SRC1_VELZ to 0 (“None”) to disable use of GPS for vertical velocity
After making the above changes the autopilot should be rebooted
WHEEL_DISTANCE MAVLink message shows the total distance travelled by each wheel in real time. Mission Planner’s MAVLink Inspector can be used which can be opened by pressing Ctrl-F and then pushing the “MAVLink Inspector” button.
The wheel encoder data including total distance travelled by each wheel appears in the WENC dataflash log messages.