Advanced Robotics - ist. · PDF file• arm navigation and object manipulation • 3D...

Preview:

Citation preview

Gerald Steinbauer

Institute for Software Technology

1

Advanced Robotics - ROS

Advanced Robotics Robot Operating System (ROS)

Gerald Steinbauer

Institute for Software Technology

Gerald Steinbauer

Institute for Software Technology

2

Advanced Robotics - ROS

Function versus Operation

Function

Artificial Intelligence View

How to organize:

• Knowledge Representation

• Decision Making

• Problem Abstraction

• Behavior Execution

• Control

• Temporal Issues

Operation

Software Engineering View

How to organize:

• Data Transport

• Interfaces and Objects

• Program Execution

• Configuration

• Programming

• Development

two sides of the same medal Today

Gerald Steinbauer

Institute for Software Technology

3

Advanced Robotics - ROS

Operation Architectures

Structure and Support

of Software Operation and

Data/Command Exchange

Support Operation and

Experiments

Support Development

Support for Functional

Architectures

Gerald Steinbauer

Institute for Software Technology

4

Advanced Robotics - ROS

Robot Operating System (ROS)

• framework for the development of robot

software

• provides OS-like functionality

• originally developed by Stanford AI Lab

(SAIL)

• meanwhile maintained by Willow Garage

and Open Source Robotics Foundation

• open source robotics framework

• used by several leading robotics labs

• provides a lot of functionality on various

levels

Gerald Steinbauer

Institute for Software Technology

5

Advanced Robotics - ROS

runs on several robot platforms

Gerald Steinbauer

Institute for Software Technology

6

Advanced Robotics - ROS

provides a lot of functionality

• many research groups provide their results as open

source ROS packages: • motion planning and navigation

• localization

• exploration and mapping

• arm navigation and object manipulation

• 3D perception and object manipulation

• high-level control and knowledge representation

• …

Gerald Steinbauer

Institute for Software Technology

7

Advanced Robotics - ROS

Design Principles of ROS

• peer-to-peer – several independent processes and hosts

• multi-lingual – communication is based on XML-RPC

– supports C++, Phyton, Octave, LISP

– defined data types, proprietary message definition files

• tool-based – Linux philosophy with small building blocks

• thin – functionality is packed in stand-alone libraries, also 3rd party

– uses its own build system

• open-source

Gerald Steinbauer

Institute for Software Technology

8

Advanced Robotics - ROS

OS

ROS

Message

Passing

Word

Processing

Web Browser

GUI Memory

Management

File System Scheduler Drivers

Visualization

Navigation Task Executive

Simulation Manipulation

Client

Libratries

Gerald Steinbauer

Institute for Software Technology

9

Advanced Robotics - ROS

ROS - Operation

• ROS is definitely on the operation side

• supports message transport • publisher/subscriber (nodes, messages, topics)

• client/server (services, action-server)

• runtime execution • threads and related techniques

• configuration

• supports development • reusable classes and libraries

• definition of interfaces

• debugging, logging and visualization tools

• build system

• …

Gerald Steinbauer

Institute for Software Technology

10

Advanced Robotics - ROS

ROS Eco-System I

universe

main

robot centric

general

Gerald Steinbauer

Institute for Software Technology

11

Advanced Robotics - ROS

ROS Eco-System II

capabilities

middleware

navigation, arm, grasping

tools universe

main

libs

apps fetch beer

tf, pcl, opencv, bullet, eigen

rxgraph, rostopic, roslaunch

rosmaster, roscpp, rosbuild

Gerald Steinbauer

Institute for Software Technology

12

Advanced Robotics - ROS

Beer Me (Bottom Up)

middleware

capabilities

tools

libs

apps Beer

Me

Gerald Steinbauer

Institute for Software Technology

13

Advanced Robotics - ROS

Beer Me (Top Down)

Beer

Me

Open Fridge Delivery

Face

Recognition Beer

Identification

PCL

TF

