Skip to content

fw-v0.5.1

Compare
Choose a tag to compare
@Wetmelon Wetmelon released this 30 Sep 14:58
· 870 commits to master since this release

[0.5.1] - 2020-09-27

Added

  • Added motor torque_constant: units of torque are now [Nm] instead of just motor current.
  • Motor thermistors support
  • Enable/disable of thermistor thermal limits according setting axis.<thermistor>.enabled.
  • Introduced odrive-interface.yaml as a root source for the ODrive's API. odrivetool connects much faster as a side effect.
  • Added torque_constant and torque_lim to motor config

Changed

  • input_pos, input_vel, pos_estimate_linear, pos_estimate_circular, are now in units of [turns] or [turns/s] instead of [counts] or [counts/s]
  • axis.motor.thermal_current_lim has been removed. Instead a new property is available axis.motor.effective_current_lim which contains the effective current limit including any thermal limits.
  • axis.motor.get_inverter_temp(), axis.motor.inverter_temp_limit_lower and axis.motor.inverter_temp_limit_upper have been moved to seperate fet thermistor object under axis.fet_thermistor. get_inverter_temp() function has been renamed to temp and is now a read-only property.
  • axis.config.counts_per_step is now axis.config.turns_per_step
  • Outputs of axis.sensorless_estimator are now in turns/s instead of electrical rad/s

Fixed

  • Fixed bug of high current during lockin-ramp caused by motor::update() expecting a torque command instead of current
  • Fixed bug where commanded velocity was extremely high just after sensorless ramp when using input_mode INPUT_MODE_VEL_RAMP caused by vel_setpoint and axis.config.sensorless_ramp.vel being in different units

[0.5.0] - 2020-08-03

Added

  • AC Induction Motor support.
    • Tracking of rotor flux through rotor time constant
    • Automatic d axis current for Maximum Torque Per Amp (MTPA)
  • ASCII "w" commands now execute write hooks.
  • Simplified control interface ("Input Filter" branch)
    • New input variables: input_pos, input_vel, and input_current
    • New setting input_mode to switch between different input behaviours
      • Passthrough
      • Velocity Ramp
      • 2nd Order Position Filter
      • Trapezoidal Trajectory Planner
    • Removed set_xxx_setpoint() functions and made xxx_setpoint variables read-only
  • Preliminary support for Absolute Encoders
  • Preliminary support for endstops and homing
  • CAN Communication with CANSimple stack
  • Gain scheduling for anti-hunt when close to 0 position error
  • Velocity Limiting in Current Control mode according to vel_limit and vel_gain
  • Regen current limiting according to max_regen_current, in Amps
  • DC Bus hard current limiting according to dc_max_negative_current and dc_max_positive_current
  • Brake resistor logic now attempts to clamp voltage according to odrv.config.dc_bus_overvoltage_ramp_start and odrv.config.dc_bus_overvoltage_ramp_end
  • Unit Testing with Doctest has been started for select algorithms, see Firmware/Tests/test_runner.cpp
  • Added support for Flylint VSCode Extension for static code analysis
  • Using an STM32F405 .svd file allows CortexDebug to view registers during debugging
  • Added scripts for building via docker.
  • Added ability to change uart baudrate via fibre

Changed

  • Changed ratiometric motor.config.current_lim_tolerance to absolute motor.config.current_lim_margin
  • Moved controller.vel_ramp_enable to INPUT_MODE_VEL_RAMP.
  • Anticogging map is temporarily forced to 0.1 deg precision, but saves with the config
  • Some Encoder settings have been made read-only
  • Cleaned up VSCode C/C++ Configuration settings on Windows with recursive includePath
  • Now compiling with C++17
  • Fixed a firmware hang that could occur from unlikely but possible user input
  • Added JSON caching to Fibre. This drastically reduces the time odrivetool needs to connect to an ODrive (except for the first time or after firmware updates).
  • Fix IPython RuntimeWarning that would occur every time odrivetool was started.
  • Reboot on erase_configuration(). This avoids unexpected behavior of a subsequent save_configuration() call, since the configuration is only erased from NVM, not from RAM.
  • Change motor.get_inverter_temp() to use a property which was already being sampled at motor.inverter_temp
  • Fixed a numerical issue in the trajectory planner that could cause sudden jumps of the position setpoint