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