navigation OpenCV SMACH

arm navigation web interface collision space

roscpp common_msg rospy rosmaster actionlib

Gerald Steinbauer

Institute for Software Technology

14

Advanced Robotics - ROS

ROS Versions • ROS Box Turtle (March 2010)

• ROS C Turtle (August 2010)

• ROS Diamondback (March 2011)

• ROS Electric Emys (August 2011)

• ROS Fuerte Turtle (April 2012)

• ROS Groovy Galapagos (December 2012)

• ROS Hydro Medusa (April 2013)

Gerald Steinbauer

Institute for Software Technology

15

Advanced Robotics - ROS

File Organisation in ROS

a bag is a file format in ROS for storing

ROS message data

Gerald Steinbauer

Institute for Software Technology

16

Advanced Robotics - ROS

Building Blocks of ROS

a node is an executable that uses ROS to

communicate with other nodes and does

computation

nodes can publish messages to a topic as

well subscribe to a topic to receive

messages (many-to-many communication)

messages are ROS data type used when

subscribing or publishing to a topic

a service is a node with one defined input

and one defined output message type

the master is a node that is the name

service for ROS

it helps nodes find each other nodes

rosout is the decentralized ROS

equivalent of stdout/stderr

the parameter server provides and

manages parameter across the network

roscore is master + rosout + parameter

server

co

nce

pt:

co

mp

uta

tio

n g

rap

h

ba

sic

infr

astr

uctu

re

Gerald Steinbauer

Institute for Software Technology

17

Advanced Robotics - ROS

Naming in ROS

• hierarchical naming structure

• used for all resources • nodes

• parameter

• topics

• services

• nodes may have a name space /node_name/topic_name

• parameter are hierarchically organized as well /p3at/odometry/frequency

• can be used like a Linux file system (relative, global)

Gerald Steinbauer

Institute for Software Technology

18

Advanced Robotics - ROS

Navigation the ROS File System

• a number of command-line tools makes live easier

• changing into a package directory • roscd package_name

• building a package • rosmake (package_name)

• Running a node • rosrun package_name node_name

• running a larger project • roslaunch launch_file

Gerald Steinbauer

Institute for Software Technology

19

Advanced Robotics - ROS

Transport Mechanisms

• all architectures comprise different modules

• they need to exchange commands and data

• Client-Server • components directly talk to each other

• components are aware of each other

• remote method invocation (RPC, CORBA, ROS services)

+ explicit return value

• Publisher-Subscriber • messages are broadcasted – multiple recipients

• components are usually not aware of each other

• central message routing (IPC, ROS topics)

single point of failure

Gerald Steinbauer

Institute for Software Technology

20

Advanced Robotics - ROS

Publisher – Subscriber Communication

Gerald Steinbauer

Institute for Software Technology

21

Advanced Robotics - ROS

Synchronous Service

Gerald Steinbauer

Institute for Software Technology

22

Advanced Robotics - ROS

Actions

Gerald Steinbauer

Institute for Software Technology

23

Advanced Robotics - ROS

Action Interface

Action

Client

Action

Server

goal

cancel

status

status

feedback

from client

from server

action protocol relies on ROS topics to transport messages

Gerald Steinbauer

Institute for Software Technology

24

Advanced Robotics - ROS

Messages

• simple data structures that are passed between nodes

