AX-12 Robot Arm

Introdution:

This is my competitor for the LMRv4 Donor Appreciation Robot challenge. Using 5 Dynamixel AX-12+ Servos and an Arduino Mega. Programming has been done through Pypose, part of the Arbotix project.

Hardware:

5 Dynamixel AX-12+ servos has been used to build the robot arm and gripper. The arm has 4DoF and the gripper 1DoF. An Arduino Mega board has been used to control the servos. Only UART1 (RX1,TX1) are needed to control all servos. No external hardware is needed to attach the servos. The gripper is made by a claw from the local home depot. The idea has been lent from the Make project Teleclaw.

Software:

There is no real programming needed. The Pypose sketch from the Arbotix project has been used without any modification. You can create poses very easy using the Pypose editor. Also sequences (running different poses time controlled) can be created with a few mouse clicks.

Update 2012-04-30:

This is my actual setup. Nothing has changed on the robot arm. A bowl with 140 wooden dowels has been used for a sample drawing. Each dowel will get a unique number from 1..140 or whatever the actual number of contributors is. No detection of invalid drawing so far (if the gripper gets none or more than one dowel). The robot arm is doing some kind of stirring now, before the drawing. But it doesn't work well, the bowl is moving more than the dowels. The 2nd video shows a sample drawing 5 out of 140. It takes 7 attempts to complete. 2 failed attempts.

Sample numbering of a wooden dowel.

Update 2012-05-04:

The winners of the LMRv4 donation marathon has been drawn. I couldn't show the drawing live at the RobotParty, but a prerecorded video has been showed during the hangout. Spacial thanks to Andrew 'inoblegnome', Erin 'RobotGrrl', Nils 'NilsB' for their efforts and all others that gave me great tips to complete this challenge.

Draw numbers of the winners of the LMR Donation

  • Actuators / output devices: 5 Dynamixel Servos
  • Control method: remote
  • CPU: ATmega1280
  • Operating system: none
  • Power source: Power supply
  • Programming language: C++/Python
  • Sensors / input devices: none
  • Target environment: indoor on smooth surfaces

This is a companion discussion topic for the original entry at https://community.robotshop.com/robots/show/ax-12-robot-arm

Nice arm!To use it to select

Nice arm!

To use it to select winners from the LMR fundraising donors, would you number the pegs 0 through 9 and select a three digit number one digit at a time? Or what?

we made a arm too buddy but

we made a arm too buddy but it was awesomely powerful and less comples using servo motors

 

Will you participate in the

Will you participate in the challenge?

No I have 240 wooden dowels,

No I have more than 200 wooden dowels, each will get a unique number.

Nice gripper (remaind me on

Nice gripper (remaind me on mine a while ago) and robot arm :slight_smile:

Thank you, Markus. I have

Thank you, Markus. I have lent the idea for the gripper from the Teleclaw robot. Just saw your gripper with the light barrier. That brings up a new idea to sense that the gripper has caught a dowel.

Maybe a small potentiometer

Maybe a small potentiometer could do the job as well. If the gripper moves out of the bowl and is still in a certain opening position, it has caught a dowel.

Very nifty little arm, great

Very nifty little arm, great work!

This is looking great!A low

This is looking great!

A low tech fix for the mixing is to secure the bowl to the table with double sided tape or something similar.

Nice!

Cool idea to select winners!

Nice work, RobotFreak - very

Nice work, RobotFreak - very “robot”, very fantastic, way cool :smiley:

Nice work RobotFreak, that

Nice work RobotFreak, that gripper looks really good.

I see you’re communicating to the servos directly from the Arduino - how did you go about connecting the RX/TX lines together for the half duplex mode?

Thank you Telefox. The RX/TX

Thank you Telefox. The RX/TX lines are simply tight together. The Arbotix firmware is doing the job to disable the UART transmitter after sending the data to the servos. Because the servos act as slaves they will never send any data without a request from the Arduino. That works great without any issues. But there must be done a simple modification on the Arduino core library to make the UART receiver work at 1 MegaBaud.

Beautiful arm!

That is one elegant arm! One very nice electro-mechanical design. Its good someone knows how to do that (I don’t!)

Just one question. Why didn’t you use a FEZ controller? You said your system doesn’t need programming (an excellent reason to use the systen you did), but just imagine what a FEZ based system could have done. (Something to think about in the future.)

(Hey, its  you guys that turned ME into a FEZ fan, and I am sure glad you did!)

Thanks. Maybe there is a

Thanks. Maybe there is a misunderstanding. The term no programming needed means, that I don’t have to write a program by myself. You will need the Arbotix firmware which includes a sketch for the Arduino to make it work. These sketch works out of the box without any programming. It is just a router for the messages from USB serial to Dynamixel serial.

Not sure if this will work on the FEZ too. You ill need to rewrite the Arbotix library to run on a FEZ device. One problem I see is a proper way to disable the UART transmitter after sending a request to the servo. In Arduino language this is easy, because you have full access to all UART registers. On FEZ side this is hidden by the NETMF framework. You can disable the transmitter, but you don’t know if:

  • all bytes where send
  • how long it takes to disable the transmitter. If the servo responds too early, this could fry your transmitter pin. Or at least you will need some extra hardware.

 

I never knew…

With all that, I would definitely stay with the hardware you are currently using. 

It is one awesome looking arm (better than I have seen in kit form). Great job!

(I just hope you can get back to a FEZ project soon! More of us are becoming FEZ users and you help to make a strong group.)

 

 

For this project, the

For this project, the Arduino Mega is the best choice because of the limited time I have. But it’s good to know other controllers.  Who knows, for the next project FEZ device could be the better choice.