ODrive Versions Save

High performance motor control

fw-v0.4.10

5 years ago

Fixed

  • Index search would trigger in the wrong place.

fw-v0.4.9

5 years ago

Added

  • A release target for ODrive v3.6
  • Communication watchdog feature.
  • encoder.set_linear_count(count) function.
  • Configurable encoder offset calibration distance and speed:calib_scan_distance and calib_scan_omega
  • Encoder offset calibration debug variable calib_scan_response
  • Lock-in drive feature
  • Script to enable using a hall signal as index edge.

Changed

  • Encoder index search now based on the new lock-in drive feature

Fixed

  • Encoder index interrupts now disabled when not searching

fw-v0.4.8

5 years ago

Added

  • dump_errors() utility function in odrivetool to dump, decode and optionally clear errors.
  • f command to ascii protocol to get encoder position and velocity feedback.
  • q command to ascii protocol. It is like the old p command, but velocity and current mean limits, not feed-forward.
  • ss, se, sr commands to ascii protocol, for save config, erase config and reboot.
  • move_incremental function for relative trajectory moves.
  • encoder.config.ignore_illegal_hall_state option.
  • encoder.config.enable_phase_interpolation option. Setting to false may reduce jerky pulsations at low speed when using hall sensor feedback.
  • Analog input. Used the same way as the PWM input mappings.
  • Voltage limit soft clamping instead of ERROR_MODULATION_MAGNITUDE in gimbal motor closed loop.
  • Thermal current limit with linear derating.

Fixed

  • Added required 1.5 cycle phase shift between ADC and PWM, lack thereof caused unstable current controller at high eRPM.

fw-v0.4.7

5 years ago

[0.4.7] - 2018-11-28

Added

  • Overspeed fault
  • Current sense saturation fault.
  • Supress startup transients by sampling encoder estimate into position setpoint when entering closed loop control.
  • Make step dir gpio pins configurable.
  • Configuration variable encoder.config.zero_count_on_find_idx, true by default. Set to false to leave the initial encoder count to be where the axis was at boot.
  • Circular position setpoint mode: position setpoints wrapped [0, cpr). Useful for infinite incremental position control.
  • Velocity setpoint ramping. Use velocity control mode, and set controller.vel_ramp_enable to true. This will ramp controller.vel_setpoint towards controller.vel_ramp_target at a ramp rate of controller.config.vel_ramp_rate.

Changed

  • Increased switching frequency from around 8kHz to 24kHz. Control loops still run at 8kHz.
  • Renamed axis.enable_step_dir to axis.step_dir_active
  • New process for working with STM32CubeMX.

Fixed

  • Would get ERROR_CONTROL_DEADLINE_MISSED along with every ERROR_PHASE_RESISTANCE_OUT_OF_RANGE.
  • ODrive tool can now run interactive nested scripts with "%run -i script.py"

fw-v0.4.6

5 years ago

[0.4.6] - 2018-10-07

Fixed

  • Broken printing of floats on ascii protocol

fw-v0.4.5

5 years ago

[0.4.5] - 2018-10-06

Added

  • Trapezoidal Trajectory Planner
  • Hook to execute protocol property written callback
  • -Wdouble-promotion warning to compilation

Changed

  • Make python tools compatible with python 2.7 (so it can be used with ROS)
    • Threading API constructor can't take the daemon parameter, so all thread creation had to be expanded out.
    • TimeoutError isn't defined, but it makes for more readable code, so I defined it as an OSError subclass.
    • ModuleNotFoundError is replaced by the older ImportError.
    • Print function imported from future
  • Using new hooks to calculate:
    • motor.config.current_control_bandwidth
      • This deprecates motor.set_current_control_bandwidth()
    • encoder.config.bandwidth
  • Default value for motor.resistance_calib_max_voltage changed to 2.0

Fixed

  • An issue where the axis state machine would jump in and out of idle when there is an error
  • There is a bug in the arm fast math library, which gives spikes in the output of arm_cos_f32 for input values close to -pi/2. We fixed the bug locally, and hence are using "our_arm_cos_f32".

fw-v0.4.4

5 years ago

[0.4.4] - 2018-09-18

Fixed

  • Serious reliability issue with USB communication where packets on Native and the CDC interface would collide with each other.

fw-v0.4.3

5 years ago

[0.4.3] - 2018-08-30

Added

  • Encoder position count "homed" to zero when index is found.

Changed

  • We now enforce encoder offset calibration must happen after index is found (if using index)
  • Renaming of the velocity estimate pll_vel -> vel_estimate.
  • Hardcoded maximum inductance now 2500 uH.

Fixed

  • Once you got an axis error ERROR_INVALID_STATE you could never clear it
  • Char to int conversion to read motornum on arduino example

fw-v0.4.2

5 years ago

[0.4.2] - 2018-07-04

Added

  • Hall sensor feedback
  • Configurable RC PWM input
  • Ability to read axis FET temperature
  • Config settings for:
    • motor.config.requested_current_range
    • motor.config.current_control_bandwidth and motor.set_current_control_bandwidth. Latter required to invoke gain recalculation.
    • encoder.config.bandwidth

fw-v0.4.1

5 years ago

[0.4.1] - 2018-07-01

Fixed

  • Encoder errors would show up as Axis error ERROR_MOTOR_FAILED instead of ERROR_ENCODER_FAILED.
  • Various pip install dependencies
  • Ability for python tools threads to quit properly
  • dfuse error prints now python3 compatible