본문 바로가기

Robotics/Software Tech.

Robot Control Software


OROCOS (Open RObot COntrol Software) is an effort to start up an open source robot control software project. Broad discussions are being held about what experiences, code and tools can be re-used from other projects, what open standards should be integrated into the project and what organizational structure is most appropriate for the project. Goals of the project are to develop robot control software as follows:

  • Under open source and/or free software license(s)
  • As modular as possible
  • Of the highest quality (from both technical and software engineering perspectives)
  • Independent of (but compatible with) commercial robot manufacturers
  • For all sorts of robotic devices and computer platforms
  • Localized for all programming languages
  • Featuring configurable software components for kinematics, dynamics, planning, sensing, control, hardware interfacing, etc.

The project aims to become more than just a copy of existing commercial robot controllers or robot simulation/programming packages. The OROCOS project wants to develop shareable libraries, stand-alone components (sometimes referred to as software agents), and a configurable run-time environment from which to eliminate and control all distributed robotics systems. These types of projects are useful in several ways:

  • For re-using code
  • For use as an independent sub-system
  • For copying their organizational structure
  • For learning from the experience of managing an open source project
  • For designing and developing extensible and reusable software

The following are open source matrix libraries that satisfy the above-mentioned requirements. Octave is recommended, since it is GPL-licensed and delivers all required functionality.

GNU Octave: GNU Octave is a high-level language, primarily intended for numerical computations. It provides a convenient command line interface for solving linear and nonlinear problems numerically, and for performing other numerical experiments using a language that is mostly compatible with Matlab. It is easily extensible and customizable via user-defined functions written in Octave’s own language, or using dynamically loaded modules written in C++, C, Fortran, or other languages.

GNU Octave is freely distributed software. You may redistribute it and/or modify it under the terms of the GNU General Public License (GPL) as published by the Free Software Foundation. More detailed information about GNU Octave can be found by visiting the Octave Web site (seeResources).

GSL (GNU Scientific Library) GSL is an ongoing effort to develop a modern extensive and ANSI C library for numerical computing. The GNU Scientific Library (GSL) is a collection of routines for numerical computing. The routines are written from scratch by the GSL team in ANSI C, and are meant to present a modern Applications Programming Interface (API) for C programmers, while allowing wrappers to be written for very high level languages.

GSL is free software. It is distributed under the terms of the GNU General Public License. Visit Red Hat’s Web site (see Resources) for more information concerning GSL.

Real-Time Linux (RTLinux) RTLinux(TM) is a hard real-time operating system that handles time-critical tasks and runs Linux as its lowest priority execution thread. In RTLinux, the kernel shares one or more processors with standard Linux. This allows the system to run accurately timed applications performing data acquisition, systems control and robotics, while still serving as a standard Linux workstation. Version 3.0 (final) is available on the Web at ftp.rtlinux.com (see Resources).

RTLinux.org is the non-commercial RTLinux site for the open source user and developer community. Their sister site, RTLinux.com (seeResources), discusses commercial support and development.

eCos (embedded Configurable operating system): eCos is an open source real-time operating system for deeply embedded applications. It meets the requirements of the embedded space that Linux cannot yet reach. Linux currently scales upwards from a minimal size of around 500 kilobytes of kernel and 1.5MB of RAM, before taking into consideration application and service requirements. The eCos open source project can be found at their Web site (see Resources).

RTEMS (GPL License): RTEMS is an open source real-time operating system and environment for C, C++ and Ada95. It is distributed under the terms of the GNU General Public License.

Visit the RTEMS site (see Resources) for downloads and more detailed information about RTEMS.

ROBOOP (A robotics object oriented package in C++): This package is an object-oriented toolbox in C++ for robotics simulation. Technical references and downloads are provided in the Resources.

CORBA: A real-time communications and object request broker software package for embedding distributed software agents. Each independent piece of software registers itself and its capabilities to the ORB, by means of an IDL (Interface Definition Language). Visit their Web site (seeResources) for technical information, downloads, and documentation for CORBA.

TANGO/TACO: This software might be useful for controlling a robotics system with multiple devices and tools. TANGO is an object oriented control system based on CORBA. Device servers can be written in C++ or Java. TACO is object oriented because it treats all (physical and logical) control points in a control system as objects in a distributed environment. All actions are implemented in classes. New classes can be constructed out of existing classes in a hierarchical manner, thereby ensuring a high level of software reuse. Classes can be written in C++, in C (using a methodology called Objects in C), in Python or in LabView (using the G programming language).

TACO was designed to be portable and runs on a large number of platforms (for example, Linux, Solaris, HP-UX, Windows/NT, Windows/95, and OS9). To download the source code and other technical documents visit their web site (see Resources).

Task Control Architecture: The Task Control Architecture (TCA) simplifies building task-level control systems for mobile robots. “Task-level” refers to the integration and coordination of perception, planning, and real time control to achieve a given set of goals (tasks). TCA provides a general control framework, and is intended to control a wide variety of robots. TCA provides a high-level machine-independent method for passing messages between distributed machines (including between Lisp and C processes). TCA provides control functions, such as task decomposition, monitoring, and resource management, that are common to many mobile robot applications. The Resources section provides technical references and download information for Task Control Architecture.

EMC (Enhanced Machine Controller): The EMC software is based on the NIST Real time Control System (RCS) methodology, and is programmed using the NIST RCS Library. The RCS Library eases the porting of controller code to a variety of UNIX and Microsoft platforms, providing a neutral application programming interface (API) to operating system resources such as shared memory, semaphores and timers. The EMC software is written in C and C++, and has been ported to the PC Linux, Windows NT, and Sun Solaris operating systems.

Darwin2K: Darwin2K is a free, open source toolkit for robot simulation and automated design. It features numerous simulation capabilities and an evolutionary algorithm capable of automatically synthesizing and optimizing robot designs to meet task-specific performance objectives.