Another possibility may be a platform called NyARToolkit,
available at http://sourceforge.jp/projects/nyartoolkit/
which promises ARtoolkit functionality with Java slowness
and flexibility. Fortunately, our modest needs mean we can
simply use ARtoolkit and do our programming in C.
The software functionality in the ARToolkit is very
sophisticated. It first normalizes and thresholds the image
to convert it to a binary image and then looks for any
square shapes. The pose of the shapes, their position, and
orientation relative to the camera is calculated. The interior
is then analyzed and the symbols inside are recognized.
Once the pose and identity of each marker is calculated, a
transform can be applied to convert "camera coordinates"
into "screen coordinates" so that graphics can be overlaid if
you like.
The Nature of the Swarm
We have heard the term “swarm robotics” bandied
about for some years now, but not many of us are experts
in this somewhat esoteric field of study. There seems to be
a lot to understand, but in reality there are only a few
simple underpinnings that define a swarm.
Firstly, a swarm is comprised of multiple simple agents.
These agents must be able to interact with each other in
some way. If members of a swarm aren’t aware of each
other either through direct communications like sensing the
behavior of nearby members via methods like the
“honeybee dance” or indirectly via pheromone trails or
some awareness of the effect the other members are
producing, then you really aren’t very “swarmy.” Solitary
bees, though similar to communal bees in anatomy, are not
part of a swarm.
Secondly, members of a swarm are elements of a
larger system. If your swarm is behaving well, you gain the
benefits of scalability, redundancy, and robustness. You
should be able to add or remove members of the swarm
and it should still function properly. The collective effort of
all these elements becomes a self-organizing system and
will exhibit emergent behavior. Termites, for example, build
vast homes for their colonies, defend, and forage, though
no single termite is aware of the state of the entire mound.
Lastly, each member of the swarm needs to have:
inputs for positive and negative feedback; a random
element to their behavior; and (to drive the point) be able
to interact with the environment in some way. Each
member in a hive of wasps performs their part — whether
hunting or building. They get their jobs done based on
sensing and reacting to their local environment.
The word of the day: Stigmergy. It’s fun to say,
and it is the epitome of swarminess. Coined by
French Biologist Pierre-Paul Grassé and defined
as “Stimulation of workers by the performance
they have achieved.” Search it up on the
Internet and it should lead you to a lot of
interesting concepts in swarm intelligence.
Figure 3. Four AR markers delineating an arena
with a Zhu Zhu pet inside.
Bringing It All Together
So, what do a couple of crazy roboticists and a handful
of mechanical hamsters do to show swarminess? Scott
came up with a really neat idea that leverages the virtual
nature of the universe we are building. We will make a 4’ x
4’ playground that virtually tilts about its center. Because
each marker — when sensed — conveys its "pose" in three
dimensional space, an arena can be arbitrary. We picked
4x4 for convenience. There will be elements of virtual
terrain that are more or less difficult to traverse, and the
main driving force of the hamsters will be to sense the tilt
of their world and act to bring it level.
In order to promote emergent behavior, positive
feedback and communication will be through the actual tilt
of the world. The hamsters will sense (virtually) the tilt and
through some simple rules, try to bring the world into
balance. Negative feedback will be the improper tilt of the
world, the difficulty of the terrain, and the presence of
other hamsters. Randomness will, in part, be the
mechanical variations of their construction and random
time variations of different mechanical processes that will
be built into the software.
Being roboticists, the notions about feedback and
communication are pretty easy to grasp. We have been
adding positive and negative feedback to control systems
since the days of the vacuum tube. What sounds
counterintuitive at first is randomness.
Randomness sounds bad. How can you control
something that behaves randomly? The necessity is subtle.
Imagine 100 hamsters on this tilting flatland. All of them
can move at the same speed and react the same way to
input. If you inject an error, they all will react in a very
similar way giving the very real possibility that the sum of all
their reactions will result in an overall overcorrection to the
tilt. Compounding this is they will now react to the
overcorrection in unison again. This can lead to harmful
resonances which can destroy the system. Random
responses mean that the time in which any agent reacts
will be slightly different, and the sum of all the agents will
be closer to white noise than a pure resonant tone. SV
SERVO 04.2010 75