I cut the rest of the frames for the first leg of my DARwIn-OP clone.
No mayor issues, just the FR07-H132 2D model file had the hole pattern flipped over as I suspected (see the test cut post).
I still have missing the parts to be cut with the lathe (and I haven’t receive the ball bearings yet). Anyway I wanted to see the leg moving so I programmed a small test.
I used an ODROID-X2 board from HardKernel. It is an ARM with this specs:
– Quad core Cortex-A9 at 1.7GHz.
– 2GB RAM.
– USB 2.0 and 100Mbps Ethernet.
– Runs Android or Ubuntu.
– Can use an SD or a eMMC module (8 to 64GB) as hard drive.
– 94x90mm board.

HardKernel is releasing this month the ODROID-XU, which has 8 cores (quad core Cortex-A15 at 1.6GHz and quad code Cortex-A7), adds a USB 3.0 port, has faster RAM and eMMC flash storage, and the 94x70mm board is smaller. From some reviews I have seen, just one Cortex-A15 core from this new board should be faster than the original Atom board of the DARwIn-OP.
Since these HardKernel ARM boards are good candidates to put in my DARwIn-OP clone, I’ll modify the chest frames to allow mounting them too (anyway they are smaller than the Atom board).
So for the test, I have the ODROID-X2 running Ubuntu 13.04 with the USB2AX adapter to connect the servos. I installed the Dynamixel SDK with the same steps I tested on a PC (see this post).
I assembled the leg as the right leg for my DARwIn-OP clone, following the DARwIn-OP Assembly Manual, with the MX28-T servos configured with the proper IDs and Baud Rate at 1Mbps.
I made a test program that would move the leg from a standing position to a lower position and back. For this all 6 servos have to be set first to the standing position, which is a Goal Position of 2048 in all of them. And then change the Goal Position of the hip, knee, and ankle servos. A 45° knee flexion would require a 22.5° flexion in the hip and ankle to keep the leg balance good enough. So this would mean to set:
- Goal Position to 1536 (=2048-512) for servo 11 (hip).
- Goal Position to 3072 (=2048+1024) for servo 13 (knee).
- Goal Position to 2560 (=2048+512) for servo 15 (ankle).
When I tested the servos with the SDK , they move very fast to a Goal Position. This is way too fast to move the leg’s knee for example. Going through the MX-28T specs, the PID controller is initialized at power on as a simple proportional controller (registers 26, 27, and 28), I won’t change this for now. Register 32 (Moving Speed) sets the speed limit of rotation for the servo, it is set to 0 (disabled limit) at power on. And Register 73 (Goal Acceleration) sets the acceleration limit of rotation, also 0 (disabled limit) at power on.
So after a few trials, I set the Moving Speed to 35 for all servos except the knee with a Moving Speed of 70. And I set the Goal Acceleration to 2 for all servos except the knee with a Goal Acceleration of 4. I also bent the joints 1/4 more to further lower the leg.
This crude, ‘uncontrolling’, and feedbackless test program actually works quite nice. It loops between both leg’s positions as I press some keystrokes. The leg moves perfectly keeping the upper part fairly horizontal. The source code can be downloaded here.