I’m trying to use an odrive with a large tracked robot with a motor going through a 7:1 gear reduction. I’ve run through all of the calibration and can get decent step responses.

The problem comes from the CURRENT_SENSE_SATURATION error which is extremely common but unpredictable. I’ve looked through the firmware and think it’s the overcurrent_trip_level, but i could be wrong. I’m not really sure how to fix this problem, I tried increasing the requested current range up to 80 but that didn’t remove the problem. Would any of you guys know what could be causing this problem?

You may also notice from the image, the ringing when set back to zero, this is intermittent and only sometimes happens.

MOTOR

error = 0x0000 (int)

armed_state = 0 (int)

is_calibrated = True (bool)

current_meas_phB = 0.10042071342468262 (float)

current_meas_phC = 0.011764422059059143 (float)

DC_calib_phB = -1.0067063570022583 (float)

DC_calib_phC = -0.13252611458301544 (float)

phase_current_rev_gain = 0.012500000186264515 (float)

thermal_current_lim = 166.53347778320312 (float)

get_inverter_temp()

current_control:

p_gain = 0.022428356111049652 (float)

i_gain = 7.443442344665527 (float)

v_current_control_integral_d = 0.0 (float)

v_current_control_integral_q = 0.0 (float)

Ibus = 0.0 (float)

final_v_alpha = 0.0 (float)

final_v_beta = 0.0 (float)

Iq_setpoint = 0.0 (float)

Iq_measured = 0.0 (float)

Id_measured = 0.0 (float)

I_measured_report_filter_k = 1.0 (float)

max_allowed_current = 30.375 (float)

overcurrent_trip_level = 33.75 (float)

gate_driver:

drv_fault = 0 (int)

timing_log:

TIMING_LOG_GENERAL = 0 (int)

TIMING_LOG_ADC_CB_I = 2438 (int)

TIMING_LOG_ADC_CB_DC = 12862 (int)

TIMING_LOG_MEAS_R = 0 (int)

TIMING_LOG_MEAS_L = 0 (int)

TIMING_LOG_ENC_CALIB = 0 (int)

TIMING_LOG_IDX_SEARCH = 0 (int)

TIMING_LOG_FOC_VOLTAGE = 0 (int)

TIMING_LOG_FOC_CURRENT = 0 (int)

config:

pre_calibrated = True (bool)

pole_pairs = 15 (int)

calibration_current = 40.0 (float)

resistance_calib_max_voltage = 6.0 (float)

phase_inductance = 0.00022428356169257313 (float)

phase_resistance = 0.07443442195653915 (float)

direction = 1 (int)

motor_type = 0 (int)

current_lim = 40.0 (float)

current_lim_tolerance = 5.0 (float)

inverter_temp_limit_lower = 100.0 (float)

inverter_temp_limit_upper = 120.0 (float)

requested_current_range = 25.0 (float)

current_control_bandwidth = 100.0 (float)

CONTROLLER

error = 0x0000 (int)

pos_setpoint = 0.0 (float)

vel_setpoint = 0.0 (float)

vel_integrator_current = 0.0 (float)

current_setpoint = 0.0 (float)

vel_ramp_target = 0.0 (float)

vel_ramp_enable = False (bool)

config:

control_mode = 2 (int)

pos_gain = 1.0 (float)

vel_gain = 1.0 (float)

vel_integrator_gain = 0.10000000149011612 (float)

vel_limit = 1000.0 (float)

vel_limit_tolerance = 1.2000000476837158 (float)

vel_ramp_rate = 1000.0 (float)

setpoints_in_cpr = False (bool)

set_pos_setpoint(pos_setpoint: float, vel_feed_forward: float, current_feed_forward: float)

set_vel_setpoint(vel_setpoint: float, current_feed_forward: float)

set_current_setpoint(current_setpoint: float)

move_to_pos(pos_setpoint: float)

move_incremental(displacement: float, from_goal_point: bool)

start_anticogging_calibration()