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

Get access to the latest features and updates before they're released. You'll have everything that's needed to unleash your robot's potential!

PRO
Canada
#1  

@OldBotBuilder do you have any pauses between your frames? Have you left enough time for the frame to execute and the servos to arrive in their position?

The voltages are correct, the ez-b has 5V tolerant inputs and they output 3.3-3.5VDC at most. The dynamixels will respond to a TTL high signal as long as it's 2.7V or above. (That's how the Atmel microcontroller inside of it operates)

#2  

@Jeremie, How do I create pauses between frames? I'm sure that is what is needed. Is there to be a tutorial on Auto Position that explains the different time,g parameters with examples?

Thanks.

#3  

@OldBotBuilder.... You use pauses or sleep commands when you use "actions" which as you know are just a bunch of frames strung together... When you add a frame to an action you can add a pause after it before adding the next frame....

#4  

Thanks Jeremie and Richard. I found that the timing issues were more severe than I thought. I hope to have more information and examples that I can post soon.

PRO
Synthiam
#5  

Timing is instant for the UART data to be transmitted from the EZ-B. However, there is always lag time on the WiFi, but that lag is usually in single digit milliseconds on a local network - specifically on in AP mode.

What could be happening is UART signal interference. The UART Baud Rate of the servos is 1,000,000 bps, which will introduce radio interference AND be affected by radio interference.

This interference would prevent the Dynamixel Servos from decoding the UART data, because it will appear as jibberish and will be ignored. This can be caused by a few things...

  1. Lengthy wires
  2. Straight wires not twisted with a ground line
  3. Poor connections/adapters (i.e. pushing pins in plugs, and not soldering)
  4. electrical noise on GND line. Is there servo connected to the battery directly? Those dynamixels draw a lot of current. It would be best to connect their VCC and GND to the battery directly and not through the ez-b v4
#6  

DJ, Thanks for your interest and input. Quick response: I am using the same wiring distribution as the Robotis Bioloid. The Robotis wiring uses straight wire cables. Maybe like I2C? I have not found any poor connections. I have looked at 'GND' at various locations on the 'bot and EZ-B and found no noise. The 12V to the AX-12 distribution is direct from the power source.

I'll have specific data soon.

PRO
Synthiam
#7  

Can you set each servo to use a lower baud rate? I have a feeling it's timing related and the servos are skipping packets.

It is not I2C, it's UART which is a TTL Serial communication.

I'll take a look at the dynamixel plugin and see if i made it to configure the baud rate. if not, i'll update it for you.

PRO
Synthiam
#8  

Get the latest dynamixel plugin: https://synthiam.com/redirect/legacy?table=plugin&id=39

You can select the baud rate that the ez-b will communicate with the dynamixel

Also, ensure your dynmiaxel servos are configured for the baud rate that you specify

I suggest a baud rate of 230,400 or 115,200