Releases: mjbots/moteus
Releases · mjbots/moteus
2024-11-14
- Use space vector modulation - this increases the maximum speed achievable by 15% on all motor and controller types
- Properly calculate maximum speed on moteus-c1 - the maximum speed was previously reported as 38% too high
- Automatically calculate CPR in
motor_position
for many configurations where the CPR is known - Limit the PLL filter frequency for UART encoders based on the configured polling rate
2024-10-29
- Many changes were made to make encoder compensation work better for hard configurations, such as with off axis MA732/MA702/MA600 magnetic encoders.
- Upgrade encoder compensation to 256 bins from 32
- Upgrade the compensation script to support both an inertial mode and a reference mode, improve plots
- Commutation compensation now linearly interpolates between bins, which further helps off-axis encoders
- As a side effect, compensation tables can now be invalid if too steep, resulting in an error
- Support the MA600 SPI magnetic encoder
- Implement PWM output for aux ports - all pins previously marked as hardware quadrature capable can now be used as PWM output
- Expose the UUID over the register protocol, allow individual commands to be scoped to a UUID prefix. In the future, this could be used with the multiplex broadcast address to discover devices.
- The motor thermistor resistance now defaults to 10k and is configurable
moteus_tool from pypi version 0.3.73 or newer is required to flash this firmware.
2024-06-17
- Properly decode AksIM-2 warning and error bits
- Make MA732 trimming for off-axis applications actually work
- When encoders are no longer active, stop using them and trigger a fault
- Limit the commanded velocity to something physically achievable
- Fault if a non-reducing gear ratio is configured without overriding
- Default bemf_feedforward to 0.0, and fault if it is configured non-zero without acceleration limits or override
This requires moteus_tool from pypi of 0.3.71 or newer to flash over CAN.
2024-05-20
New capabilities
- The ilimit can now be scaled in addition to kp and kd on a per-command basis. This allows seamlessly switching between position and velocity mode even when an integrative term is configured.
- Electrical power to (or from) the motor is now estimated and reported as
servo_stats.power_W
and register 0x007
Fixes
- Fix many problems when motor_position.output.sign == -1, including BEMF feedforward and cogging torque compensation
- Produce an error for many more malformed diagnostic mode commands, like
d pos 0 0 f1
Compatibility
To flash this firmware, moteus_tool version 0.3.70 or newer is required.
2024-04-30
- Support moteus-c1
- Properly detect board hardware when DC input turn-on slew is very slow
2024-01-06
- Implement
servo.max_velocity_slip
- this can be used to ensure acceleration limits are obeyed when control is saturated in velocity mode - Support re-capturing position and velocity while in control mode with the "recapture position and velocity" command
2023-12-15
- Resolve an issue that resulted in fault 33 always being reported on r4.5 and earlier boards
2023-12-14
- Fix a problem that triggered fault 37 if a configured I2C device was disconnected or had an intermittent failure
2023-12-04
Required moteus_tool: >= 0.3.65 (python -m pip install --upgrade moteus
)
Major Changes
- Resolve robustness issues that prevented I2C encoders from being used as the commutation or output encoder. Their use for output disambiguation worked reliably before and still does.
- Switch I2C encoder polling rate configuration to be measured in microseconds rather than milliseconds. An up-to-date
moteus_tool
is required to flash this firmware as a result. It will properly migrate configuration on upgrade. - When in position-timeout mode, ignore user commands completely. This was always the intended behavior, but became broken with the addition of acceleration and velocity limits. As a result of the defect, commands that resulted in non-zero control velocities could result in user initiated torque.
Minor Changes
- Configure AS5600 encoders to disable their internal filters.
- Improve robustness of the encoder filter by preventing velocities from becoming too large.
- If a hard-fault is triggered, perform a 2-flash pattern on the red LED
- If firmware errors cause data to be written to the 0 page, report the fault as an incrementing counter
system_info.mem_fault
rather than as a error when attempting to performconf write
. - Ensure that
motor_position
configuration is updated to match auxiliary port configuration changes. This mostly means that encoder filter bandwidth limits are properly lowered if the polling rate of auxiliary sensors is decreased.
2023-09-26
- Fault if a stop position is commanded along with velocity or acceleration limits. This never did anything useful, but was often accidentally commanded when using old videos that recommend stop position along with new firmware that has acceleration or velocity limits configured.
- Support CUI AMT21 series RS485 encoders. These can be directly connected to the RS422 port on the moteus-n1, and can be connected to moteus-r4 with an adapter circuit similar to that needed for the AksIM-2.
- Support MA732 SPI encoders on any SPI capable auxiliary port.
- Fix stay within mode when velocity or acceleration limits are enabled. If either were enabled, then the commanded limits were not obeyed.
- Define "target velocity == NaN" to mean "target_velocity == 0.0". Previously NaN here was undefined behavior, and would result in the controller becoming non-functional. Most (maybe all) users who commanded NaN actually wanted to be commanding 0.0 anyways.
- "Index" inputs on auxiliary ports are now handled using an interrupt instead of polling at the control rate. This decreases the minimum required index pulse width from 1/PWM_RATE (~33us for a typical 30kHz pwm rate) to ~1us.