Moteus

Latest version: v0.3.78

Safety actively analyzes 722581 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 8

0.120250327

New features and capabilities

* Improve numerical accuracy and stability of calibrated phase resistance, Kv, and inductance across a range of motor types. In some cases the improvements are small, on the order of a few percent. In some inductance cases, the old techniques could be off by a factor of 10x or more, and are now within a factor of 2x.
* Revise the power limiting subsystem. Now each board has a "factory power limit profile", which varies with supply voltage. `servo.max_power_W` is always used directly and unscaled if enabled and can further limit the factory profile. This results in an increase in rated peak power for most controllers, in some cases by more than 2x. Further, power limiting is now done in current space rather than voltage space, which makes it more robust under load and when near maximum PWM duty cycle.
* Automatically switch to `servo.voltage_mode_control` during calibration if it looks like the maximum current of the motor is small relative to the observed current sense noise.
* Record motor torque constant as `motor.Kv` instead of `motor.v_per_hz`. Simultaneously, remove several fudge factors and rationalize the definition of Kv to match that which is measured by an open loop phase to phase oscilloscope test.
* When possible, use a constant current lock-in for encoder calibration instead of constant voltage. This works better for all controllers, and is much better for controllers that do not have dead-time compensation. The old voltage technique is used for older firmware boards, and for motors which have a low calibration current to current sense noise ratio.
* Implement a slew rate limit on commanded current, `servo.pid_dq.max_desired_rate`

Robustness and error handling

* Remove dead-time compensation - after further investigation, the non-linearity was in current space, not PWM space. While this improved things a bit at zero speed, it added more audible noise and made things worse at non-zero speed.
* Fix a spurious warning in tview when editing combo box configurable values.
* Generate an error in moteus_tool if attempting calibration with a non-0 commutation source.
* Make `moteus_tool --cal-no-update` more robust.
* Make `moteus_tool --calibrate` work properly if `moteus_tool --cal-invert` was used previously.
* Make `moteus_tool --calibrate` refuse to calibrate controllers with a firmware ABI newer than moteus_tool knows about.

moteus_tool compatibility

* This firmware requires moteus_tool version 0.3.77 or newer to flash and calibrate.

0.120241114

* 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

0.120241029

* 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.

0.120240617

* 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.

0.120240520

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.

0.120240430

* Support moteus-c1
* Properly detect board hardware when DC input turn-on slew is very slow

Page 1 of 8

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.