An operating system plays many roles in a robotic project, all these roles can be expressed in two words: management and sharing. One feature of the operating system like Linux is the support to manage the robotic systems to accomplish complex tasks autonomously. Another important feature of an SO is the process used to share information between many programs using the processing unit.
Robotic software platforms were designed aiming to help the programmers to build code easily and without too much information about the robot. All of these platforms provide a set of components like:
- programming and service execution environment;
- reusable components;
- drivers for most common robotics hardware;
- platforms used in computer vision or navigation;
- support for source code debugging;
In this article, I made an overview of software platforms compatible with Linux OS used in robotics for development and to control the robots.
Used by a computer system, a robotic operating system is a package with software used to drive the hardware resources and at the same time to provide services for programs. Used in robotic projects, a robot operating system should provide support for a wide variety of libraries and tools designed to be used by developers to develop applications for robots.
In this section are listed six operating systems Linux compatible and used in robotics to develop applications in order to control robots.
ROS (Robot Operating System) is an open-source platform used to develop new tools and libraries in order to control robots. The platform started to be developed in 2007 and since then it was used in many advanced projects like a PR2 humanoid robot. ROS is compatible with almost all operating systems including Windows, OS X, but it has a special relation with Ubuntu. Improved by contributors around the world, ROS is a free platform designed for robots and opened for those who want to contribute with new features.
Developed with the aim to easily embed systems, VxWorks was designed as a real-time operating system with multitasking and 64-bit operating system support as well as an error handling framework or binary, counting, and mutual exclusion semaphores with priority inheritance. All these features launched the platform in robotics projects from space like Mars Curiosity rover, in advanced human-like robotic projects like ASIMO, or used by industrial robots from ABB and KUKA.
Released as an open-source platform with a BSD license, Urbi is a software designed to control motors, sensors and run algorithms to control the robot movements. Urbi includes a component called UObject and is based on the C++ component library. Used in complex robotic projects, the platform demonstrates that is stable and is a powerful tool that simplifies the process of writing programs.
With support for modular programming, Dros is an open source robotic operating system with support for all developers who wants to contribute to their code. Dros has a system architecture designed to avoid centralization, offer support for both behaviour-based and hybrid dynamic/switching control, standard interfaces are available to build the hierarchies of controllers, and offer support to send commands to all system parts.
Built on a Linux kernel, Gentoo is an open-source computer operating system with high performances and optimized for any application installed on it. Used in robotics for embedded solution, Gentoo is supported by a wide developer’s community that works to add new and new features.
OpenWrt is a fully customizable operating system with support for embedded devices. The platform has two main components based on Linux kernel: uClibc and BusyBox. Both components are optimized to run on lower space memory and users can interact with the software using a command-line interface (ash), or a web interface (LuCI).
Software Development Kit, Framework and Library
To build robots and programming code fast and easily is necessary to use tools, software development kits, frameworks and libraries.
Designed as an open-source framework, Orca provides support to develop components-based robotic systems. Orca is a framework specifically developed for robotic projects and is used both in robotic research and the robotic industry.
Providing services to software applications, OpenRTM-aist is an open-source middleware designed to be used in robotic fields with support for robotic parts like actuators or sensors, and support for developers to design their own robotic technologies. The middleware offers support for Linux OS as well as Windows, Mac OS X, and VxWorks.
The platform offers support for several programming languages including C++, Java, or Python.
With support for systems like concurrency management, inter and intra process communication, the OpenRDK is a framework designed for robotic projects in order to use loosely-coupled modules. The platform is open-source and any developer can contribute to his own code.
Choregraphe is a multiplatform development environment from Aldebaran Robotics with support for operating systems like Windows, Mac OS, and off-course Linux. The platform is used in an NAO project to create and edit movements and interactive behaviors. It has an intuitive interface and offers a wide range of libraries and programming functions ready to be used by user.
Fawker is a framework used for real-time applications in various robotic projects including service robots. The framework offer support for multi-thread process, event-based programming, run-time loadable plugins, and many other features.
NASA Vision Workbench
NASA writes history in the robotic fields with many complex projects used in planets exploration and now share with us a useful platform used in robotic vision and image processing. In order to develop autonomous robots, the NASA Vision Workbench is a powerful library aimed to provide advanced capabilities for image processing and computer vision.
Pyro is a platform designed to provide an easily programming environment to develop algorithms used in advanced projects based on artificial intelligence. The platform can be used in combination with different types of mobile robots and robot simulators with the possibility to share the code on many platforms.
Open Robot Control Software
Open-source platform with C++ libraries for advanced robots control.
Linux EZ Software Development Kit
The Linux EZ offers support for developers to easily develop programs used in robotics. With 3D graphics support and based on GUI, EZ has integrated support for many components including Qt/Webkit application framework, integrated WLAN and Bluetooth, or application launcher.
LinuxCNC is free real-time control software Linux compatible and used especially in industry. Available in many versions, the latest release includes new functionality designed for a flexible use in the manufacturing process and compatible with many kinds of machinery.
In this section of Linux compatible tools I made a toolkits list with basic building units for user interfaces with robotic hardware.
Player is a free toolkit used as interface for robot control program including hardware parts like sensors. The tool offers support for multiple concurrent client connections to devices that can run on any computer connected to the robot.
Carmen is a navigation toolkit designed in the labs of Carnegie Mellon University. With a modular software design, Carmen is open-source software used in robotic navigation for scenarios like obstacle avoidance, planning and localization, and mapping.
CMU Sphinx is a toolkit with five modules including a module for a recognizer library written in C, acoustic model training tools, support library required by Pocketsphinx and Sphinxtrain, adjustable recognizer written in Java, and language model tools. All of these packages are designed to be used in different robotic projects for different tasks and applications.