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.