Servos reporting zero velocities after a moteus firmware update #513
|
If you built your Upkie in 2022 and haven't updated the firmware of your moteus servos since then, you may run into an issue where servos report flat zero
The issue troubleshooted here applies specifically if the following firmware versions above work and don't work respectively. |
Replies: 1 comment
|
The problem mentioned above is related to the introduction of the PLL filter mentioned in the mjbots blog post on Flexible I/O: Source configuration. The 2022-06-28 release introduced a new system of "sources" to configure multiple encoders. Since the 2022-06-28 update, the absolute magnetic encoder on a moteus board corresponds to source 0, and should be configured accordingly. In particular, its
On the servos of Rookie, following a chain of firmware updates I have completely lost track of, the configuration were: $ ./tools/dump_servo_configs ./configs && cd ./configs && rg "motor_position.sources.0.pll_filter_hz"
servo-1.cfg
93:motor_position.sources.0.pll_filter_hz 0.000000
servo-2.cfg
99:motor_position.sources.0.pll_filter_hz 0.000000
servo-3.cfg
99:motor_position.sources.0.pll_filter_hz 0.000000
servo-4.cfg
99:motor_position.sources.0.pll_filter_hz 0.000000
servo-5.cfg
99:motor_position.sources.0.pll_filter_hz 0.000000
servo-6.cfg
99:motor_position.sources.0.pll_filter_hz 0.000000The moteus firmware will report zero velocities when the filter frequency is set to zero. The solution here is then to update these settings, for instance to a default value of 400 Hz: $ sudo moteus_tool --pi3hat-cfg "1=1,2,3;3=4,5,6" -t 6 -c
conf get motor_position.sources.0.pll_filter_hz
0.000000
conf set motor_position.sources.0.pll_filter_hz 400.0
OK
conf get motor_position.sources.0.pll_filter_hz
400.000000
conf write
OKIf some of your servos get noisier after the update (for instance if you have qdd100 beta 2 servos), you can consider lowering their PLL frequencies to e.g. 200 Hz or 100 Hz. |
The problem mentioned above is related to the introduction of the PLL filter mentioned in the mjbots blog post on Flexible I/O: Source configuration. The 2022-06-28 release introduced a new system of "sources" to configure multiple encoders. Since the 2022-06-28 update, the absolute magnetic encoder on a moteus board corresponds to source 0, and should be configured accordingly. In particular, its
motor_position.sources.0.pll_filter_hzshould be set to a non-zero value in order to use it for commutation: