ROS Robot Operating System

advertisement
Cyber-Physical Systems Lab @ ASU
Professor Georgios Fainekos
Presnted by Ramtin Kermani
ROS: the motivation
What is ROS?

Robot Operating System (ROS) is an open source
software framework for robot software development,
providing operating system-like functionality on a
heterogeneous computer cluster

ROS provides standard operating system services
such as





hardware abstraction, (USB drive)
low-level device control,
implementation of commonly-used functionality,
message-passing between processes, and
package management
 provides tools and libraries for obtaining, building, writing, and
running code across multiple computers
What is ROS?

Originally developed by the Stanford Artificial
Intelligence Laboratory in 2007

In Custody of WillowGarage since then

ROS is similar in some respects to 'robot
frameworks,' such as Player, YARP, Orocos,
CARMEN, Orca, MOOS, and Microsoft Robotics
Studio
Hobby Robotics Evolution

Micro Controller Brain
 Sumo
 Line follower
 Maze solver
 Firefighting
 ...

Higher level logic benefits from PC
 Magellan
 Robot arm
 ...

Higher level logic requires PC
 LEAF
 SLAM
 …
But soon you hit a ceiling since ...
You develop:
Your own logging
 You write your own messaging infrastructure
 (protocols)
 Your own coordinate system transformations
 Your own joystick driver
 Your own basic navigation logic
 Your own basic vision system
 ...
 And you never catch up!

Why ROS?








Writing low level code for robotic apps is cumbersome!
Ability to reuse components
Open Source
Your App is interfaced with the OS not the Hardware
A small Core-package, the rest Distributed Open Packages
Growing Community
ROS enables groups of people to work on complex projects
by providing a common and well organized framework, while
adding a minimal amount of overhead
Has a rich set of bash commands: roscd, rospack, rosmake,
rosnode, rostopic
 $roscd iRobot_package


Language independence (RosCPP, RosPY,etc)
Easy Testing
ROS availability
ROS currently only runs on Unix-based
platforms.
 Software for ROS is primarily tested on
Ubuntu and Mac OS X systems, though
the ROS community has been
contributing support for Fedora, Gentoo,
Arch Linux and other Linux platforms.
 While a port to Microsoft Windows for
ROS is possible, it has not yet been fully
explored.

ROS Conecpts:
ROS Filesystem Level
 ROS Computation Graph Level
 ROS Community Level

ROS Filesystem Level

Packages: Packages are the main unit for organizing software in
ROS. A package may contain ROS runtime processes (nodes), a
ROS-dependent library, datasets, configuration files, or anything
else that is usefully organized together.

Manifests: Manifests (manifest.xml) provide metadata about a
package.

Stacks: Stacks are collections of packages that provide aggregate
functionality, such as a "navigation stack

Stack Manifests: Stack manifests (stack.xml) provide data about a
stack.

Message (msg) types: Message descriptions define the data
structures for messages sent in ROS.

Service (srv) types: Service descriptions define the request and
response data structures for services in ROS.
ROS File system
ROS Computation Graph Level





Nodes: Nodes are processes that perform computation.A ROS node is written with the
use of a ROS client library, such as roscpp or rospy.
Master: The ROS Master provides name registration and lookup to the rest of the
Computation Graph. Without the Master, nodes would not be able to find each other,
exchange messages, or invoke services.
Parameter Server: The Parameter Server allows data to be stored by key in a central
location. It is currently part of the Master.
Messages: Nodes communicate with each other by passing messages. A message is
simply a data structure, comprising typed fields. Standard primitive types (integer,
floating point, boolean, etc.) are supported.
Topics: Messages are routed via a transport system with publish / subscribe
semantics.







A node sends out a message by publishing it to a given topic.
The topic is a name that is used to identify the content of the message.
A node that is interested in a certain kind of data will subscribe to the appropriate topic.
There may be multiple concurrent publishers and subscribers for a single topic, and a single node
may publish and/or subscribe to multiple topics.
For one-way transport
Services: Request / Reply is done via services, which are defined by a pair of
message structures: one for the request and one for the reply.
Bags: Bags are a format for saving and playing back ROS message data. Bags are an
important mechanism for storing data, such as sensor data, that can be difficult to
collect but is necessary for developing and testing algorithms.
ROS Computation Graph Level

Notes
 The ROS Master acts as a nameservice in
the ROS Computation Graph
 Nodes connect to other nodes directly
 Nodes are actually “Running Executables”
ROS Community Level





Distributions: ROS Distributions are collections of
versioned stacks that you can install. Distributions play a
similar role to Linux distributions: they make it easier to
install a collection of software, and they also maintain
consistent versions across a set of software.
Repositories: ROS relies on a federated network of code
repositories, where different institutions can develop and
release their own robot software components.
The ROS Wiki: The ROS community Wiki is the main
forum for documenting information about ROS. Anyone
can sign up for an account and contribute their own
documentation, provide corrections or updates, write
tutorials, and more.
Bug Ticket System: Please see Tickets for information
about file tickets.
Mailing Lists:
ROS Community Level
A ROS Architecture
A Sample ROS graph
Communication Graph (rsgraph)
How ROS works?

The ROS runtime “Graph" is a peer-to-peer
network of processes that are loosely
coupled using the ROS communication
infrastructure.

Communication Infrastructure:
 synchronous RPC-style communication
over Services,
 Asynchronous streaming of data over Topics,
 Storage of data on a Parameter Server
ROS
References:







www.ros.org
http://www.ros.org/wiki/ROS/Tutorials
http://www.ros.org/wiki
http://en.wikipedia.org/wiki/ROS_(Robot_Operatin
g_System)
http://hades.mech.northwestern.edu/index.php/Ro
bot_Operating_System
http://www.hessmer.org/blog/wp-content/uploads/2011/02/ROS_Introduction_Slides.pdf
http://pixhawk.ethz.ch/wiki/toolchain/ros/start
Questions?
Download