Yes I think I know what is going on: by default the ODrive can only measure phase resistance up to 100 milli-ohm. To verify, you can use the
expore_odrive.py to query the motor error code:
motor0.error. You can check the error codes, they are zero-indexed from this enum. Specifically, I suspect that you will be getting error number 3, which is
No worries though, we can indeed change some parameters to make it work, though the steps are different for your two motors.
This has a resistance just a touch over what can be measured by default, and also it has a fairly low current rating. You can change
.calibration_current to 5A, and it should give you the ability to measure twice the resistance, while also not stepping over the current rating of your motor during calibration.
Also, since your motor has such a small current range, compared to the 100 or so A that the ODrive is designed for, you may want to increase the current amplifier gains to sense the smaller range. You can do this by setting the gains to 80 V/V in low_level.c:
local_regs->Ctrl_Reg_2.GAIN = DRV8301_ShuntAmpGain_80VpV
So gimbal motors have such high resistance, they need to be run in a different way. You can do this by setting
MOTOR_TYPE_GIMBAL. See the instructions here.