• defined in package-name/msg/*.msg files, sent over topics

• basic data types: • int{8,16,32,64}

• float{32,64}

• string

• time

• Duration

• array[]

• Example: Point:msg • float64 x

• float64 y

• float64 z

• used in ROS services, defined in package-name/srv/*.srv

Service = Request msg + Response msg

Gerald Steinbauer

Institute for Software Technology

25

Advanced Robotics - ROS

Parameters

• have unique names

• can represent primitive data types: • integers

• floats

• boolean

• dictionaries

• maps, etc

• can be set and remapped at runtime

• stored on the parameter server

• dynamic reconfiguration – notify nodes about

parameter changes

Gerald Steinbauer

Institute for Software Technology

26

Advanced Robotics - ROS

Parameter Setting

• nodes can set parameters on the server

• any other nodes can read them

• also command-line tool

Talker Listener

ROS

Master

Gerald Steinbauer

Institute for Software Technology

27

Advanced Robotics - ROS

Working with Topics

• the command-line tools rostopic makes live easier

• list all available topics • rostopic list

• showing messages on a topic • rostopic echo topic_name

• showing message type of a topic • rostopic type topic_name

• …

Gerald Steinbauer

Institute for Software Technology

28

Advanced Robotics - ROS

Computation Graph

robot laser imu map

localization

path

planner

Gerald Steinbauer

Institute for Software Technology

29

Advanced Robotics - ROS

Tools in ROS

rxgraph display a visualization of a ROS

computation graph

client library supports the development of

nodes

allows easy access to topics, paramter, …

C++ & Phyton

rviz is a 3d visualization tool

it is online configurable and is able to

display sensor data, point clouds, paths,

coordinate systems

ROS is able to record and playback all

topics in an transparent way and in the

proper timing

Gerald Steinbauer

Institute for Software Technology

30

Advanced Robotics - ROS

ROS - Function

• ROS supports the functional view to some extend

• behavioral control • local path planner

• obstacle avoidance

• trajectory generation

• executive • global path planner

• SMACH – state machine for task-level control

• planning • Cognitive Robot Abstract Machine (CARM) by TUM

• Knowledge Processing for Autonomous Personal Robots

(KnowRob) by TUM

Gerald Steinbauer

Institute for Software Technology

31

Advanced Robotics - ROS

Launch Files

• it’s a pain to start up larger project form scratch at the

command-line

• the tool roslaunch allows to script start up procedures

• allows to specify nodes, configurations, renaming …

• follows a XML-syntax <launch>

<param name="foo" value="$(optenv NUM_CPUS 1)" />

<param name=“foofile" value="$(find foo_pkg)/foo.xml" />

<node name=“foo" pkg=“foo_pkg" type=“foo.py" />

</launch>

Gerald Steinbauer

Institute for Software Technology

32

Advanced Robotics - ROS

tf

• robots usually have a number of

data (2D and 3D senor data, poses,

…) in various static and variable

coordinate systems

• data in ROS are relative to a

coordinate system called “frame”

• data stay in their producing frame

• data are transformed in a target

frame on purpose only

• the tf library and a set of tools take

care about transformations

Gerald Steinbauer

Institute for Software Technology

33

Advanced Robotics - ROS

Transformation Basics

+X

+Y

+Z

roll

pitch

yaw

right hand rule

roll, pitch, yaw

Euler angles

Gerald Steinbauer

Institute for Software Technology

34

Advanced Robotics - ROS

Transform Chains

• frames can build transformation chains

• tree-like structure

• transformation between any frames automatically

calculated by tf – if connected by a tree (forest is

possible too)

[Andreasson et al. 2008]

map kinect

frame

laser

frame

plate

frame

base

frame odometry

frame

Gerald Steinbauer

Institute for Software Technology

35

Advanced Robotics - ROS

Transformation Tree

odom base_link

laser_base_link

kinect_base_link

map

plate_link

odom

kinect:_base_link laser_base_link

base_link

map plate_link

Gerald Steinbauer

Institute for Software Technology

36

Advanced Robotics - ROS

Transformation Transport

Gerald Steinbauer

Institute for Software Technology

37

Advanced Robotics - ROS

tf tools • in program code

• instantiate a transform listener

• retrieve transformation for particular frames and time stamps

• transform data

• tf_echo • command-line tool to display transformation messages for particular frames

• tf_monitor • command-line tool to display all transformation messages

• rviz • graphical tool to visualize all kind of data and robots

Gerald Steinbauer

Institute for Software Technology

38

Advanced Robotics - ROS

Useful Features in ROS

• coordination transformation with tf

– manage several reference frames

– automated conversion

• unified data types for similar

sensors and actuators

– e.g. point clouds for laser scanner

– e.g. velocity_command for robot

platforms

• remote access from other hosts

– transparent network

Gerald Steinbauer

Institute for Software Technology

39

Advanced Robotics - ROS

Supported Hardware

• ROS provides a huge and continuously growing set

of standard nodes for robots und sensors – Willow Garage PR2

– Pioneer Robot Family

– Aldebaran Nao

– Lego NXT

– Festo Robotino

– Sick Laser Scanner Family

– Hokuyo Laser Scanner

– GPS (NMEA)

– Katana Arm

– Cameras with various interface

– Microsoft Kinect

– ….

Gerald Steinbauer

Institute for Software Technology

40

Advanced Robotics - ROS

Functions in ROS

• mapping (gmapping) – based on the free gmapping

– simple generation of 2d maps

• navigation – complete navigation stack

– allows autonomous navigation

• arm navigation based on OMPL

• organization of behaviors – standard templates for behaviors

(actionlib)

• decision making – finite state machine (SMACH )

Gerald Steinbauer

Institute for Software Technology

41

Advanced Robotics - ROS

Additional Information

• Ros wiki (http://www.ros.org/wiki/)

• Ros answers (http://answers.ros.org)

• Ros tuorials (http://www.ros.org/wiki/ROS/Tutorials)

Gerald Steinbauer

Institute for Software Technology

42

Advanced Robotics - ROS

Other Robotic Software Frameworks

• represent the other operation architecture

• some also implement some parts of the function

architecture

• hot topic since decades

• the holy grail not yet found

• examples • Player

• ORCA

• Miro

• Fawkes

• IDEA

• ROS

Gerald Steinbauer

Institute for Software Technology

43

Advanced Robotics - ROS

Middleware for Robots (Miro)

• open-source robotics framework

• initiated by University of Ulm

• strong focus on software development issues

• use ACE and TAO (CORBA) mechanisms

• provides • a lot of basic functionality for operation

• hardware abstraction

• some tool support for developers

• supports behavior and executive level

• language and OS independence

• too complicated and small community

• still used by NASA Ames for rover prototypes

Gerald Steinbauer

Institute for Software Technology

44

Advanced Robotics - ROS

Player

• popular open-source robotics middleware

• provides mainly simple interfaces to actors and

sensors

• allows for hardware abstraction

• client/server architecture

• communication over sockets

• OS and language independent

• good simulation tools: stage (2d) and gazebo (3d)

Gerald Steinbauer

Institute for Software Technology

45

Advanced Robotics - ROS

Fawkes

• open-source robotic framework

• driven by RWTH Aachen

• strong focus on software development

• component-based software (plug-ins)

• blackboard architecture

• looks for • simplicity and integration

• low overhead

• scalability

• clear concepts and styles

• somehow integration of function components

Gerald Steinbauer

Institute for Software Technology

46

Advanced Robotics - ROS

Fawkes - Main Control Loop

• monolith control loop

• hooks are executed in

an known given order

• within hooks concurrent

threads

• strict timing (i.e. 20-

40Hz)

• less flexible

• but allows some soft

guarantees

[Niemüller et. al SIMPAR 10]

Gerald Steinbauer

Institute for Software Technology

47

Advanced Robotics - ROS

Literature

• Niemüller, T., A. Ferrein, D. Beck, and G. Lakemeyer . Design Principles of the

Component-Based Robot Software Framework FawkeS. Simulation, Modeling,

and Programming for Autonomous Robots Proceedings of the 2nd International

Conference on Simulation, Modeling and Programming for Autonomous Robots

(SIMPAR 2010). vol. 6472. Lecture Notes in Computer Science. Springer, pp.

300–311. 2010.

Gerald Steinbauer

Institute for Software Technology

48

Advanced Robotics - ROS

Questions?

Thank you!

Recommended