Regarding ODrive callibration?

How can I control how much the odrives move when I turn them on?

Right now they move the motors certain arbitrary distance forward and then backwards but I want to be able to control how much distance each of the Odrive controller moves by?

There is a certain minimum distance that it has to move to be accurate. What are your constraints?

I can explain this a bit better.
I’m using the ODrive to control the position of a linear actuator which has a maximum and minimum position before crashing.

What I was trying to do was having the motors positioned at the minimum position when turning on. The issue is that the motors would drive back further than they would forward which was causing the calibration to fail when contacting the minimum position of the actuator. It’s a bit annoying since I had success putting the motors in the minimum position on Wednesday but not on Friday

The work around I’m using for now is starting actuators in a physically consistent position but not at the minimum position. The calibration succeeds for this case then I have a hardcoded position offset for where I start it.

I think there might be an inconsistency in the actuator near the minimum position would could be causing the problem.

I’m okay using my work around for now, unless you have a better suggestion that I could look into


You can swap two phase-wires on the motor, then the initialisation will go the other way (in the positive direction 1st). Maybe that will help?

Is it okay to do initialization while the motors are loaded?

I think that probably contributes to the problems. There is a fair amount of friction

If your actuator is horizontal, it should be ok. If you think there is a fair bit of friction, you can turn up the calibration_current to the continuous current rating of your motors.

1 Like