Asked — Edited
Resolved Resolved by Jeremie!

Dynamixel Plugin Timing Questions

I decided to drive my Robotis Bioloid Robot with an EZ-B4. I removed the Robotis CM350 and replaced it with the EZ-B4. Wiring was no problem. The AX-12s are connected to a 12V supply, the EZ-B4 is powered by a DC converter set to 7.4V. A 6 port expansion hub connected the EZ-B4 Uart (D5) to the signal chain of the 18 servos. My scripts are in: AX-12Test2.EZB The Dynamixel plugin is included. The Initialize Lester script initializes UART 1 to 1000000bd, sets up the EZ-B head and hands servos (not connected), clears all the AX-12 servo speeds (V1 - V18) positions the servos to put Lester in the sit position with arms down, then sets all servos to $speed (set @ 5).

The Auto Position Action 'Arm Swing' is set to repeat. Frame arm 0 has the arms down, frame arm 1 has the arms out, and frame arm2 has the arms up. I have a serious timing problem. When I Execute Arm Swing, the arm up/down motion is very erratic. Here is a video: Arm Swing The scope traces show the EZ-B commands at 3.5V peak and the AX-12 responses at 5V peak.

BTW - Reference my thread: Interface Ez-b To A Trossen Robotics Hr-os1 Biped Robot


ARC Pro

Upgrade to ARC Pro

Become a Synthiam ARC Pro subscriber to unleash the power of easy and powerful robot programming

#17  

Testing of the Dynamixel Plugin

AX-12 Test: Dynamixel plugin init script: Initializes UART 1 to 115200bd Vertical Servo: Moves servo V1 (right shoulder) Horizontal Servo: Moves servo V2 (left shoulder) Results: Works very well. AX-12Test.EZB

AX-12 Test 1: Dynamixel plugin Initialize Lester: Initializes UART 1 to 115200bd, sets V1 to V18 servo speeds to 0, sets servos to 'sit' position with arms down and sets all servo speeds to $speed
Auto Position: Only arm servos.
Frames; arm 0 - arms down, arm 1 - arms out, arm 2 - arms up Action: Move arms from down to out to up. Results: Erratic operation. Initialize Lester did not always set each servo, action movement very erratic.. AX-12Test1.EZB

Ax-12 Test 2: Dynamical plugin Initialize Lester sit: Initializes UART 1 to 115200bd, sets $dly to 10, sets V1 to V18
servo speeds to 0, but with $dly between each step, sets servos to 'sit' position with arms down with $dly between each step, and sets all servo speeds to $speed with $dly between each step.
Auto Position: All servos.
Frames; arm 0 - 'sit' position with arms down, arm 1 - 'sit' position with arms out, arm 2 - 'sit' position with arms up. Action: Stay in 'sit' position,' move arms from down to out to up. arm 0: Sets each servo to 'sit' position with arms down with $dly between each step. arm 1: Sets each servo to 'sit' position with arms out with $dly between each step. arm 2: Sets each servo to 'sit' position with arms up with $dly between each step. Arm Swing: Repeats ControlCommand calls to "arm 0", "arm 1", arm 2, "arm 0", $i times. Results: Initialize Lester seemed to work most of the time. Auto Position movements are very erratic. Operation with 'Arm Swing" is much better. It works most of the time. Still some skipping and erratic positioning. AX-12Test2.EZB

Notes: I named a frame STAND and now I can't delete it. Don't know if there might be hidden problems.

There is no servo feedback. When I 'initialize' all the servos, I am not sure all of them will work correctly. Because of the 'most of the time' correct movements, I can't rely on getting a reliable "Stand" set of movements. If one servo doesn't work correctly, Lester falls or a servo goes to an unintended position.

For some reason, Robotis building instructions set V7 and V8 at 45 degrees. These are the hip rotate servos and if I try to use 'Configure' to trim the positions, the hip servos are driven to 90 degrees which bangs them into each other and causes both of them to overheat and shut down.