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.