Professional Documents
Culture Documents
2
High Level Overview
What is ROS?
An Operating System like Windows, GNU/Linux?
A Software Distribution?
A Middleware? IPC
A Set of Libraries?
App App App
Ubuntu
Hardware 3
5
6
The primary goal of ROS is to support code reuse in robotics research and
development. ros.org
ROS - a Middleware for Robots
In complex tasks (and robot operation is complex per se) the required
functionality can increase tremendously: components for sensor control, actuator
control, processing of sensor data, localization, mapping, reckognition and
tracking of humans or objects, navigation and motion planning with collision
avoidance.
Some of these tasks have to be executed on the robot itself, some (computation
intensive, but low bandwidth i/o) may be distributed to computers connected by
network.
ROS - a Middleware for Robots
HTTP Request
The user needs to know what information (which file) it wants from whom (the
web address)
The web browser needs to know how to to find the web address and how to
handle the information (how to display HTML)
ROS - a Middleware for Robots
Host+Port
Topic Request
The programmer needs to know what information (the topic) it wants from whom
(which program)
The ROS master provides the means to find and connect to those programs.
ROS also defines how interfaces (data types) are defined, and provides
functionality for serialization and transportation between different nodes
(programs). Nodes can be located on different computers and written in different
programming languages.
ROS - a Middleware for Robots
12
13
15
Software Structure
The first slide of the middleware section states how a middleware helps to build
modular software for easier reuse of components. Also it states that the number
of required components can grow tremendously.
While the modularization protects us from highly complex monolithic
applications that are difficult to understand, debug, adapt or reuse, the complexity
of the task is still present in the number of components. Therefore, as in
operating systems, it is important that the software components are structured in
a comprehensible way.
Client Libraries
The last section will explain what makes a program a ROS-node.
ROS Software Distribution
Software Hierarchy
Release collection of stacks and packages
Stacks a full application suite
Package software (and interface
definition) to solve a specific task
Node An executable with some useful
functionality
Message/Service/Action Interface
definitions
16
A rough Comparison:
KDE 4.3 Release
Kontact Stack
Kmail Package
IMAP-plugin Node
IMAP RFC Message/Service Definition
In contrast to desktop application development, separable components are not
integrated into a monolithic binary (or loaded as plugins), but implemented as
individual executables that communciate via the middleware. This is more
related to the unix philosophy of having small specialized tools, that perform a
particular task very well, e.g. ls, sed, wget, tar...
This makes it easier to exchange small parts to adapted the software to a new task
or a new state-of-the-art in research.
ROS Software Distribution
C-Turtle
August 2010
Boxturtle
March 2010
Diamondback
Early 2011
Releases 17
Releases
The core ROS system, along with useful tools and libraries are regularly released
as a ROS Distribution. This distribution is similar to a Linux distribution and
provides a set of compatible software for others to use and build upon. There are
currently two releases: C Turtle (August 2010) and Box Turtle (March 2010).
ROS Software Distribution
~1700 ~49
230+
18
- Visualization
- Calibration
- Simulation
- Synchronous Localization and Mapping (SLAM)
- Visual SLAM
- Articulated Objects
- Object Recognition
- Grasping
- PR2 billiard
- PR2 beer me
ROS Software Distribution
20
def talker():
pub = rospy.Publisher('chatter', String)
! rospy.init_node('talker')
while not rospy.is_shutdown():
str = "hello world %s"%rospy.get_time()
rospy.loginfo(str)
pub.publish(String(str))
rospy.sleep(1.0)
if __name__ == '__main__':
try:
talker()
except rospy.ROSInterruptException: pass 21
The first two lines with the exclamation mark are responsible for making the
basic ROS functionality available for the remaining python code.
The second exclamation mark signifies the lines connecting the program to ROS
More details about programming with ROS will be given in a later talk.