Constant acceleration on load

Hi, I am facing the following issue:

Setup:

  • ODRIVE 3.6
  • Longboard brushless motors on a mobile robot platform

Problem:
On load, e.g. 9 KG, the motors delay a little bit followed by a quick acceleration. This causes the robot to turn too fast to left or right.

Desired Solution:
A constant acceleration.

Is this a problem of too little current?

If you are using velocity control you should set it to ramped velocity control, or if you are using position control you should set it to trapezoidal trajectory control

You can specify the ramp rate and the acceleration/deceleration respectively for each which should give you more control

I suggest plotting the motor phase current and compare it to the current limit, also make sure the requested current range is more than the current limit plus current limit margin

Also probably want to disable vel_integrator_gain (set it to 0.0)

Thanks a lot for your suggestions. Unfortunately, none worked for me properly. Even so the ramped vel helped to decelerate, the integrator seemed to be stronger at some point. When I disabled the vel integrator, the motor was not strong enough for steering. It’s basically a 4 wheeled robot. 2 motors in the back and two fixed wheels in front. Steering works by different velocities on each motor. The front wheels slip over the ground. This works great without load.

My assumption is that without the integrator, the “push” is too weak to let the front wheels slip over the ground. On the other side, activating the integrator results in generating too much energy, trying to move the load, which yields to a too strong “push” and the robot is just moving to left and right.

Maybe castor wheels are a better approach? But I have not great experiences with them either. Because if the floor is not even the robot is moving in to the wrong direction as well.

Or what about 4 castor wheels on each corner and 2 motor wheels in the middle, so that the center of mass is on the motored wheels? Any suggestions? :slight_smile:

PS: I guess 4 motor wheeled robot would be best but I can only have two motors…

Mechanically you can chain the front wheels to the back wheel so each side is powered, that should help a lot

On the control side you might be better off using circular position control and letting it sort out velocities internally (i.e. you set the wheel angle in the circular control mode and incrementing the position in accordance with the velocity you want)

Or you run it in current control mode and build a controller to adjust accordingly, that is how we use motor controllers on skateboards

When I disabled the vel integrator, the motor was not strong enough for steering

Then you need to increase the vel_gain until they are.

You can use torque control if you prefer, but it tends not to be all that great at differential drive and you’ll have trouble tracking straight

I just increased vel_gain until motors started to shake, then decreased it a little bit until shaking was gone. Now it works as expected. Motors have power and steering is stable.

This is really awesome. Many thanks for your support :pray: :smiley:

1 Like