I was thinking about using hoverboard motors on a rover for quite a while. They offer high torque at an unbeatable price. The ODrive looks like a perfect fit for those motors. It uses closed loop control with the motor’s hall sensors to allow very precise movements even at low speeds.
Finally I found some time to put it all together and the results looks very promising. I use auto mode without any global reference (no GPS or compass). ODrive allows to read out the encoder positions, so it can be used as as wheel encoders for the EKF3 without any extra hardware.
This is a simple mission following a 3m x 2m rectangle. There is a little bit of oscillation after the pivot turns, but I think it looks pretty decent.
The biggest issue at the moment is gyro drift. I believe this is caused by having only one measurement source for rotations (just the gyro no compass), so the EKF can’t really estimate the offset. It might be a good idea to calibrate the gyro offset any time the rover is not moving.
At the moment this is just a quick and dirty hack, but I think ODrive support could be added to the mainline if there is some interest.