|
Cooperative Cybernetic Crate Contraption
In June of 2003 SMART put on a massive display of robots at a local shopping
mall. After the show a few of us got together for dinner to decide what would be
cool to do for our next show. Instead of dozens of individual robots, we wanted
something where many robots interacted with each other and their environment.
After discussing several possibilities, the idea we settled on was to have
robots that would move crates around a layout. The crates could be empty or
contain either of the mini Lego balls (soccer or basket). We called it the
Cooperative Cybernetic Crate Contraption.
Once we had a standard crate size worked out, we had a couple of brief
conversations about what sorts of robots each of us would build, and for a while
that was the only communication we had! Our idea was ambitious to say the least:
we wanted to build a bunch of robots that cooperated with each other, without
planning that cooperation out in detail ahead of time!
Finally in August, four of SMARTs long time members (Mark Kenworthy, Gus
Jansson, Barton Place and David Schilling) got together again to see whether we
were still on the same page, and to plan for two great opportunities to show the
display: at the end of September the Lego Road Show would be in Seattle, and the
following weekend, NWBrickCon would be happening. There was still much to do as
no one had much more than a prototype or two built. We decided that wed get
together once each week until the first show. Our progress over the next couple
of weeks can be see here:
http://www.brickshelf.com/cgi-bin/gallery.cgi?f=55847 -- warning, these are
very large pictures, 500K each!
One thing that we decided on pretty early was that there would be no
communication between different robots so that things would be as robust as
possible. Having messages from 12 or more robots flashing around would mean that
almost certainly messages would be lost or misunderstood. So robots had to be
able to sense their surroundings to determine what was there and how they should
act. Later we modified this very slightly so that the Train stations could
communicate via light sensors with the robot servicing the station.
The time for the shows came faster than we thought was possible. At the Lego
Roadshow we had six robots running in a pretty tight space. The following
weekend, at NWBrickCon we added the rest of our robots to the display for a
total of twelve RCXs! In both cases the layout was bounded by Lego train track.
We did this for two reasons. First of all, one of us wanted to build robots that
serviced crates that were delivered on a track. And after thinking about balls
rolling around everywhere by accident, having a track on the outside of our
layout meant that they would at least not be rolling around on the floor much.
The Lego Road Show
The Crate Contraption was just part of a larger layout for the Seattle Lego
Roadshow. The whole
layout was three levels, with the robots being on the lowest level. The next
level up, a space display flanked one side, and a castle display flanked the
other, both done by SEALUG members. Finally right above the robot display,
covering much of it was a train/town display by PNLTC. Several comments were
made about the robots underground, Metropolis, or Eloi and Morlocks :-)
The Road Show
layout for the Crate Contraption was as follows: One end of the layout had a
dumper that would take full crates off the rail line, dump the balls into a
hopper, and then return the empty crates to the train car. The balls would go up
a ramp and be dropped into a pneumatic combiner. This was essentially a shovel
that scooped the balls up, and dropped them again. A small fraction of these
balls would roll down a ramp and drop into a waiting, empty crate. Gus Forklift
would take an empty crate, swap it with one that was now filling, and take the
full one to the other end of the table. At the other end of the table was an arm
that picked up empty crates from the rail line, put them in a waiting position,
and would take the full crates that the forklift was delivering, and place them
onto the train car. The forklift, after dropping off the full crate would pick
up the empty one to start its loop over again, while the train car with a full
crate would head off to the dumper to start that loop again.
There were a lot of problems that our robot display encountered that weekend,
mostly because Seattle was having a mysterious lack of clouds that weekend. As
if it wasnt enough that we had sun, because of the layout, there were sections
of the layout that were in the shade. A light sensor used to track a line
doesnt work too well when you ask it to follow a black line on a white surface
when parts of that surface is in the sun, and other parts are in the shade. This
far north, and this late in the year, the sun also was quite low in the sky,
making impromptu shrouds less than successful in dealing with the situation.
Nevertheless, we managed to have the display working pretty well by the second
half of the second day, and most of the third day, but there were lots of little
problems even then.
NWBrickCon
The second show we did was the following weekend, for NWBrickCon. To our initial
dismay, the request that we not be anywhere near the windows was lost, and our
display ended up right beside the windows. Fortunately the weather cooperated
with us this weekend, and we had lots of clouds, a little rain. And best of all,
we could close at least some of the curtains to block the more direct light that
would mess up all the light sensors again.
This time we had enough space to display all the robots. Heres the NWBrickCon
layout. There were three main loops in the display. The smallest one was Gus
forklift taking crates that the pneumatic combiner filled and dumping them into
the sorters pitcher. The sorter then sorted the balls into two crates, one
for basket balls, the other for soccer balls. The basket ball crate was picked
up by one of Marks forklifts, brought to the Arm, which placed the full crate
on a rail car. The car was emptied by the Dumper at the other end of the
display, and empty crates sent around to the arm again. The soccer ball crate
was picked up by a second, identical forklift of Marks, brought to a crane,
which also put the crates onto a rail car. Since there was only one loop of
track around the layout, but two different places where full crates were placed
on the track, to prevent a waiting state should one loop pause, there was one
additional robot that managed a switch, and monitored the two lines, keeping
the two stations serviced with cars.
Here are four Overview videos showing the whole layout in action. The first
three are normal speed, the last one is sped up by a factor of two.
Overview 1 - 7.8Mb (length:
0:29.5)
Overview 2 - 13.7Mb (length:
0:52.0)
Overview 3 - 6.4Mb (length:
0:24.2)
Sped up overview - 20.4Mb
(length: 1:16.7)
(If you need to download the DivX codec, <http://www.divx.com> will have it -
either click on the second tab DivX or on the red Download now button
on the flying cow ad. Under the comparison table is a link to Standard
DivX Codec(FREE). This will let you see the movies in Media Player.)
Robot Descriptions and Videos
What follows is a brief description of the various robots used.
ARM:
The arm was probably the most traditional robot of the lot. It moves crates
between three positions. Like most of the other robots, its program is set up so
that a pretty simple script is written for how the robot is supposed to behave
in a specific layout. The robot knows how to remove a crate from a train car, or
put one back, as well as how to move crates that are placed on the ground. It
can even (we found out accidentally) stack two crates on top of each other! The
robot senses a crate by using a touch sensor at the top of the claw. When
lowering the arm to pick it up, it knows that as soon as the sensor is
activated, its low enough. This same sensor is also used to determine when a
crate has arrived. The Arm must wait for other robots to deliver or pick up the
crates. Since there is no communication by the other robots that this has been
done, every few seconds the arm lowers and rises again quickly. If a crate has
just arrived it waits a few more seconds to let the delivering robot let go and
move away before picking up the crate and moving it to its next location.
Heres a 10Mb video which is 38.6
seconds long showing how the arm operates.
PNEUMATIC COMBINER:
The combiner receives crates of sorted balls, and combines or randomizes them
using a pneumatic driven scoop as well as a specially designed slope. The scoop
moves balls around in the holding area as it wiggles back and forth to get to
the bottom. Then it scoops up a large number of balls, and drops them over a
slope which sends balls in random directions as they roll down, back into the
holding area. A small number of balls are diverted to a waiting output crate,
which will thus contain mixed balls. Four mini pneumatic pumps are constantly
running to provide enough pressure for the large cylinders. This is the only
robot that used a non-Lego sensor, a pneumatic pressure sensor, to tell when
there was enough pressure to continue with its cycle of scrambling the balls.
Here is a 17Mb video which
is 1:04.9 long that shows the Pneumatic Combiner in action.
CRANE:
The Crane performs a job very similar to the robot Arm. It can be set up with a
simple script, as well as with the positions of a couple of white tiles on the
gantry on which it runs. In the configuration we used, it had three positions,
one of which was on a train car, the other two on the ground. The Crane waits
for crates to be removed. It uses a light sensor looking down. Each of the
positions used some retro reflective tape. When a crate covered or uncovered the
tape, it knew that it could continue its loop. Like the Arm, the Crane would
have to wait for other robots to deliver or pick up crates.
Here is a 19Mb video which is
1:13.7 long showing the Crane.
DUMPER:
The Dumper takes a crate full of balls off a rail car, empties it, and puts it
back on the car. The balls all end up in a hopper which feeds the balls, one by
one to a long, sloping conveyor. The balls roll off the top of the conveyor to
whatever the next robot is. In our layout this was the Pneumatic Combiner.
Here is a 12Mb video which is
46.8 seconds long demonstrating the Dumper.
GUS FORKLIFT:
Gus Forklift is a super robust robotic marvel. Fine engineering is always
evident with every robot that Gus creates, and this one is no exception. The
Forklift not only follows a line, picking up and dropping off crates at
indicated locations, it can also lift the crate high up, and empty it by dumping
the contents. A simple script is written for a specific layout that tells the
Forklift which side of the black tape to follow, and what to do at each marked
spot. Three light sensors point down. One watches for the marks, while the other
two are used for tracking the line, one when driving forwards, the other when
driving backwards! The back light sensor is doubled up with a touch sensor that
measures how high or low the robots forks are. Two motors are used for
steering, leaving only one to lift the crate and tip it when needed. This is one
place where the engineering skill of Gus shows its mark. With the exception of
when the robot was very low on batteries, I dont think this robot ever failed
to function as it was designed -- perhaps the only robot on the display to work
this well. And even the failure with low batteries was very consistent. This is
how well I wish I could design my robots!
Here is a 16Mb video
which is 1:01.4 long showing the genius of Gus Forklift.
MARKS FORKLIFTS:
Mark built three identical Forklifts of which two were used in the large layout.
The third was a hot standby used when the batteries were changed on one of the
other two. This Forklift used tank treads for steering. It also followed a line
with marks to indicate where actions were supposed to take place. Again a simple
script was written for each layout to determine what the indicators meant. These
robots were simple and elegant, and did their job well. The forklifts, (Marks
as well as Gus) were the workhorses of the display, the most interesting thing
to watch. And other than the rail cars, were the only mobile robots we had.
Perhaps this will be an area where some other robots can be built for future
shows.
Here is a 16Mb video
which is 59.7 seconds long showing the other two work horse robots in our
display.
SORTER:
The Sorter took a random stream of soccer and basket balls as input and sorted
them. The basket balls would roll down one ramp and the soccer balls down
another. Distinguishing between the two balls is quite difficult with a Lego
light sensor. The soccer balls black and white spots are respectively darker
and lighter than the basket ball. To sort them the balls need to be rotated as
they are being examined. A pulsing of bright/dark/bright means that this is a
soccer ball. No pulsing usually means that its a basket ball. But sometimes as
a soccer ball is rotating, it will line up exactly so that no black spots fall
under the sensor. So occasionally a soccer ball will end up in the basket ball
crate.
Here is a 9Mb video which is
35.3 seconds long of the Sorter.
TOSSER:
The tosser isnt really a robot as it doesnt use an RCX. It takes a hopper full
of balls, and tosses them, one at a time, into the next robot in line ... the
sorter in our big layout. (For a video, see the red gizmo in the Gus Forklift,
and Sorter videos.)
TRAIN STATIONS:
The Train stations are pretty simple robots. They consist of an RCX, two
isolated sections of track, and a touch sensor. Their job is to stop a rail car
at an exact spot so that other robots can remove or replace crates on them.
Also, they need to queue up waiting rail cars in case more than one shows up at
a time. Hence the two sections of isolated track -- a short one immediately at
the spot another robot will service a car, and a longer one for queuing waiting
rail cars. The train station was the only exception we had to our no
communication with other robots rule. They would communicate via light sensors
with the robot servicing the station. Im not sure if this has been done before,
but the basic idea is to put two light sensors head to head inside a little
box to block off ambient light. You can signal the other RCX by changing the
light sensor from active to passive for a moment. The LED will turn off, which
can be detected by the other RCX. One bit of data can be sent either way. Slow,
but for the train stations it worked great. The RCX monitoring the rail line
would signal when a car was available, and the servicing RCX would signal when
the car was allowed to leave again. The big layout used three stations: one for
the Crane, one for the robot Arm, and one for the Dumper. (To see a train
station in action, see the Dumper video.)
SWITCH:
The last robot in our layout was also one that monitored the track. Since
there were two places where crates were loaded onto rail cars (the Arm and the
Crane), in order to not have one wait long periods of time, we decided to use
two parallel sections of track. The Switch then kept track of which section had
cars in them, and which sections needed cars. It also kept the cars from
colliding should both stations release their cars at the same time. (No video.)
Finally, if youve read this far, there is a Blooper video. Yes, our robots
didnt function properly 100% of the time. Some times the failures would be
pretty funny. Other times just frustrating. If youre willing to wait for the
download, heres a 26Mb video of most of the accidents caught on tape. Sadly some of the more
interesting ones happened when the camera wasnt on, but thats why you need to
come see the setup in person!
Originally we called the display Cooperative Cybernetic Crate Contraption.
After witnessing some of the more interesting bloopers, we started calling it
the Crazy Crate Contraption!
I want to thank everyone who participated and provided robots for the display,
especially Mark, who built the vast majority of the robots! Thanks!
--
David Schilling
|
|
Message has 2 Replies:
4 Messages in This Thread:
- Entire Thread on One Page:
- Nested:
All | Brief | Compact | Dots
Linear:
All | Brief | Compact
|
|
|
Active threads in Robotics
|
|
|
|