Introduction

Robotics researchers are interested in the interaction of physical systems and computers. There are controlled mechanical systems, like microwaves, cars, or dishwashers, that we do not tend to think of as robots. There are also traditional robotics applications where the robot follows fixed trajectories, and has little interaction with the environment. We should keep open minds about what constitutes an interesting problem in robotics.

Robots as technology

Robots scale human abilities. Robots can precisely manipulate small objects, forcefully manipulate large objects, move quickly, repeatably, or at a distance. Example applications include

  • Factory automation
  • Field robotics
  • Service and entertainment
  • Medical and scientific devices

The most widespread application of robotics has been industrial automation. Some of the challenges include removing uncertainty in part orientation, repeatable motion, avoiding jamming due to friction during assembly, and designing the product for ease of assembly or disassembly.

The ability to move precisely and operate hygienically at a distance has motivated the use of robots for scientific experiments and medicine. For example, here is a movie about medical robotics at Johns Hopkins.

Robots are also used for space exploration, hazardous waste cleanup, and to deliver medicine in hospitals. There are current projects to build autonomous cars, and personal assistants for the elderly or disabled.

Robots as science

Programmable mechanisms also allow exploration of fundamental scientific questions. What information is needed about the environment to complete a manipulation task, and how should that information be represented or stored? How do biological systems manage complicated manipulation so effectively? What can we learn about social interaction from our reactions to robotic mechanisms? Robots allow hands-on (or grippers-on!) experiments that are very suitable for education.

  • Mechanics of manipulation and locomotion
  • Biologically-inspired robots
  • Education

Robot programming paradigms

A useful abstraction for robot programming divides systems into two parts: the robot, and the
world. The robot is the part of the system that we can control. The goal is to change
the world. The robot recieves information about the state of the world through sensors, plans
an action based on the history of sensor readings, (current belief about the state of the
world), and executes the action.

senseplanact.png

This paradigm drives the high-level design of much robot control software: the main loop senses the state, makes a plan, and then sends commands to the motors.

Throughout much of the course, we will focus on planning and action. However, the interaction between action and sensing can be interesting. For example, sometimes action can reduce the effects of sensor error. Consider dropping a marble into a funnel. We might not know the exact initial position of the the marble; there is much less uncertainty about the marble's position after it has fallen through the funnel.

Which programming language?

What language should you write robotics software in? I haven't found a best choice.

For quick simulators, mathematics packages like Matlab and Mathematica can't be beat. I have often been excited about Python with Numerical Python as a free and well-designed replacement for MATLAB, but don't have much experience with it. It seems hard to distribute python software, since the various libaries and run-time environment aren't installed on most users computers.

I often use Java for the applet option and the large supply of libraries to load, save, and organize information. Java is unfortunately weak on scientific and geometric computing — most existing libraries are written in C++. LISP and Scheme are still quite popular in the AI communitiy.

Other resources

As the course progresses, we will add links to various useful resources to the library page. Some of the most interesting progress in robotics has happened when someone realized that related problems had already been tackled in the mathematics, control systems, computer science theory, artificial intelligence, or other communities. To read robotics papers, it is really necessary to be a jack-of-all-trades. If you come across some unfamiliar mathematics in a paper you'd like to understand, do not be intimidated. This happens to everyone, and you might be surprised at how quickly you can pick up what you need.

Please recommend your favorite books, software, or suppliers to me. For books below, I've linked to Amazon, not because I recommend that you purchase from Amazon, but to make sure you see the most recent edition. Most of the books can be found in the Dartmouth Library.

Robotics texts

LaValle's text on motion planning is a great reference and freely available on the web.

There are a few introductory texts that cover material close to that from this course. Choset et al aims to be a general referene, while Spong and Craig focus more strongly on manipulators. There are more advanced texts in robot modelling and control, from a manipulation perspective. Mason and Murray, Li, and Sastry are both excellent.

We won't spend much time on mobile robot system, but you might be interested in Siegwart and Nourbahksh and Jones and Flynn.

The most-widely used Artificial Intelligence textbook is probably and Norvig. An introduction to modern control theory can be found in Bay.

Mathematics texts

These are just the texts I'm most familar with; most should be available from any university library. For calculus, Apostol's two-volume set. Linear algebra, Strang. Differential geometry provides much of the framework for describing the spaces that robots move in. I recommend Thorpe. Proofs about existence and optimality of robot paths often rely on real analysis; the first few chapters of Royden cover the basics. Some algebraic topology can be useful; the first few chapters of Hatcher's book, freely available on the web, are a good place to start.

Software free for Academic use

Microsoft Robotics Studio is a very nice C# framework for simulation and control, and includes dynamics and rendering engines, collision detection, and a library of pre-built simulations. Unfortunately, it will only run on Windows.

NASA JPL has a large framework for programming and simulating robots as well, CLARAty, written in C++.

LEDA and CGAL are large software libraries with implementations of geometric algorithms that are useful for writing simulation or path planning software.

Then there are special-purpose libraries. ODE provides quick-and-dirty dynamic simulation, but may not be numerically robust enough for many robotics applications. The DaVinci project aims to build a free dynamics library with a focus on precision, rather than speed.

A group at UNC has developed several software libraries for collsion detection.

Robot supply companies

Materials and small parts are often best ordered from an industrial supply company like McMaster-Carr — most parts can arrive the next day, with inexpensive or free shipping. For more robotics-specific actuators and sensors, you might try Acroname, Tower hobbies, Bioloid.

Denso, Adept, and Barret sell industrial arms. iRobot has a version of the Roomba designed for research and educational use.

Conferences and journals

There are many venues for publishing robotics research; here are a few to get you started. IEEE ICRA and IROS are probably the largest robotics conferences. RSS is a smaller but typically excellent general-interest conference. WAFR and ISRR are more specialized workshops. Journals include the International Journal of Robotics Research and the IEEE Transactions on Robotics and Automation.

page_revision: 27, last_edited: 1229897057|%e %b %Y, %H:%M %Z (%O ago)