Namespaces
GeneralComms
Packer
MSDE
Servers
Localisers
Controllers
DROS Design
Configuration
Coding Standards
State of the Nation
What is DROS?
DROS stands for Dave's Robotic Operating System and it is basic software modules needed for robotics. At the moment, the framework consists mainly of support functions for modular programming and modules for mobile robots. However, in the future the scope should expand and, of course, contributions are most welcome.

DROS is open source and is distributed under the GNU Public License. This license was chosen because we want to advance the progress of robotics research and would like people all to contribute to the science of robotics by releasing their code.

History
DROS has evolved from my efforts to program robots for over six years. Originally, I worked on an abstraction for manipulator arms (called RobotADT) at the Australian National University, then I worked with the Intelligent Service Robot (ISR) system at the Royal Institute of Technology, Stockholm and started work on my own system (called RSS for Robot Software System) while in Sweden. I am now continuing and extending RSS to produce DROS, again at the Australian National University.

Goals
DROS will be used as the main platform for mobile robotics research at the ANU. It now supports basic motion capabilities for mobile robots with SICK laser scanners.

  1. In the short term, there will be some consolidation - bug fixes in the supporting mechanisms, addition of security, support for some more hardware.
  2. In the longer term, I'd like to support simpler robots that do not have SICK laser scanners. Vision seems the obvious choice and I'm investigating visual localisation techniques.
  3. In the really long term, I'd like to investigate adding better real-time support to the GeneralComms library so that DROS can be used for arm control.

Overview
The basic idea of the DROS is to re-use the good parts of all of the software systems that I have been involved with over the years (it is heavily based on the ISR via RSS) to fix (most of) the bugs/limitations in previous systems. The major features are as follows:

Supporting Mechanisms

  • Promote re-use of components. The present system requires that everyone maintain their own compiled copy of the system. This is wasteful of disk space and time. DROS will allow a much simpler use of the system, possibly without even re-compiling, through the following:
    1. Installed programs will be provided in some public directory so that few people have to compile the entire system.
    2. Unique message IDs will be used within a pre-defined message header. Each message ID will have a defined (and documented) structure associated with it. Once any program that uses that message is "released" the message should be frozen and never changed. This is necessary so that the installed components will not crash because of changed message formats.
    3. Run-time configuration will allow re-use of installed components without re-compilation.

  • Simplify configuration of the system. One of the problems with the ISR system is that the configuration information is scattered in a lot of small files and is not easy to use. The new system must address this and also should provide a global configuration space so that people do not have multiple copies of a configuration file floating around. The DBManager will provide a global database in which the configuration (as well as other data) can be stored. See also more information on configuration.

  • Global name space. The DROS system will use a global name space to facilitate multi-robot experiments and also to avoid the clashes that have been occurring when multiple people run the ISR system on the same CPU (e.g. for simulation). See also the NameServer.

System Architecture

At this stage, the architecture of the new system has not been decided. However, some thoughts are:
  1. Avoid centralisation.
  2. Must support both behaviour-based and hybrid dynamic/switching control.
  3. Need to decide how we design the controllers. It should be possible to build hierarchies of controllers using some standard interface.
  4. The user interface (or programmer's interface) should be available to all parts of the system. It should be possible to send commands to any part of the system.

For instructions for getting started with DROS, see here. See also the DROS FAQ (Frequently Asked Questions)

Major Components

Other Documentation

Copyright 2001-2004 David Austin