Robot Arm : Phase 3 - It's stable !
Posted 7/12/2009 by Emil Valkov
The main problem in the last version was keeping track of my blue points. The initialization code I had in phases 1 and 2 is no longer needed now. Instead I added 2 extra blue points. This gives me more information about the structure of the arm, and allows me to identify the points using only a single frame.
With the old solution I had to slow down the motor movement so that the points wouldn't move too fast, and could still be matched from frame to frame. Now, all the information to identify the points is contained within a single frame, and the motors can move at full speed.
This version no longer tracks a virtual target 2 inches above the target. Instead it now simply points at the target.
Here's a video of the new version in action.
The arm had many of hardware upgrades this time around. Most of the erector set parts were replaced by LynxMotion servo brackets.
Also the cameras are now Philips SPC 900 NC, which offer better image quality, and a stable latency.
And finally, the little blue squares have been replaced by blue pompoms, so that we have a 3D shape that doesn't change when viewed at an angle.
I ran into an issue with my Philips cameras; connecting 2 cameras to the same computer lead to strange results, often ending in a blue-screen. So I now use 2 laptops (one per camera), and RoboRealm running on each. The program controlling the Arm just connects to both instances of RoboRealm through its API, and combines the data gathered.
You can download the .robo file I used here.
The same file is used on both laptops.
Now that speed and stability have increased there are two ways to go forward.
I can increase speed even more, for even faster tracking. But to achieve this, I need to reduce camera latency, which is not that easy to accomplish.
Or I could try and make it do something more useful than just tracking a target. The low torque servos I'm using here limit my options, I'm not sure they can handle the extra weight of a gripper and its associated servo.
You'll find out which way I'll go in Phase 4 of course...