Alright, so I have been working on this legitimately for 4 days. I have tried two different controllers (both same type and FW) and two different motors of the same type (ODrive Robotics D6374 - 150kv) both with two different 8192 CPR encoders. Same results regardless. Which leads me to believe that I am the problem. No shame here.
(What is happening:) Sometimes when I do a FULL_CALIBRATION_SEQUENCE the motor will start slow and speed up and then just stop. So not the typical calibration with the switching of directions. Once I do that, I can pull errors. Trying a few times, after clearing errors, I get through the calibration and then into CLOSED_LOOP and when I enter the command the motor will move a fraction of a revolution before stopping, also pulling the same errors.
I have followed the 0.5.5 documentation repeatedly with no success. Running a 56V Version 3.6 on 0.5.5 and the utility version is 0.6.3. Running off from a 4S Lipo and no brake resistor. I am under the impression I am not setting something properly at this point. Below I have precisely what I have entered into the command prompt (with notes added after for clarification). I know its long, but I figure this is the best way for someone to point out what I am doing wrong. Please advise. Save my sanity. Thank you in advance.
Please connect your ODrive.
You can also type help() or quit().
Connected to ODrive 2051398A4D4D as odrv0
In [1]: odrv0.vbus_voltage
Out[1]: 14.7718505859375
In [2]: dump_errors(odrv0) //checking to ensure no errors persist on startup. Good to go.
system: no error
axis0
axis: no error
motor: no error
DRV fault: none
sensorless_estimator: no error
encoder: no error
controller: no error
axis1
axis: no error
motor: no error
DRV fault: none
sensorless_estimator: no error
encoder: no error
controller: no error
In [3]: odrv0.axis0.motor.config.current_lim = 10
In [4]: odrv0.axis0.controller.config.vel_limit = 2
In [5]: odrv0.axis0.motor.config.calibration_current = 5 //I have also tried value of 10, no difference
In [6]: odrv0.axis0.motor.config.pole_pairs = 7
In [7]: odrv0.axis0.motor.config.torque_constant = 8.27/150
In [8]: odrv0.axis0.motor.config.motor_type = MOTOR_TYPE_HIGH_CURRENT
In [9]: odrv0.axis0.encoder.config.cpr = 8192
// Steps 10 and 11 are me requesting odrv0.axis0.motor and odrv0.axis0.encoder feedback, nothing really to report
In [12]: odrv0.save_configuration()
←[93;1m20:32:20.691452300 [LEGACY_OBJ] protocol failed with 3 - propagating error to application←[0m
Oh no odrv0 disappeared
// This LEGACY_OBJ failing has me wondering if the config is ever truly saved. I do recall seeing a previous post about this and I believe it was indicated that it was fine and nothing to worry about. Am I wrong?
Reconnected to ODrive 2051398A4D4D as odrv0
In [13]: odrv0.axis0.requested_state = AXIS_STATE_FULL_CALIBRATION_SEQUENCE
//Faulty calibration noted, so I pulled errors
In [14]: dump_errors(odrv0)
system: Error(s):
ODriveError.MISSING_ESTIMATE //Cannot find this error in the documentation
axis0
axis: Error(s):
AxisError.MOTOR_FAILED // Triple checked wiring. This is what prompted me to change motor/encoder. No change
motor: Error(s):
MotorError.SYSTEM_LEVEL
DRV fault: none
sensorless_estimator: no error
encoder: no error
controller: no error
axis1
axis: Error(s):
AxisError.MOTOR_FAILED
motor: Error(s):
MotorError.SYSTEM_LEVEL
DRV fault: none
sensorless_estimator: no error
encoder: no error
controller: no error
In [15]: odrv0.clear_errors()
Oh no odrv0 disappeared
Reconnected to ODrive 2051398A4D4D as odrv0
In [16]: odrv0.axis0.requested_state = AXIS_STATE_FULL_CALIBRATION_SEQUENCE
//Calibration sequence looked good, performed as normal
In [17]: odrv0.axis0.requested_state = AXIS_STATE_CLOSED_LOOP_CONTROL
In [18]: odrv0.axis0.controller.input_pos = 1
//This is where it starts to move and then suddenly stops just a fraction of a rotation into the turn. Steps 19-21 are me attempting to send two more position commands without success and then setting AXIS_STATE_IDLE (not sure if its needed but I do it anyway). Pull errors, only to get same result as when a bad calibration sequence is noted.
In [22]: dump_errors(odrv0)
system: Error(s):
ODriveError.MISSING_ESTIMATE
axis0
axis: Error(s):
AxisError.MOTOR_FAILED
motor: Error(s):
MotorError.SYSTEM_LEVEL
DRV fault: none
sensorless_estimator: no error
encoder: no error
controller: no error
axis1
axis: Error(s):
AxisError.MOTOR_FAILED
motor: Error(s):
MotorError.SYSTEM_LEVEL
DRV fault: none
sensorless_estimator: no error
encoder: no error
controller: no error