Possibly a dumb question, with an in-retrospect very obvious answer:
When in torque control mode, if I set input_torque = 1, I would expect that the ODrive should maintain a constant torque of 1Nm.
→ Under a constant torque, you would expect a constant acceleration. Ie, my motor should speed up and continue speeding up until I turn the torque off again.
Instead I see that the motor speeds up to a certain speed, then stays at that speed. In my case, that speed is around 22 turns/s.
I don’t believe that can be just air resistance increasing until it balances the torque, it feels like it’s going far too slowly for that to have happened yet.
→ If I then increase the torque to 2Nm, I don’t see any increase in speed. If I start from stationary and set input_torque = 2, I see that the motor does indeed accelerate faster - it reaches 22 turns/s more quickly. But it never goes faster.
If it was air resistance causing the steady velocity, I would have expected higher input torques to result in higher steady state speeds. Instead, whatever I do I always get the exact same 22 turns/s.
What’s going on here?
(I am definitely in torque control mode, not velocity control mode. I have set my vel_limit to a very large value, and the measured 22 turns/s is nowhere near it.)
Hadn’t thought of that. But my motor has fourteen poles (seven pole pairs) so nowhere near the limit.
However I notice that another limit mentioned in that quoted reply is bus voltage * motor KV * 0.75, which comes out to 21 turns/s with the motor+power supply I’m using.
Is there any setting to increase this, or have I found a hard limit of the Odrive?
First, controller.config.enable_current_mode_vel_limit is True by default to prevent you from hurting yourself, so make sure vel_limit is high enough.
V_{bus} * 0.75 is the maximum voltage that we can apply to the motor itself because ~reasons~ relating to how we’re sampling the current shunts and so forth. Therefore V_{bus} * 0.75 * Kv is the maximum rpm you can achieve for a given motor.
Note that the 75% factor (as opposed to 100%) is a limitation of ODrive v3. But generally with any other motor controller you cannot go faster than bus voltage * motor KV (disregarding special motors that are designed with Field Weakening in mind)