ODrive with 1kW motors

I am working on a ground vehicle with 4 1kW motors and two odrives 3.6 onboard. Let me give you the rough parameters of the system:

  • Vehicle mass 180 kg
  • 12s Li-Ion battery (44.4V nominal voltage)
  • Motors are rated 1kW, 48V, 450 r/min (according to label), hall sensors
  • Total reduction from motor to wheel is about 10:1 (5:1 planetary reduction in the motor, and external 2:1 reduction through chain link)
  • According to our inspection and measurements it has 4 pole pairs (8 magnets), KV is 62 rpm/v (torque_constant 0.13)

In general the system works, I was able to tune the velocity control in a way that allows going forward and apply differential steering.

However, a huge problem is a “turn in place” scenario. Obviously due to weight of the vehicle and width of wheels that we use this situation requires lots of torque from the motors. I was updating motor.config.current_lim to get the required torque, but here is the problem:

  • If current_lim is not large enough (e.g. 30A) the robot wouldn’t turn because there is not enough torque
  • If current_lim is large (e.g. 70A, like we use now) - the turn occurs, but we often (always) get error in odrive. We mostly see a combination of three errors: ILLEGAL_HALL_STATE on encoder and UNKNOWN_TORQUE/UNKNOWN_VOLTAGE_COMMAND on motor. But sometimes we see different errors.

I don’t undestand how is hall state error relevant to the situation. Hall sensors work fine in other scenarios, so they are probably mounted correctly. I should note that the vehicle turning is a pretty bumpy situation - due to very high torques and the suspension we use motors sometimes find it easier to jump than to turn, but because we have motors on each of 4 wheels the vehicle keeps turning.

So my general question is - is it a viable setup with motors of that power and vehicle of that mass to use odrives 3.6 for motor control? If so, the second question is how can I approach and debug the situation with errors during turn in place? Thanks in advance for any help!

ILLEGAL_HALL_STATE means that there was some invalid hall signal combination. It could be noise on the wires that are caused by high currents in the motors. In addition to the recommended HALL signal filtering capacitors, I would suggest shielding your hall signal wires.
You can use an oscilloscope to monitor the hall signals and check for correct behavior.

1 Like