Robotics Research Group Politecnico di Torino The Robot Operating System (ROS) Introduction, Concepts and Examples Stefano Rosa, 8/5/2015
Mobile robotics Robotics Service robotics Service robotics Industrial robotics Exploration robotics Professional Professional Personal Personal Mobile robotics
Robot navigation Mobile robotics Autonomous navigation Human-robot interaction Localization … Mapping Path planning
Robot navigation Mobile robotics Autonomous navigation Human-robot interaction Localization … Mapping Path planning
Robot localization • is the problem of estimating the robot pose in a given map using odometry and sensors measurements • Different map representations • landmark-based maps • occupancy grid-maps • Different techniques • Markov localization • Monte Carlo Localization
Robot localization • Wheel odometry affected by noise , error accumulates over time (drift) • So we estimate the pose of the robot based on past controls and measurements • Model the robot pose and the uncertainty with a Deterministic Probabilistic probability density (belief)
Monte Carlo localization • The robot pose is estimated using particle filters • set of weighted samples to approximate the robot pose belief • Iteration of three steps • Prediction - Update - Resampling • Number of needed particles can vary over time (Adaptive resampling) n n ! " ( ) [ ] i ˆ [ ] i [ ] i 1 bel p p p ( ) ∑ ω δ ∑ ω = ≈ − # $ t t t t t % & i = 1 i 1 =
Robot navigation Mobile robotics Autonomous navigation Human-robot interaction Localization … Mapping Path planning
Simultaneous Localization and Mapping (SLAM) • the problem of estimating both robot pose and the map • in an unknown environment • Different map representations • landmark-based maps … • occupancy grid-maps • Different techniques • Rao-Blackwellized particle filters • Grap-based SLAM …
SLAM vs Mapping Real map Mapping
SLAM vs Mapping Real map SLAM
Robot navigation Mobile robotics Autonomous navigation Human-robot interaction Localization … Mapping Path planning
Path planning • Path planning for mobile robots usually defines the problem of finding and following a feasible trajectory • from the current pose • to a “goal” pose • in a given map • Different techniques • 2D • 3D • optimal vs heuristic…
What is ROS? • R obot O perating S ystem • Framework for robot software development • which also has OS-like functionality: • Hardware abstraction / drivers • Message passing between processes • Package management • Huge community of developers: • Open source, lots of freely available packages!
What is ROS? • It’s called a meta-operating system • Bindings for many languages: • C++ , Python , Java, Javascript, Matlab • Supported architectures: • Suggested: Ubuntu Linux • Partial support for: MacOSX, Windows
ROS release history End-of-life Box Turtle (03-2010) Indigo (current) (05-2014) Jade (next) Current (05-2015)
Robots Using ROS And lots more…
ROS package management • Release : collection of stacks and packages • like a Linux distribution • Stack : a full application suite • Package : group of nodes that implements a service Big community of developers (universities, industries…)
Overview of ROS components • Master : called “roscore”, it’s the centralized manager (name registration and lookup) • Node : an executable which implements a basic functionality (it’s the actual code). Nodes can communicate between each other via ROS messages • Message : data exchanged by the nodes • Topic : channel over which messages are sent • Service : similar to Remote Procedure Call (RPC) • Parameter service : server that stores parameters for the nodes (useful for tuning your algorithms)
Starting the ROS master • roscore is the command used to start the ROS master • ROS master must be start before any other node • example: • roscore Example
Bring up ROS nodes • rosrun runs a node within a package • usage: rosrun [package_name] [node_name] • example: • rosrun turtlesim turtlesim_node • rosrun turtlesim turtle_teleop_key Example
Bring up ROS nodes (2) • Several nodes can be launched at the same time using roslaunch command • roslaunch package-name launcher.launch • roslaunch starts a set of nodes with custom parameters using an XML description: <launch> <group ns="turtlesim1"> <node pkg="turtlesim" name="sim" type="turtlesim_node"/> </group> <group ns="turtlesim2"> <node pkg="turtlesim" name="sim" type="turtlesim_node"/> </group> <node pkg="turtlesim" name="mimic" type="mimic"> <remap from="input" to="turtlesim1/turtle1"/> <remap from="output" to="turtlesim2/turtle1"/> </node> </launch>
Topics • Represent communication channels over which data is sent. • Each node can listen or publish on a topic • Nodes send messages over a topic • A message can be anything and is defined in a file: # this is a very useful comment! float64 myDouble string myString float64[] myArrayOfDouble
Messages • ROS is distributed and asynchronous ! • any node can publish messages at any time, and nodes can reside on different machines… • need synchronization for messages • each message is timestamped with the time at which it is created!
Example • Two nodes • talker • listener • One topic • /chatter
Using topics • rostopic is a command-line tool for printing information about ROS topics • it can also publish messages on topics or filter messages • example: • rostopic list • rostopic echo /turtle1/pose Example
ROS services • Services are like remote procedure calls (RPCs) • Nodes can implement a service or call an existing service • Services can have input parameters and give back a result • example: • rosservice list • rosservice call /kill turtle1 • rosservice call /reset Example
What is Tf? • A coordinate frame tracking system • for publishing roto- translations between frames of reference • tree of transformations • conversion functions,
Tf is distributed • Two types of tf nodes: publishers and listeners • No central source of information, each node can publish transforms on tf
ROS Tools • There is more to it… • Tools for analysis, debugging • And visualization • Live message view • Recording and playback • and more…
ROS Tools • rqt is a plugin-based GUI with some tools: • introspection • logging • services • topics • visualization • rviz is the 3D visualization tool for ROS
Build packages with catkin • catkin is the build system for ROS • makes it more efficient to build package(s) • makes your packages standard compliant, reusable by others! • catkin is based on CMake • catkin=cmake+ROS
Build packages with catkin • catkin utilizes packaging conventions • find_package() for finding ROS dependencies • pkg-config for finding system dependencies • extends CMake with some "nice to have" features like • enables to use packages after building (without installation) • generates find_package() code for your package • generates pkg-config files for your package • handles build order of multiple packages • handles dependencies
Overview of catkin packages • package.xml • contains meta-information about the package • name, description, version, maintainer, etc… • CMakeLists.txt • the CMake file for building the package • reads the package.xml • finds and include dependencies
Overview of catkin packages • Directory layout of a package • Sources • include/ (include files) • src/ (C++ source files) • ROS folders • msg/ (messages definitions) • srv/ (services definitions) • launch/ (launch files) • scripts/ (Python scripts) • example: • catkin_create_pkg example roscpp Example
Simulators in ROS • Robotic simulators are important • for fast prototyping • to test algorithm before actual deployment on real robots • Perfect simulator: • uses physics engine for realistic simulations • the code can be used on the real platforms without modifications
Simulators in ROS • 2D simulator: • Stage simulator (from Player/Stage library) • 3D simulator: • Gazebo simulator • V-REP (not open source, ROS compatibility)
�������� ����������� �����������
���������
������������ �������������� ������ �������� ������������ ������������ ���������� ���������� ������
Recommend
More recommend