DPRG Events Shoptalk

Website design and hosting by NCC

'Bot Beginners

Years of robot-building wisdom collected from the DPRG Mailing List
April 1999, Compiled by Eric Yundt
August 2002, page format revised by NCC

1. Develop the hardware and the software at the same time.

Don't try to build a robot and then write software for it. These two domains feedback on each other. Develop them both concurrently, they are really just two different pieces of the same problem. You'll save a lot of frustration and headaches if you write the software as you go.

2. Build robust bump sensors and bumper software first.

The robot needs to be able to survive on its bumper behavior alone. All other sensors will eventually depend on the bumper to rescue them from failure modes. A robust collision detection method should not allow the robot to run into anything without sensing it. And there is great peace of mind in the knowledge that the robot won't rip itself apart if you are not watching it all the time!

Let the robot run around your living/working space and observe the bumper collision recovery failures. Figure out how to resolve them. A quick look at the robots which run in the DPRG contests will reveal that very few have ever had to survive an encounter with the back end of a rocking-chair. Nice flat walls are not the problem.

Find the situations in which the robot's response is not appropriate, where it gets stuck, or scrapes off a sensor, or snags a wire, and see if you can develop a software- hardware solution which does not require human intervention!

3. Run the robot alot.

I have a real temptation when I'm working to change a software or hardware feature, put the robot down on the floor for 30 seconds of evaluation, and then pick it back up for more changes. This is a mistake. These are really "chaotic" systems, greatly dependent on initial conditions and unobservable real-world parameters.

Let it run alot, in different conditions and environments, before determining the effectiveness of a certain behavior or modification. Evaluation should take the lion's share of your development time. It's also the most fun!

4. Document, document, document. Write down what you did, comment your control programs, draw diagrams/schematics/etc and keep them up-to-date, label wires and connectors (especially ones that carry the power supply). In two weeks, you won't remember what changes you made to board A that needs to connect to board B that you haven't had time yet to fix. You won't remember which orientation a connector is supposed to attach. You'll be glad you wrote it down.

5. Use fuses, optical isolators, and/or other forms of protection liberally in your design. A fuse for each power source: battery, DC-DC converter, charger, etc.

6. Be very methodical in your debugging. Check the simplest things first, even twice if you aren't SURE after the first time. Problems always seem to come up at the interfaces -- connectors, sockets, serial protocols, etc. Use a voltmeter to check your connections, even AFTER you physically connect them.

7. Beware of anyone else's pre-canned control code. If you use someone else's stuff, check everything they've done in it against what it should be. No one is perfect, and the code may not do exactly what you assume it will do.

8. Design your drive motor system to carry twice as much weight as you predict your robot will weigh when finished. The margin will disappear quickly with "small", seemingly insignificant additions.

9. Use the techniques and knowledge of others to avoid re-inventing the wheel. E.g.: if you need 68HC11 or 8051 code to control hobby servos, post a request to the club. The same goes for motor control, IR detection, etc.

Caveat: beware of pre-canned control code.

10. If you use an oscilloscope, put Ground pins in easy-to-reach places on your circuit boards.

11. I recommend getting an oscilloscope if you don't have one. It will save you time and money in the long run.

12. Give your robot lots of outputs: LEDs, sound, servos, etc. They're great for diagnostic output as well as entertainment.

13. Start with something simple, then add to it. Don't try to build a complex robot without first making sure you can build a simple one that works. Then take baby steps, adding functionality to the simple one. (By the way, "subsumption" is a good control software model to use for this... I believe David took this approach, too. Start with bumper switches, then add infrared, sonar, imaging, etc.)

14. Unless you have lots of time and money, build your robot modular. If the motor controller is one module, power management another, speech another, etc, it's easier to troubleshoot if you have a standalone module. It also makes it much easier to transfer your technology to your next robot.

15. Don't overlook thrift stores, swapmeets, and garage sales as good sources for parts. Many times technology only a few years old will show up at a swapmeet for $.05 on the dollar.

16. Develop a system of construction and stick to it. Black wires will always be ground, red wires will always be VCC, white wires will always be motor supply, etc. If you get in the habbit of grabbing what ever color wire is handy to build your bot, troubleshooting will be much more difficult. It also makes documentation much easier.

17. Don't be afraid to experiment. That's what fuses are for!

18. Add to your parts bin when the opportunity arises. Unless you live next to the ultimate Robot Parts Store, or plan to special order every gear you need, pick them up when you see them -- taking storage space and spousal tolerances into account, of course!

19. Give your Robot a name. Make it personal.

20. Get datasheets for what you don't understand. Read them, digest them, absorb them. Then go back and read them again until you can explain them to someone else.

21. Share with others what you are doing. Think out loud. Often times in the process of answering questions about your plans, you'll be forced to further define things and polish some of the rough spots.

22. Be proud of what you build. Some people talk, some people build. If you have to pick just one, then build. But doing both is preferred.

Do you have any advice for beginners? Tell the list.

Copyright © 1984 - 2014 Dallas Personal Robotics Group. All rights reserved.