dc.description.abstract |
The process of programming mobile robots is improved by this work. The tools used
for programming robot systems have not advanced significantly, while robots themselves
are rapidly becoming more capable because of advances in computing power and sensor
technology. Industrial robotics relies on simple programming tools usable by non-expert
programmers, while robotics researchers tend to use general purpose languages designed
for programming in other domains.
The task of developing a robot cannot be assumed to be identical to developing other
software-based systems. The nature of robot programming is that there are different
and additional challenges when programming a robot than when programming in other
domains. A robot has many complex interfaces, must deal with regular and irregular
events, real-time issues, large quantities of data, and the dangers of unknown conditions.
Mobile robots move around and are capable of affecting everything in the environment.
They are found in cluttered environments, rather than the carefully-controlled work spaces
of industrial robots, increasing the risk to life and property and the complexity of the
software.
An analysis of the process of developing robots provides insight into how robot programming
environments can be improved to make the task of robot development easier.
Three analyses have been performed: a task analysis, to determine the important components
of the robot development process, a use case analysis, to determine what robot
developers must do, and a requirements analysis, to determine the requirements of a robot
programming environment. From these analyses, the important features of a robot development
environment were found. They include features such as data types for data
commonly found in robotics, semantics for managing reactivity, and debugging facilities
such as simulators.
The analyses also found that the language is an important component of the programming
environment. An application-specific language designed for robot programming is
proposed as a solution for providing this component. Application-specific languages are
designed for a particular domain of programming, allowing them to overcome the difficulties
in that domain without concern for their usefulness in other domains. To test
the hypothesis that such a language would improve robot development a set of language
extensions has been created. These extensions, named RADAR, provide explicit support
for robotics. The prototype implementation uses the Python programming language as
the base language.
RADAR provides support for two of the necessary features found in the analyses.
The first is support for dimensioned data via a new primitive data type, ensuring all
dimensioned data is consistent throughout a program. Dimensional analysis support is
provided, allowing the safe mixing of data with compatible units, the creation of more
complex units from simple single-dimension units, and built-in checking for errors in
dimensioned data such as performing operations involving incompatible dimensioned data.
For example, the data type will prevent the addition of distance and speed values. Several
dimensional analysis systems have been developed for general purpose languages in the
past. However, this is the first application of the concept specifically to robotics.
The second feature is semantics for managing reactivity. In RADAR, the principle of
ease-of-use through simplicity is followed. Special objects represent events and responses,
and a special syntax is used for both specifying these objects and managing the connections
between them in response to the changing state of the program. This reduces
programming complexity and time. There are many other languages for managing reactivity,
both the more general languages, such as Esterel, and languages for robotics, such
as TDL and Colbert. RADAR is simpler than the general languages, as it is aimed solely
at the needs of robot developers. However, it takes a different approach to its design than
other languages for reactivity in robotics. These are designed to provide support for a
specific architecture or architecture style; RADAR is designed based on the needs of robot
developers and so is architecture-independent.
RADAR’s design philosophy is to provide robot-specific features with simple semantics.
RADAR is designed to support what robot developers need to do with the language,
rather than providing a special syntax for supporting a particular robot, architecture or
other system. RADAR has been shown to provide an improvement in dimensioned data
management and reactivity management for mobile robot programming. It increases the
readability, writability and reliability of robot software, and can reduce programming and
maintenance costs. RADAR shows that an application-specific approach to developing a
robot programming language can improve the process of robot development. |
en |