Andrew's Leap

Summer 1998


Mobile Robots:

Principles and Techniques

Matt Mason and Lee Taylor


Draft: June 24, 1998.

Preface

You are going to build and program small mobile robots, and learn the basic principles and techniques of robotics. You will begin by making small changes to a simple version, and by the end of the program will be designing, building, programming, and debugging robots from scratch. The robots are constructed from Lego Technic parts and controlled by an HC11 microcontroller. They use a variety of sensors and motors to perceive their environment and perform a variety of tasks. They are programmed in C on a host processor. The completed programs are downloaded to the robot's microprocessor, after which the robots are completely autonomous.

These pages constitute the "course notes", and will be supplemented by a variety of other readings, including Jones' and Flynn's Mobile Robots: Inspiration to Implementation, Braitenburg's Vehicles, Martin's "Art of Lego Design", and reference material for the microcontroller and other devices.

Contents

  1. Introduction.
    A broad discussion of robotics and a narrower discussion of this course.
  2. Operating the Robots.
    The goal of this section is to learn the basic anatomy and operation of the robot. Important components of the robot are the basic mechanical structure, the microcontroller card and auxiliary card, and the batteries. Operating the robot means primarily editing, compiling, downloading, and running software.
  3. Rudimentary C programming. (new)
  4. More on C programming. (new)
  5. How to read binary sensors (revision of Robot Programming section 1. Give them basic electrical and digital logic info, tell them how info shows up in memory, have them program something to switch an LED on and off?)
  6. How to read analog sensors (new. Again, give them the basic electrical stuff, explain A2D, rig a light sensor so the numbers show up somewhere. Have them program their robot as a light meter.)
  7. How to drive DC motors (revision of robot programming section 2. Give them the basic stuff about DC motors and H bridges, including the imprecision. Have them program a motor to follow a triangle wave.)
  8. How to drive hobby servos (new. Explain a servo, show them some innards, have them program one to follow a triangle wave.)
  9. How to turn (revision of robot programming section 3. Give them the planar kinematics, but avoid the hairy fixedpoint limited precision stuff. Stay with max speed, have them implement a few named turning maneuvers: SharpRight, ShallowRight, etc.)
  10. How to several things at once (revision of robot programming section 4)
  11. Designing Lego structures (Fred Martin's article. Have them build his example structures, but don't do the lightest structure contest.)
  12. Gear trains. Design elements from UWF web pages. Lab exercises. No racers, maybe have them build winches for varying weights.
  13. Mobile robot chassis design (Not sure we want this, but the students seemed really interested.)
  14. Not sure from there. Robot architecture? Infrared? State machines? Encoders?

old stuff

  1. Robot Programming.
    In this section you will learn to program the robots. We assume a rudimentary knowledge of C. You will learn the ins and outs of the HC11, and how to interact effectively with buttons, switches, light sensors, motors, and other devices. You will also learn the rudiments of real-time programming, where several independent processes use simple multitasking to drive the robot.
  2. Mechanism Design.
    In this section you learn some of the fundamental principles of DC motors, of geartrain design, of batteries, and mobile robot chassis design. You will also learn some practical elements of designing Lego structures.
  3. Perception.
  4. Planning and Control.

Project ideas, both small and large

  1. Modify robot so some parameter is adjusted by the buttons
  2. Program robot to make Lie bracket motions
  3. Write background process that estimates robot position and heading
  4. Write routine to report light sensor value to console
  5. Write routine to scan horizon for brightest spot, then head that way
  6. Switch among different behavior by buttons
  7. Combine bumper reaction with other behaviors
  8. Random walk
  9. Beacon navigation
  10. Following walls, turning corners
  11. Navigating grids or checkerboards.
  12. Following a line
  13. Add a steering wheel
  14. Teach mode
  15. Smooth motions. Vary turning radius linearly with path length.
  16. Fix the mechanical design and program it to do wheelies.

Back to Andrew's Leap Robotics Section