The robot beeps after receiving the first command from the computer (it is connected via USB) and immediately starts moving to the "station", which is one additional place next to the high rack in which the cars are stored. The station is supposed to be the part of the robot where cars can be inserted and removed.
You can see the whole robot move a little bit to the right and then back again. This is because it is resetting its horizontal position when moving to the station. Simultaneously the "box" moves up. The box is the part of the robot which can move up and down and which holds the cars while moving.
Then the arm reaches out and grabs the car from the station.
In the bottom-right corner the interface for controlling the robot is blended in. This is part of the computer program which is used to control the robot. It also has buttons to connect to and reset the robot, but they are not shown here. I programmed the robot and this program myself using the Java programming language and leJOS. The interface was recorded simultaneously using screen capturing software on my computer.
As you can see, you can click on any place and the robot will move to it. If the left mouse button was pressed, the robot will get a car from this place. If the right mouse button was pressed, the robot will put the car into the selected place and if the middle mouse button was pressed, the robot will just move there.
The car from the station is put into the first place available. Then a sequence of get and put commands is entered. The computer program will save the commands and wait for the robot to finish each command before sending the next one.
The camera angle changes and you can see a side view close up of the grabbing mechanism. The inwards and outwards movement is controlled by the motor on the top and the movement of the "claw" is controlled by the motor on the right at the other end of the arm.
A longer video with better quality is available on YouTube...
It is powered by two medium power function motors. They are connected to a power functions receiver which is mounted at the back of the box and receives its power from a power functions battery box which sits on the base next to the NXT. The NXT controls these motors using a HiTechnic Infrared Link sensor which also sits on the base.
Since these motors can't be controlled precisely, two 24 teeth gears with clutches are used (the white ones which let the axle slip when high torque is applied) and the motors are run a little bit longer than necessary to make sure the end point is reached.
In the first image you can see the motor which controls the claw in the open and closed state. The little connector part sitting on the axle is what blocks the movement of this motor.
In the second image you can see how the ohter motors controls the inwards and outwards motion of the arm.
The base consists of some base plates mounted on train wheels and it runs on two parallel tracks. The first version of the robot used the train motors, but the robot was too heavy and the train motors where made for faster movement, so I had to switch to a different solution. Since I had to also precisely control the horizontal movement, I decided to use one of the NXT motors and racks.
You can see the setup in the third image.
The LIFT system:
The strings that hold the box are the only non lego parts in this robot. I first used two NXT motors for the lift because I thought the box was pretty heavy, but in the final version there's only one and that is enough. The lift system though is not very good I think. When going to the higher rows the box tilts slightly backwards. Also the strings change their length after some time (probably a month) and you have to re-measure the heights of the rows and re-enter them in your program, for the robot to access the rows with enough accuracy.
Also there is a winch for each of the 4 ropes. When the motor axle is disconnected, you can move each individually. You can also lock them with a simple blocking mechanism I build in. This makes it easy to bring them in sync. You can then attach the motor and the connecting axle to lock them together. You can see how this works in the fourth image.
I would try to build a lighter version of the box and a totally different lift system for another robot of this kind.
The RESET mechanism:
To reset the robot first the arm is pulled in. Then the robot simultaneously resets the base and the lift. The base slowly moves to the station until it hits the red bricks at the right end of the track with a touch sensor (the old RCX touch sensors are used). The base is also reseted every time the robot moves to the station.
To reset the lift, the box is quickly moved down until it hits another touch sensor, then lifted up a bit and let down slower for accuracy. The robot is then ready to rumble :)
The STOP button:
One NXT touch sensor is connected to the NXT via the longest cable I could find. If you press it the robot will stop whatever it is doing, so you can stop any program any time, before the robot drives of the tracks and drops from my desk or tries to move while the arm is still extended, because the car blocked somehow. This was very helpful to prevent the robot from destroying itself and while testing my programs ;)
THANKS FOR READING ;)