all but red and green colors.
Like many others, I have
a man-child obsession with
building a robot that is capable
of fetching me a cold adult beverage. I soon learned this was
much easier said than done, but
I had to start somewhere. The
basis of locating specific physical
items within an environment is
known as “object tracking,” and
can be done a few different
ways. The easiest way for me
was to implement colored object
tracking. The concept behind
this is fairly simple: RGB color
filters are applied in Roborealm
to remove all but a specific FIGURE 5
color. I had a red ball handy that
proved itself to be an excellent
prop for this. To remove some
background noise, I applied a mean color filter which essentially blurs the image. Roborealm also has a very handy center
of gravity (COG) filter which places a box around the largest
concentration of same color pixels on the screen, and outputs
an X,Y coordinate of its location. The SSC- 32 servo controller
has an interface module that can be added to the pipeline,
allowing variables to be assigned to different channels.
Lastly, there is a VBscript module that provides a simple
programming interface to tie all of the variables together.
I created a program that tracks various colored objects
using the pan and tilt head of my robot. Figure 4 shows the
VB code I used; the entire .robo file containing all pipeline
settings is available for download from the SERVO website
( www.servomagazine.com). This program works by
filtering out everything but a specified color, placing a COG
box around the mass of same colored pixels (the object),
and the VB code reads the X,Y coordinates of the COG
module and translates those into servo positions on the pan
and tilt to keep the object in the center field of vision. I
have a video hosted on You Tube showcasing this object
tracking ability at Robogames 2008, found here:
www.youtube.com/watch?v=GfMCaaePFBw. Figure 5
shows what my RDP session looks like when piloting my
robot around the house via telepresence.
The next step for me will be experimenting with object
chasing. I can easily track the size of an object using
Roborealm, and have been somewhat successful in being
able to drive towards the objects, but I still hit a lot of
walls. I’ve seen some work done where Roborealm can
draw lines at the floor to ceiling junctions and use those to
avoid running into walls, so implementing that will be the
logical next step.
the possibilities of PC-based robotics. As my own
programming knowledge grows, I think my robot’s
potential will grow exponentially, as the ceiling of possibility
is nearly limitless with this much computing horsepower at
my disposal. While it’s hard to sum up a year long project
in only three short articles, I hope that some of what I
learned in the process can be passed along to others. I
think the biggest thing I’ll take away from this project
is that we can’t always hold on to what is comfortable.
Microcontrollers are still great tools but they are severely
limited in what they can do when compared to a PC-class
processor. Start thinking of them as complementary
electronics to a larger, more powerful system and you’ll
be surprised what solutions become available to you as
an experimenter.
Welcome to the realm of PC-based robotics! It’s here
now and is the future of our hobby. For updates on the
progress I make with this project, visit my project page at
the Trossen Robotics Community. SV
References
VIA Pico-ITX Page
www.via.com.tw/en/initiatives/spearhead/pico-itx/
Roborealm www.roborealm.com
Cepstral www.cepstral.com
Lynxmotion SEQ www.lynxmotion.com
My Project Thread
http://forums.trossenrobotics.com
/ showthread.php?t=1312
Conclusion
I feel that my project barely scratches the surface of
My Blog
http://forums.trossenrobotics.com/blog.php?u=1492
SERVO 11.2008 55