2.3 KiB
Migration Guide
Certain changes occurred between firmware versions v0.4.12 and v0.5.1 that will break existing configurations. This document is a guide for how to take a working v0.4.12 ODrive config and change it to work with firmware v0.5.1.
Unit Changes
ODrive now uses units of [turns], [turns/s], and [turns/s^2] instead of [counts], [counts/s], and [counts/s^2]. In addition, the motor controller class now has an input command of torque in [Nm] instead of current in [Amps]. In general, every user-facing parameter that has to do with position or velocity is affected by the unit change.
Note: For the torque to be in correct in [Nm] you need to configure the motor.config.torque_constant. See the updated getting started for more details.
Control Parameter Names
ODrive now uses input_pos, input_vel, and input_torque as commands instead of pos_setpoint, vel_setpoint, and current_setpoint
Guide
For a working v0.4.12 ODrive configuration, use the following equations to convert parameters as required.
pos_gainis unaffected ( [counts/s / count] -> [turns/s / turns] )vel_gainisvel_gain_old*torque_constant*encoder cprvel_integrator_gainisvel_integrator_gain_old*torque_constant*encoder cpr
For other values, [turns] = [counts] / [encoder cpr]. Converting [counts/s] and [counts/s^2] is similar.
Affected Variables
axis.controller.input_posaxis.controller.input_velaxis.controller.input_torqueaxis.controller.config.vel_limitaxis.controller.config.vel_ramp_rateaxis.controller.config.current_ramp_rateis nowaxis.controller.config.torque_ramp_rateaxis.controller.config.circular_setpoint_rangeaxis.controller.config.inertiaaxis.controller.config.homing_speedaxis.controller.pos_setpointaxis.controller.vel_setpointaxis.controller.torque_setpointinstead ofaxis.controller.current_setpointaxis.trap_traj.config.vel_limitaxis.trap_traj.config.accel_limitaxis.trap_traj.config.decel_limitaxis.encoder.pos_estimateaxis.encoder.pos_estimate_circularaxis.encoder.vel_estimateaxis.config.counts_per_stepis nowturns_per_stepfor the step/direction interfaceaxis.sensorless_estimator.vel_estimateis in mechanical [turns/s] instead of electrical [radians/s]