The Experimental Robot Platform
The goal of this robot is to give me a platform that is upgradeable and customizable
so that I would not need to build a new robot chassis for each new idea I want to
try out. This robot will never be 'finished', as I'm always modifying and improving it.
I'll post here after each new major change I make.
As such, I will be slowly documenting these major changes over time.
You can keep up with the details and see more pics of the project by subscribing to
this forum post.
This below CAD video demonstrates what I originally wanted: a pan/tilt camera, wireless
data transfer, and a basic differential drive.
But I quickly decided that this was boring, and the robot needed the ability to interact more
with it's surroundings. This is where I decided to add a robot arm,
optimizing it using finite element analysis to keep the weight low
but the strength high:
For electronics I decided to use my custom $50 Robot controller,
the CMUcam, a Sharp IR, and a pen laser (for pointing, duh).
This is an early test of the ERP's low-level functions:
I never went much further than that for this version, but here is my source code (as is) for anyone
else interested in taking it further:
ERP source code for $50 Robot controller
And of course, I wanted hands on two arms that can grab stuff. At this time I was just making
a hand on one of the arms - when I'm satisfied with the design, I'll put it on both.
I've been asked on several occasions if I built this using a kit . . . NO!!! Everything was
custom made from 'scratch', with the exception of the CMUcam. I designed the whole thing in
CAD, and used a CNC to produce the parts.
Here are some new CAD images with a few of the changes I made - integrating the new cam, improving
the gripper, and adding a second caster wheel to improve balance.
I also had to add a suspension system. The earlier versions used two main wheels and a caster for the 3rd balance point.
The problem I was having however is with two swinging arms there was serious balance issues.
To solve this problem, I added a second caster wheel but then I introduced another problem - four points
are not guarenteed to always be on a plane. If the terrain is very unlevel, such as if there were cracks in the ground
or small objects to climb over, one of the balance points will not be in contact causing tipping issues.
To solve this, I invented a single part suspension system which mainly involves design materials to flex exactly
when/where needed. I documented the new concept in my
Single Part Suspension System tutorial, but you
can get the basics from this video I made:
Now for the arms . . . I'm quickly learning that hobbyist servos just do not work well under sudden shock
situations - both electrically and mechanically. The arms have broken a half dozen servos on me already.
The two biggest lessons that I hope you can learn from me are:
Use highly geared down servos - you want them to be really high strength. Actually over design your arms
and actuators to handle ~3x the expected maximum forces. Engineers like to calculate to optimize, but robots
need to be robust and handle the unexpected. Better to over design, because otherwise you will end up breaking
motors and having to redesign and buy new ones.
Use a smoothed control algorithm. I know I know, ninja moves on a robot looks cool.
But ninja moves also break servos. You instead want slow Yoga like motions. And be especially careful
to slow the servo down to zero speed BEFORE the servo reaches it's full degree limit. I've broken three servos
from not doing that . . . I just assumed the internal servo electronics would do it for me, but nope! They
don't account for large swinging masses in the built-in control algorithms.
(Saturday May 31st, 2008) I posted ERP on instructables.com, and within an hour I got this email:
"Your Instructable 'Experimental Robot Platform' was just featured by one of our editors!
Look for it on the Instructables homepage within the next 30 minutes. Being featured means we think you are awesome. Keep up the great work!"
In addition to mechanical improvements, I also got the visual system up and running. I programmed
it to track multiple colors, work in many different lighting conditions such as in a dark room
or out in ultra-bright sunlight, and even track fire and a white line. Just watch the video:
All it basically does is do middle mass detection while filtering out the background by colors. Its all
basic still, but I hope to get more advanced vision working in the coming months.
So I installed my Biped Engine v2, and it works really darn well. I can program
any set of required positions, define a speed, and the algorithm will linearly interpolate between each required
position dependent on that speed.
This fun video shows it doing the same dance at four different speeds.
About the video
Chroma key was used to make one robot appear to be three. I actually filmed it three times, in three different locations, on a
green floor, then combined the three together. If you look carefully, you'll see various chroma key artifacts that I didn't
care to fix.
I used Sony Vegas Movie Studio
to make the video.
As for the background, I did all filming entirely in Thailand (where I often live for 6 months at a time).
KMUTT supplied me the green floor and wall. The river pictures were from a recent trip I went on, and it just seemed to fit with my mood
when I made the video . . .
Read the comments in the code to figure out how it works, silly. Not everything new in the code
has been tested yet, but anything that worked in the previous version does in the latest version.
Its always a work in progress.
And don't forget to link back and credit me for any code snippets you 'borrow'.
Oh, and I upgraded him with my new Axon II robot microcontroller.