
Sudo
PLEASE NOTE: THIS GUIDE IS OUTDATED. BADLY. (remind me later to fix this and spiff it up a bit, please)
So, you finally have your EZ-B v4. You love it already, and you're ready to hook this baby up to some sort of Dynamixel powered creation. You go to plug everything in, and - wait. You have no idea how to set those Dynamixels up.
Well, I do, and I'll show you how.
SECTION 1: GETTING TO KNOW DYNAMIXELS
Dynamixels are intelligent servos that can track not only position, but temperature, speed, and load. The servo can automagically shut itself of incase of a failure. These servos are also incredibly strong. But there's one feature in particular that is useful, but at the same time a little hard to wrap your head around. In this section, we will cover daisy chaining and other features of the AX-12A Dynamixel; however, most of the servos in the Dynamixel family work exactly alike, so this guide can help you with most models.
On the back of all of your Dynamixels, you will notice a couple things. A place for a bolt, a light, two wire ports, and the ID. Lets go over all of them so you know what they do:
Light - Blinks once when turning on. If the light is flashing, there is a failure of some sort.
Screw hole - Allows you to attach the Dynamixel to a bracket.
Wire ports - Allows you to connect to other Dynamixels, in a long strand of servos, both to and from other Dynamixels. This means both ports work the same way, which means it doesn't matter which side is plugged in. (see image below)
ID - What the EZ-B and ARC address the Dynamixel as.
PART 2: CONNECTING YOUR DYNAMIXELS TO THE EZ-B
All Dynamixels must plug into port D5 in order to properly work. This means that all of your Dynamixels must plug into one port. If you have more than one strand of connectable Dynamixels, you will have to use a Dynamixel splitter hub, like this one here:
You can either run a cable to the EZ-B via a power base or via the powered splitter. I advise that you use only one, as using both at once can brown out the EZ-B.
Q: So, now that that's done, what power supply do I use? Mains or a battery pack?
A: Both will work just fine. Just make sure you have an adequate power supply at around 10v.
"But wait!" you scream. "Dynamixels can run at 9v-12v! Why 10v?"
Because voltage is gradually lost over time depending on how many servos you're running at once, as well as when the EZ-B is powered on. The more servos you have, the higher you should up your voltage to get a steady 10v overall.
So, if you have power running to the EZ-B, Dynamixels set up to port D5 (as well as the optional splitter) you should have something resembling this:
Now that you're powered on, lets move into ARC and get your Dynamixels running.
PART 3: OPERATING THE DYNAMIXELS WITH ARC
Connect to your EZ-B as usual (We won't be covering connections in this guide). Bring up a servo control panel and go to the servo configuration screen as shown below.
Click the Dynamixel box and scroll down until you see the ID of the Dynamixel you want to move (the ID on the back of the servo). In this demonstration, we'll be selecting Dynamixel AX18.
Select it and save the configuration. Congrats, you just set up your first Dynamixel in ARC! It should operate just like a normal servo. This applies to all servo control functions.
PART 4 (EXTRA): ASSIGNING A NEW ID TO BLANK SERVOS
When you buy a Dynamixel that doesn't come in the kit, the ID sticker will sometimes be blank, which means it hasn't be assigned a "real" ID. However, a tool in ARC can give Dynamixels a new ID.
First, open up the Dynamixel Config. control in ARC. You should see something similar to this:
All blank servos are assigned ID 1. If you have a dynamixel with the ID 1 already, remove it before you proceed. Simply choose the new ID you want (in this case, AX18) and press execute. ARC will assign it a new ID. That's it, you're done! You can also write the ID on the blank tag if so desired.
GUIDE LAST UPDATED: 12/9/2014
D5 is the TX pin for UART1, but what I am mentioning is that while D5 is being used to send Dynamixel commands, it's not in UART1 mode.
Edit: Had to fix up my wording a bit
@Jeremie,
Are you saying that all the UART issues have been resolved?
Or is this still the current status:
By @mtiberia and @DJ @Sures Posted 1 month ago
"It's a giant fix because it exposed an issue that I wasn't aware of with the variable manager. It is being fixed - but requires a giant rewrite of some of the ez script compiler. It'll be another week or so"
I would like to utilize the UARTs 0 and 1 to talk to and from the "Communications Port" on my CM-530 Robotis controller. I don't want to waste another month of frustrated effort like the last one.
Well I've brought a CM-530 controller home with me this weekend, i'll see what I can do.
What was the context of that quote? Maybe you could add a link to it.
@Jeremie,
If you can look up my threads you'll be able to follow the issues regarding the following two issues with EZ-B:
1: Controlling the Dynamixel servos with ARC controls
2: The UART ports on the EZ-B
ITEM #1
Found this issue with ARC that really makes using the Dynamixel servos impossible with EZ-B and actually screws up their settings and I wrote an EZ Script script to fix the problem, unfortunately not before OldBotBuilder spent a lot of time and money trying TO FIGURE OUT WHAT WENT WRONG.
Posted 1 month ago
I've been using a different controller and python to control my dynamixel servos. I really want to use the EZb and its software so I connected everything up to my EZb and just wanted to use the basic scripting to control the servos.
Found a couple of issues that may cause DJ some headaches when he wants to add more controls to take advantage of the capabilities of this digital servo.
Issue #1 : You set the status for table entry # 16 to 1 " No Return " . With this setting you can send instructions to the servo but you'll never get any data from them. It should be set to 2 " Read Only", this way if you send a command for a servos position, temp, torque etc, it will answer back with the data.
Issue #2: Your using table entry # 34 to control the servo speed, it should be table 32. Table #34 controls the torque limit of the servo. On your work bench it may look like your controlling the speed but add a load to it and you'll find that the servo will stop or dance the jitter bug! This setting is good if you want to experiment with joint compliance when reaching your goal position.
Regards
ITEM #2
You can't send or receive unsigned integers, bytes or HEX 34, 40 and 92 or WHATEVER YOU WANT TO CALL THE DATA ! .
Sorry for yelling, but this is really basic stuff. Any micro controller should be able to send unsigned integers 0 to 255. Please, please, please ,connect TX to RX on any UART port on the EZ B and try to send unsigned integers, Not TEXT, but unsigned integers.
Again this is basic stuff and if it was working properly we could communicate with ANY micro controller not just the one inside the Dynamixel.
Frustrated Beyond Frustrated
@mtiberia'
Thank you!
I also have a project on hold due to Dynamixel problems.
@mtiberia'
Does ARC set the Dynamixel Servos to "No Return" only if you set them up with ARC or does it do it as part of just sending data to them? I set my Dynamixel up initially with a separate controller and have been trying to talk to them with ARC. I switched to ARC after realizing how hard it was to right all of the control code myself.
The main issue that has put my project on hold the most is the "control the servo speed" using the "torque limit" instead of "controlling the speed".
The other thing that has also bugged me is a somewhat intermittent control issues. I believe this is also one of the issues that is bugging DJ Sures.
Keep hoping to hear there will be fixes soon.
Just wanted to say thank you to @mtiberia and @OldBotBuilder as well. Sometimes these things get lost in translation. I appreciate you summarizing it for me, it saves me a lot of time search through threads.
At ezrobot we are still fairly fresh with Dynamixels, so we appreciate your feedback and investment in resources to help us do our best on our end. With your help we should be able to get this stuff figured out, or at least understand our limitations. We pride ourselves in being a Robot company that is constantly growing and improving, without your valued feedback that wouldn't happen. I think you can see by our track record of software updates that we are true to our word.
I am a little frustrated myself, with the CM-530 that is. I spent a good 4-5 hours trying to get FTDI drivers to work with my Win8.1 laptop, finally got them installed and the CM-530 still didn't work. I finally had to go back to a WinXP laptop to actually use the thing. I did verify a loss of address on our dynamixels as well. I'm still looking into it a bit more with the info you've provided.
You guys get your CM-530 to work in Win8.1?
I am also going to look into the UART situation and see if I can replicate the issues with those specific values.
On a more of a minor note (because less people are working with the Roombas, than Dynamixels) a fully functioning UART would really help us guys too...
Thanks @Jeremie