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!