Braking on robot at different weights


My team and I are developing a robot that follows a dynamic object in real time. As hardware we are using Odrive controller and hoverboard motors. ROS for the software (irrelevant for this matter). The control method we use is setting the values for “vel_setpoint”. The robot on its own works perfectly, but when we add weight (40Kg) to it, it oscillates because it does not brake fast enough (the inertia). Is there a way that braking works more aggressively or may it be better to use other control method?

Thank you in advance for your help.

You can try increasing the current limit. It may be hitting that and causing a saturation in your control function

Otherwise, following the tuning guide should give you good results for a pure inertial load

If your load changes and you find that if you get it well-tuned for a high inertia, but it becomes unstable at low inertia, then you are into gain scheduling territory. Some of the experimental branches allow to adjust dynamically by setting an inertia value, but I’ve never tried it myself


If you want position control then you can use the trapezoidal trajectory planner with inertia. For velocity control you can use velocity ramp mode.

1 Like


Thank you for your help, it is really appreciated. We already tried velocity ramp mode and we still get an uncontrollable inertia when adding weigth to the robot (is there a way to regulate this?).

Now we want to test trapezoidal trajectory planner using move_incremental but we don’t know how to achieve this with ASCII protocol communication because as I assume by what I see in your github code for the ASCII protocol, the “t” command is for move_to_pos.


I guess there is a way to call move_incremental through ascii protocol but we can’t figure out how (we already tried with “w” command, maybe we aren’t calling it properly). Could you show us how to do this?

Thank you in advance for your help and work.


t 0 1000 would send axis 0 to position 1000.