CM5 Firmware

The objective we had in mind was to create a setup for a good steady closed control loop between the Roboard and the servos. For reasons listed below we ended up using the CM5 as a bridge between the Roboard and the servos.

In order to get the maximum closed loop control speed between the Roboard and the servos with original Robotis firmware, we tried to control the servos directly from the Roboard. The Maximum speed achieved was 250frames/s for 10 servos position control.

Firmware for CM5 as bridge between Roboard and AX12 flashed with Dynamixel firmware:CM5ForBioloid+RoboardExmpl.zip

This was not the solution we wanted, once we need to control the servo motors PWM and not position, so we then developed our own AX12 firmware, Morpheus, which removes delays by getting the servos to send back their position one after the other without the need for a query packet to each servo. Connecting the Servos with the new firmware, directly to the Roboard created new problems – packet loss. We found that this was due to the Servos were overlapping the replies with the timeout for new request of the board, but with larger timeout, we were loosing a lot of speed. It seemed that the issues were related to any or all of the following: FTDI driver, the USB bus controller, the Linux not being a hard real-time system.

firmware: RoboardDirectToServos.zip

Finally we installed the Morpheus firmware on the AX12 servos and used the CM5 as a bridge between the Roboard and the servos. The Morpheus protocol was used between the Roboard and the CM5, in order to do it, the CM5 code was organized very similar to the original version.

A very stable control loop speed was acheived of 600 cycles/second. We tested the system for 8 hours of continuous robot operation, several times, using this setup and controlling the servos using PWM on 10 servos.

Firmware for CM5 as bridge between Roboard and AX12 flashed with Morpheus firmware: CM5Exmpl.zip

Leave a comment