Rover 3.2 includes support for 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 flight controller (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.
- set BRD_PWM_COUNT to 2 to allow AUX OUT 3 and 4 to be used as inputs
- set WENC_TYPE and WENC2_TYPE to 1 to enable reading from two wheel encoders
- set WENC_CPR and WENC2_CPR to the counts-per-revolution of the encoder. This is the number of “pings” the encoder will produce for each full revolution of the wheel
- set WENC_RADIUS and WENC2_RADIUS to the radius (in meters) of each wheel (i.e. 5cm radius would be 0.05)
- set WENC_POS_X and WENC_POS_Y to define the first wheel’s distance from the flight controller or COG (i.e. WENC_POS_X = 0.10, WENC_POS_Y = -0.05 means the wheel is 10cm ahead and 5cm left of the flight controller)
- set WENC2_POS_X and WENC2_POS_Y to define the second wheel’s distance from the flight controller or COG
- disable relays by setting RELAY_PIN and RELAY_PIN2 to -1
To enable position estimation using the wheel encoders the EKF3 must be set as the main AHRS:
- set AHRS_EKF_TYPE to 3 (means use EKF3)
- set EK2_ENABLE to 0 (disable EKF2)
- set EK3_ENABLE to 1 (enable EKF3)
After making the above changes the flight controller should be rebooted
The RPM of the two wheels can be seen as “rpm1” and “rpm2” in the ground station.
If using the Mission Planner these values can be seen in the Flight Data screen’s Status tab.
The wheel encoder data including total distance travelled by each wheel appears in the WENC dataflash log messages.