Chaotic Current Control

Hello all,

We’re working with what is probably a damaged motor. We left the thing on with the brake solenoid engage (and very warm) for a few hours, then put it through an accidental very high-current episode, with the end result that this motor exhibits a sort of stepping mechanical resistance 96 times per revolution (3 times per revolution before the 32:1 gearbox). This weird stepping motion seems to be screwing up the calibration process and causing the motor to be very, very chaotic in its current control loop.

Here’s a shot of odrv0.axis0.motor.current_control.Iq_measured versus setpoint (hidden, in blue)

It makes a sound wonderfully like a diesel pickup truck, but the oscillations get so bad when we try to operate that it trips current limits.

These are the results we see after running full calibration. We can change the current control gains and change the pitch the motor makes (its like revving that diesel truck), but we can’t seem to get the oscillation in check no matter how much we lower the i and p gains. Also interesting: setting i and p gains to zero doesn’t fully stop the motor, although it gets really choppy and much slower in its oscillation.

Since our goals right now aren’t specific control, but just to drive the robot around for a while (to make sure it won’t melt under our working conditions and all that), something stupid like voltage control (which doesn’t appear to be implemented) or whatever the calibration process does to move (it’s somehow immaculately smooth) would be amazing until we can get a replacement motor in three weeks.

P.S. running velocity control creates really large oscillations as well that appear to be trying to counteract the chaos of the current control loop.

It’s possible that one of the ODrive shunt resistors has been damaged. After motor calibration, do the motor.config.phase_resistance and motor.config.phase_inductance variables for the bad motor match a good motor? Also, does this poor current control behavior follow the motor or the axis if you swap motors around?

The phase resistance and inductance are different by a factor of two - I can’t tell you exactly what because we’ve tabled the ODrive part of the project for now. However, they weren’t totally out of line. I tried swapping the motors, and the crazy current problem does remain. I still have no idea what is happening, but we’ve decided just to replace the motor instead of spending more time on it because all of its non-damaged cousins just start-up and roll like a dream.

1 Like