Home About Links
Robot Arm : Phase 4 - It does stuff !
Posted 8/23/2009 by Emil Valkov
Contact:
In this phase the Arm is no longer content to merely point at its target. It tracks it, picks it up, and sets it down close by. To achieve this, the software has been upgraded to support sequences of actions.
Here's a video of the new version in action.
Upgrades
Very few hardware upgrades this time around. Adding a gripper would have beeen too heavy for my low torque servos, so instead I added a simple hook.
I also shifted the forearm position a bit, so that all blue pompoms are perfectly aligned among themselves and with the hook.
Vision software
The software has had a radical change in this phase.
In phase 3 I had problems with my Phillips SPC 900NC cameras. The Phillips drivers had bugs making Windows unable to work with both cameras plugged in the same computer. It was a pity as those are very good cameras otherwise.
However the cameras worked fine in pairs on Linux ! So I bit the bullet and ported everything to Linux.
The missing piece was RoboRealm which is Windows only. I turned to OpenCV and cvblob
It's a pity I couldn't use Roborealm, as it's very user friendly. There's nothing preventing me from going back though, because the vision system is completely abstracted. I can still use Roborealm on Windows, and even on linux by calling the api on a remote Windows box. Which I won't hesitate to do on future projects. Actually, nothing precludes me from using both at the same time, and get the best of both worlds!
Command sequences
As I mentioned earlier, the software has been upgraded to support sequences of commands. A command reports success, failure, or in-progress.
  • Success indicates the command has reached its goal. It moves onto the next command.
  • Failure indicates the command has failed, it restarts the sequence from the beginning
  • In-progress indicates the command is still working, and is sending commands to the motors
The commands I implemented are (in sequence):
  • Point: which is what the arm knew how to do before.
  • Hook: move the hook gently to hook the target.
  • Pick up: lift the target. This command can fail, if it sees (literally) that the target is not moving up along with the arm.
  • Center: brings the target close by.
  • Set down: sets the target back on the table. It knows it has reached its goal when the target no longer moves down along with the arm.
  • Reset: to come back to the starting position.
The point command is of course the most important one. It's the core of the software, which I've been working on since the beginning.
The pick up command is much simpler in comparison, but it's noteworthy because it can detect failure. Thanks to that, the arm appears to be more “intelligent” by trying again when the point command didn't quite find the exact spot necessary to hook the target"
Going Forward
Now that I've shown that the Arm can do something useful. I've reached the limits of the current hardware.
To push this further, I need more powerfull motors, to handle the extra weight of a gripper and payload. The extra power is also needed to increase the degrees of freedom, as it would need to handle not only the weight of the new motors required, but also the increase in overall length of the arm.
Also this arm has been stuck on a table since the beginning. To be truly useful, it needs to be set on a mobile platform, which is a whole other project in itself.