I just completed the development of my latest Arduino project. After a tour of an automotive manufacturing facility in Sweden this past summer, I decided to interface an Arduino with a robotic arm. To make this enjoyable by everyone, I decided to develop a web interface for the arm so that everyone could try controlling it!
The arm is a Lynxmotion AL-5D. The Arduino is an Uno with an Ethernet shield.
The arm has six servos which are controlled by an SSC-32 servo controller.
Only one user at a time may control the arm. Others may watch until 90 seconds have passed, at which time they can try to control the arm. This is all controlled by the Arduino.
The Arduino code uses forward kinematics to prevent the user from trying to stick the arm through the floor (and thus damaging the servos).
The arm is operational from 7:30 a.m. – 8:00 p.m. Central time. This is so my kids can sleep since the servos make noise.
The Legos came from my kids, who voluntarily gave them up for this project!
Note: The arm is scheduled to reset on periodic intervals so it does not consume power all day. I try to be somewhat conservative in my energy consumption with my projects. If it resets while you are using it, just turn it on again and keep going.
Lots of fun, but it seems like the grabber servo isn't working! I so carefully moved the arm exactly to pick up a brick, but then the hand doesn't grab it! Noooo!
Alligator:
The Arduino code uses forward kinematics to prevent the user from trying to stick the arm through the floor (and thus damaging the servos).
Not sure if it is working like you planned it to do, but I tried to grab a brick, and it looked like it hit the table, and kept pressing on it. (this was with the gripper pointing vertical down to grap a brick from above)
Sometimes it also would not move in one direction, until I pressed the opposite direction once, then tried to go to where I wanted to go in the first place.
Have you thought about putting inverse kinematics in? Might be even easier to use the arm then.
But all in all, a fun project I am currently working on something a bit like it, just with the cheaper arm with DC motors, so I have to first find a way to attach some variable pots to find it's position, then figure out how to control the motors, and then figure out how I want to tie it all together in the end.
Yes, it is possible the code still has some bugs in it. I tried to prevent the arm from being broken or strained. When the arm doesn't move as commanded, it may be due to a couple of reasons: (1) a predetermined limit has been reached (to prevent cables from being pulled out); or (2) the code for the web site did not accept the command because it was received too quickly after the last command (to prevent the Ethernet shield from crashing). If anyone sees problems with the code, feel free to point them out and I'll try to implement a fix.
I did try inverse kinematics, but having a user command the arm with coordinates (x, y, z) just wasn't as fun. I tried to make this as simple as possible.
I played with this thing yesterday - picked up a brick, moved it, then dropped it. I turned the laser on/off, and measured distances. Pretty cool, overall.
It reminded me of an experience I had a long, long time ago, when the web was still young. Back then, interfacing things to the internet (and web cameras!) was a fairly new experience (anybody remember the coffee pot?). One university (can't remember where it was located - I want to say Australia?) had a similar setup as yours - except their robot was a full-sized industrial robot; IIRC, you could play around with wooden blocks, and the image from the camera wasn't streamed, it was a meta-refresh instead.
Thanks for letting me re-live that experience, even if it was a scaled down form - I had fun!
Got to play with it for a minute... awesome work! Reminds me of someone on here who did a tank that you could drive around his house with a webcam. About how long do you think it took to complete?
alexhb:
Got to play with it for a minute... awesome work! Reminds me of someone on here who did a tank that you could drive around his house with a webcam. About how long do you think it took to complete?
That was me who made that I am actually working on a new version of it... but the project is standing a bit still...
Yep, your tank was part of the inspiration for setting up the camera and putting this online. I enjoyed using your tank.
My project took about a month and half, but I couldn't work on it until the weekend each week. Putting the arm together was easy, but programming the Arduino to remove all the bugs (which are still not all eliminated) was the hardest part. The Internet is a step up for me since I've never used an Ethernet shield before.
Update: I had to take the arm offline for a while until I can find a way to fix my bandwidth issues. I've served up ~75 GB of video from the Axis camera in the past two days. Ouch. I can't afford to have my ISP drop me because of excessive usage. In the meantime, if anyone knows how to stream directly from an Axis camera from one to many (using a streaming service), please let me know!