Return to search

Designing an application-specific programming language for mobile robots

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.

Date January 2007
CreatorsBiggs, Geoffrey
Source SetsAustraliasian Digital Theses Program
Detected LanguageEnglish
RightsItems in ResearchSpace are protected by copyright, with all rights reserved, unless otherwise indicated.,, Copyright: The author

Page generated in 0.018 seconds