Notes on Robot Parts
Batteries
Sometimes you can have a robot with one battery, but it is more common to use
two. Robots often use two batteries because they use a either an H-Bridge
Circuit or a servo controller which is set to run up on its own seperate power
supply. Micro-controllers and motors or servos can have different power
requirements, in which case it may be easier if the microcontroller has a different power supply. You can
use just one, particularly if you are using a Basic STAMP and servos. I
recommend using two power supplies because if your microcontroller browns out
because of the draw of your propulsion system it will be a tricky problem to
diagnose. Some controllers really need a lower voltage then is best for
the motors or servos, and converting the voltage can create a lot of heat. Also, when you are programming your controller you
will often want to turn the power off of the motors but leave it on the
controller.
All your batteries should be rechargeable to save money and the
environment.
Lead Acid Gel Cel
These are a great deal for power but they weigh too much for the type of
small robots that you would control with a micro-controller. If you are
making a really big robot that doesn't walk, this is a cheap way to go.
NiCd / NiMH
Nickel Cadmium or Nickel Metal Hydride batteries are very common in remote
control cars, and potentially pretty cheap depending on which ones you
buy. You can also get one charger that you can use for a variety of these
batteries. You can start with cheap NiCds and then spend a little more
for better NiMhs.
NiMH batteries seem to leak power over time, so you want to top them off before
each session.
Lithium Ion / Lithium Polymer
For walking robots you want your power as light as you can get it. For
this reason I plan to someday start using Lithium Polymer batteries which have
better weight to power. The problem is that they are expensive, need
a special charger, and you have to be careful about how you drain them. I
wouldn't start here.
Microcontrollers and Controller Boards
BASIC STAMPS
Parallax makes the Basic Stamp, which is the easiest micro controller to use for
robots. They have great software tools, good boards, and more support for
sensors and hardware then any other robot controller. They are very
reliable and can run at a variety of power levels, which is extremely
handy. So they are a great place to start.
There are many kinds of stamps. The original Stamp I is very cheap
but probably too simple to use for most robots. There are at least half a
dozen types of Basic Stamps 2s, or BS2s. They vary in speed, memory, power
consumption and number of pins. Any 24 pin BS2 is good to use because it
is extremely robust, reliable, well documented. I frequently use a BS2sx
with Lynxmotion Bot Board.
Stamps use interpreted code. That means your Stamp program is easy to
debug but does not run very quickly. Stamps also have extreme limitations
of RAM and program space.
Many manufacturers make chips that imitate the BS2 but try and improve on
them. I would start with the Parallax ione
Atmel AVR
One of the best chips for robots. You can program in C, which is
nice. Also they are cheap and have a variety of circuit boards.
There many robots and projects that use the AVR chip. There are also a
great number of circuit boards designed to use the AVR as a robot
controller.
Propeller
I love the Propeller (prop) chip for robots. It is fast and has built in
parallel processing.
The prop is cheaper and more powerful then many other cotrollers, and because
you don't need a servo controller or a display driver it is usually much cheaper
to work with. The parallel architecture lets you control a variety of
devices at the same time without worrying about timing issues.
I really like the SpinStudio card from uController. It is quite versatile
and inexpensive
GumStix / RoboStix
Gum Stix are very powerful but they are expensive. The Robostix chip
depends on an Atmel AVR for IO, so you may want to master that chip before you
use a RobotStix. Having to use two different microprocessors is an added
level of hassel. I don't know of a lot of robots that actually use
a RoboStix chip.
Programming
My biggest disappointment with most robot builders is that
they do not create much software. This is particularly true of people who
build kits. After you build the kit and then get one or two programs
running, usually from software examples that came from the kit
manufacturer. Once the kit demonstrates its key feature-- walking,
avoiding obstacles, flashing a light-- it is put aside.
Usually robots can do more then people realize, even if they just have two
motors, an IR sensor, an LED and a speaker. Even the simplest stamp has
the processing power for a large repertoire of behaviors. That robot can:
solve mazes, be a sentry, play simon, dance, be an alarm clock, etc.
Why is that bad? First, because if you don't get your robot to do more, it
isn't going to get much use or be very interesting to others once it is
built. Second, you don't learn much from a robot that sits on the
shelf. Finally, software is something you can create for your robots that
you can refine and reuse across different robots.
I think the reason why I care so much about this is that robot software is my
passion! The Aibo was a visionary product, but it really lacked
software. Robosapiens are kind of cool, but they get boring fast. It
reminds me of the early days of Personal Computers-- they had tons of potential,
but it took years for people to figure out compelling things for them to
do. The hardware has a ways to go, but the software has a lot further to
go. If you are reading this, you can do something about that.
Here are some things to try:
-
Program your robot to support different processes at boot. Give the
user a way to select among different processes like maze solving,
diagnostics, whatever you choose to program.
-
Have your program log data. Keep track of how many times it ran, what
it did, the series of the last steps it took. You can use this to do
all sorts of cool things, as well as diagnostics to see what got your robot
stuck.
-
Have your robot optionally output debug information to a terminal.
Have a way to turn this off an on for speed.
-
Use whatever output you get with your robot to convey the internal
states.
-
Give your robot a manual control and autonomous mode.
Multiprocessing
Multiprocessing is a very important idea for robotics. In robotics you
want a processor that uses low power. That means it tends to have fewer
transistors and less memory. Slower clock speeds and less floating point
capability. At the same time you need to sample a variety of sensors and
control a number of things in parallel. That makes robotics a natural
application for parallel processing.
A chip like the Propeller is completely geared toward parallel processing.
But the reality is that you will tend to use parellel processing with other
solutions as well. For example, with any Basic Stamp you are likely to use
a separate servo controller. A RoboStix uses an Atmel AVR for I/O along
with its ARM chip. In the latter cases the idea is to use one
microcontroller for high level logic, another processor for controlling input
and output in real time. It is a good idea to think about dividing up the
tasks.
You also want to avoid making calculations in real time, and try depend on
pre-calculations as much as possible. Microcontrollers don't have fast
floaitng point, or a lot of memory to work with. If you know you are going
to a calculation often you probably want to use a look up table ot produce your
results.
|
|
RoboGames 2009
Robot Videos
Robot Building Tips
Notes on Robot Parts
My Embarrassing Hobby
Peanut Tin of Terror
Sterylite 6000
Fluffy
|