Software: Pyro

Pyro stands for Python robotics. The purpose of Pyro is to provide a stable, integrated environment that can be used for experimenting with robot controllers on several robot platforms as well as simulators (see Hardware).

Pyro has the ability to define different styles of controllers. For example, the control system could be a neural network, a subsumption architecture, a collection of fuzzy logic behaviors, or a symbolic planner. Any program that controls the robot (physical or simulated) is referred to as the brain. It is written in Python and usually involves extending class libraries.

The libraries help simplify robot specific features and provide insulation from the lowest level details concerning hardware drivers. In fact, the abstraction provided uniformly accomodates the use of actual physical robots or their simulations even though vastly different drivers and communication protocols may be used underneath the abstraction layer. Consequently, a robot experimenter can concentrate on the behavior-level details of the robot. Robots may feature a disparate set of sensors and movements, and yet, depending on the specific robots or simulators used, Pyro provides a uniform way of accessing those features without getting bogged down by low-level details.

Pyro also provides facilities for visualization of various aspects of a robot experiment. Users can easily extend the visualization facilities by providing additional Python code as needed in a particular experiment. For example, you can easily create a graph to plot some aspect of a brain with just a few lines of code.

In picking a developing language for our project, we were faced with a series of constraints: we wanted a system that was easy for beginning students to learn, provided a modern object-oriented paradigm, would run on many platforms, would allow exploration of many different control methodologies, would remain useful as users gained expertise, could be easily extended, and allowed for creating modern-looking visualizations. We found that the Python language meets many of our desired cirteria.

Python is an object-oriented, interpreted language that recently has been used as an introductory programming language, as well as for solving real-world complex programming problems. Python has a fairly clean object and inheritance syntax that supports multiple inheritance. It also has bindings to TCL and OpenGL, two mature graphics APIs for 2-D and 3-D drawing.

Pyro is designed so that all aspects of robot control could be studied, and altered, by non-experts. Several modules that employ different control paradigms have been implemented and more are under development. These are presented in more detail in the Curriculum section of this project.

How to get Pyro

This section will describe how to get and install Pyro. For now, click here to go to download and configuration instructions.


Project Home

The Proposal (full text PDF document)

Educational Materials

Pilot Schools





Project Event Log