Torque control minimum velocity

Hi! I’m controlling a BLDC motor in torque mode. Given the specific application on which I’m using this motor, I need to ensure that the motor moves at a relatively low speed for safety reasons. The motor is connected to a cable system (it acts more of less like a brake), whose velocity is imposed by another component on the system. The issue with velocity is that, when the cable is disconnected while the system is running, as the motor doesn’t have an external load anymore, it starts to accelerate and achieves a quite high speed, which can be dangerous.

When I use the vel_limit parameter specified in the documentation, it does reduce the velocity at which the rotor moves, but also reduces the torque output, which is not wanted. I measured the achievable torque outputs for a set of vel_limit values and for the operational torque setpoint I want, the vel_limit is still “high”.

Is there a way to set a limit on the velocity without reducing the effective torque output? Thanks

Torque mode vel limiting is done based on vel_gain, see here: Controller — ODrive Documentation 0.6.10 documentation

So you will need to tune your vel_gain. With the default vel_gain, the derating is quite severe, explains your issues.

But don’t the outer control loops (position and velocity) get disabled when using torque control? How does the vel_gain still influence the torque control loop on itself? I already tunned the vel_gain for velocity control and for the anti-cogging calibration, so I don’t know if it is convenient to change this gain afterwards.