I’m building a 4-wheel mobile robot. I’m using 2 ODrives for the two couples of wheels (the front wheels are on one board, and the back wheels on the other one).
The motors are equipped with encoders without an index signal, so before being able to set the closed loop I need to perform an encoder offset calibration for each of the 4 wheels.
The only way I found is to lift the robot during the startup, to perform the calibration, than to put it back on the ground.
I’m using only the Velocity Control Loop (never position or current control loop), so I guess that I am only interested in the wheels’ velocities and never in their actual positions.
Is there a possibility to enable velocity control loop without performing the offset calibration?
Any suggestion on how to proceed for avoiding to lift the robot at each startup?
I’m afraid that there is no way to skip offset calibration. I would recommend upgrading your encoders with index or absolute encoders.
Thank you for your reply.
As I understood, in order to start motors equipped with encoders with index, it is mandatory to perform index search.
So, do you confirm that the only way to set closed loop control without the need of moving the wheels is to have absolute encoders?
Sorry for the late reply, but yes encoders with index will need an index search. This will be always less than one turn. If you use gears the rotation at the wheel can be very little.
Absolute encoders should work with moving wheels. But I have not yet tried them.
I have a two wheel drive robot that uses 170mm wheels with encoders (Deck Donkey Project). I have to calibrate the encoders each time I power up. The robot which weighs about 30 lbs does so on a level floor without any problem…
exception is if one of my encoder wires comes loose …
When I calibrate I do both motors at once and the robot pivots 90 degrees and then back to original position.
With 4 wheels going at once there may be friction. Some creative coding might be possible.