By Rebecca Sobol
August 25, 2009
Robot OS (or ROS) is
described as:
"an
open-source, meta-operating system for your robot. It provides the services
you would expect from an operating system, including hardware abstraction,
low-level device control, implementation of commonly-used functionality,
message-passing between processes, and package management." It also
provides tools and libraries for software development, along with some
applications that should be common to all robots.
There has not been much collaboration in the robot world, according to
this New Scientist article:
Each robot is individually manufactured
to meet a specific need and more than likely built in isolation. This
sorry state of affairs is set to change. Roboticists have begun to think
about what robots have in common and what aspects of their construction can
be standardised, hopefully resulting in a basic operating system everyone
can use. This would let roboticists focus their attention on taking the
technology forward.
ROS got its start as an open source project developed by Willow Garage and Stanford University. Now Willow
Garage is focusing on ROS and has started the ROS wiki to further collaborative efforts
among other robot developers. ROS is all about reusing code as much as
possible among robots. While ROS is implemented in Python and C++, there
are also experimental libraries written in Lisp, Octave and Java. ROS is a
developer framework but people using other developer frameworks can use ROS
libraries and package repositories. In fact, ROS has been integrated with
other robot software frameworks such as Player and Orca.
The Robot OS
Concepts
document explains how the project is organized.
"ROS has three levels of concepts: the Filesystem level, the Computation Graph level, and the Community level."
The Filesystem level contains the resources that are stored on disk.
"The Computation Graph is the peer-to-peer network of ROS processes that are processing data together. The basic Computation Graph concepts of ROS are Nodes, Master, Parameter Server, Messages, Services, Topics, and Bags, all of which provide data to the Graph in different ways."
The ROS Community level includes the online Wiki, the code repository and
other networked resources.
ROS code can be installed on a variety
of Linux distributions including Debian, Ubuntu, Fedora and Arch. There is also
an experimental Mac OS X port. After installing the ROS packages the
developer can use the rosconfig
tool to install a configuration of
ROS on their machine. The ROS configuration can also be shared
on multiple machines.
The rosconfig documentation explains the utility:
rosconfig is a command-line tool for installing, configuring, and building a ROS installation.
The motivation for rosconfig is the kernel's "menuconfig" or "xconfig" tools, which set up a build environment for you. The idea is that you can use the rosconfig tool, combined with a YAML description of the system you want, and poof it sets it up for you -- which may entail SVN checkouts, network-filesystem symlinks, etc.
Robot OS includes an extensive package list that
includes documented development tools, libraries, drivers and applications.
In some ways ROS may be thought of as both a software development kit
and an "app
store". The ROS wiki also includes developer documentation and tutorials. For additional
information you can also join the ROS users
mailing list or browse the archives.
Bugs in the core software or feature requests can be filed on the ROS bug tracker.
If the robotics community can come together around ROS, it will
allow developers to improve and perfect the common robotics functions
instead of simply reinventing them. New and interesting robotics
innovations should come about as developers build higher level
software on top of the underlying platform.
(
Log in to post comments)