ROS R obot O perating S ystem
description
Transcript of ROS R obot O perating S ystem
ROSROBOT OPERATING SYSTEM
Cyber-Physical Systems Lab @ ASU
Professor Georgios FainekosPresnted 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 directlyNodes 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?
?