Robot operating system
ROS
Open Source Team Text
P. 10~23
Yoonseok Pyo
1
Contents
I. About ROS
II. Meta operating system
III. Purpose of ROS
IV. Configuration of ROS
V. ROS ecosystem
VI. History of ROS
Text
VII.Version of ROS P. 10~23
2
Introduction to ROS
3
ROS?
ROS is an open-source, meta-operating sy
stem for your robot. It provides the services y
ou would expect from an operating system, in
cluding hardware abstraction, low-level device
control, implementation of commonly-used fu
nctionality, message-passing between process
es, and package management. It also provides
tools and libraries for obtaining, building, writ
ing, and running code across multiple comput
ers.
http://www.ros.org/wiki/
http://www.ros.org/news/ 4
Software framework
Software framework for developing robot software
It is possible to jointly develop complex programs by finely dividing them by
message exchange method between nodes.
Command tool, visualization tool Rviz, GUI toolbar rqt, 3D simulator Gazebo support
Supports modeling, sensing, recognition, navigation, and manipulation functions
commonly used in robotics
Create Robotics Ecosystem!
http://www.ros.org/about-ros/ 5
True purpose of ROS
Building an ecosystem that enables
robotics software development to
be collaborated on a global level!
http://imgfave.com/ 6
Is ROS a new operating system (OS)?
Operating System
General purpose computer
• Windows(Windows XP, 7, 8 ...)
• Linux(Ubuntu, Redhat, Fedora, Mint, Gentoo ...)
• MAC(OS X ...) etc
Smart phone
• Android, iOS, Windows Phone, Symbian, RiMO, Tizen etc
ROS = Robot Operating System
ROS is Meta-Operating System
7
Meta-Operating System
• Meta-Operating System (Meta-Operating System): It is not a precisely defined term but it can
be regarded as a system that performs scheduling, loading, monitoring, error handling, etc.,
utilizing distributed computing resources as a virtualization layer between applications and
distributed computing resources.
• It is not a traditional operating system like Windows, Linux, and Android. Rather, ROS uses
the traditional operating system (Linux, Windows, OS-X, and Android).
• It uses the existing operating system's process management system, file system, user
interface, program utilities (compiler, thread model, etc.). In addition, it provides essential
functions for developing robot application software such as data transmission / reception,
scheduling and error handling among many different types of hardware in a library form.
• In addition, it develops, manages and provides various application programs based on the
robot software framework, and has an ecosystem that distributes packages developed by
users.
8
Meta-Operating System
• Meta-Operating System (Meta-Operating System): It is not a precisely defined term but it
can be regarded as a system that performs scheduling, loading, monitoring, error handling,
etc., utilizing distributed computing resources as a virtualization layer between applications
and distributed computing resources.
• It is not a traditional operating system like Windows, Linux, and Android. Rather, ROS uses
the traditional operating system (Linux, Windows, OS-X, and Android).
• It uses the existing operating system's process management system, file system, user
interface, program utilities (compiler, thread model, etc.). In addition, it provides essential
functions for developing robot application software such as data transmission / reception,
scheduling and error handling among many different types of hardware in a library form.
• In addition, it develops, manages and provides various application programs based on the
robot software framework, and has an ecosystem that distributes packages developed by
users.
9
Meta-Operating System
Device drivers, libraries, debug tools, message communication
Drivers, compilation tools, installers, package creation and release
Meta-Operating System
10
Support communication between different devices
iOS
11
Support communication between different devices
iOS
12
ROS-enabled operating system
Traditional operating system
Ubuntu, OS X, Windows, Fedora, Gentoo, OpenSUSE, Debian, Raspbian,
Arch, and QNX Realtime OS. (There can be functional limitations in some
OS)
Partially available for Android and iOS, smartphone operating systems
In case of microcontroller unit (MCU) which can not be equipped with OS,
it provides a library to communicate via serial communication, Bluetooth,
and LAN ROS 2.0 supports
all three operating
Basically it is recommended to run on Ubuntu, OS X! systems
13
ROS Configuration
Client roscpp rospy roslisp rosjava roslibjs
Layer
MoveIt! navigatioin executive smach descartes rospeex
Robotics
Application teleop pkgs rocon mapviz people ar track
dynamic
reconfigure robot localization robot pose ekf Industrial core robot web tools ros realtime mavros
Robotics
robot state
Application tf publisher robot model ros control calibration octomap mapping
Framework vision opencv image pipeline laser pipeline perception pcl laser filters ecto
common msgs rosbag actionlib pluginlib rostopic rosservice
Communication
Layer rosnode roslaunch rosparam rosmaster rosout ros console
Hardware camera drivers GPS/IMU drivers joystick drivers
range finder
3d sensor drivers diagnostics
drivers
Interface force/torque power supply
audio common rosserial ethercat drivers ros canopen
Layer sensor drivers drivers
Software
RViz rqt wstool rospack catkin rosdep
Development Tools
Simulation gazebo ros pkgs stage ros
http://wiki.ros.org/APIs 14
Current ROS environment
Developer, User
APP
ROS
ROBOT, SENSOR
Robot, Sensor Company
15
Current ROS environment
Developer, User
APP
ROS
ROBOT, SENSOR
Robot, Sensor Company Supports more than 90 kinds of robots, more than 80 kinds of sensors
16
Current ROS environment
17
Current ROS environment
Developer, User
APP
ROS
ROBOT, SENSOR
Robot, Sensor Company Supports more than 90 kinds of robots, more than 80 kinds of sensors
18
Current ROS environment
Developer, User
Application fetch beer, elevator …
Simulator gazebo, player/stage, STDR Simulator …
APP
Intelligence module navigation, action, grasping …
Library tf, PCL, OpenCV, OpenRave …
Device driver camera_drivers, urg_node …
Debug tool rviz, rqt_graph, rosbag, rostopic …
ROS
Message communication rosmaster, rosmsg, rosservice …
Execution tool rosrun, roslaunch …
Compile tool catkin_make, rosbuild …
File system roscd, rosls …
ROBOT, SENSOR Install tool rosinstall …
Programing Language C++, Python, Lisp, Java, Ruby, MATLAB등
Robot, Sensor Company Supports more than 90 kinds of robots, more than 80 kinds of sensors
19
Current ROS environment
More than 5,000 packages
Provides 2,818 official packages (Indigo /March,
2017)
113,345 downloads (Unique IP, July 2016)
Developer, User 17,058 Wiki pages (July 2016)
Application fetch beer, elevator …
Simulator gazebo, player/stage, STDR Simulator …
APP
Intelligent module navigation, action, grasping …
Library tf, PCL, OpenCV, OpenRave …
Device driver camera_drivers, urg_node …
Debug tool rviz, rqt_graph, rosbag, rostopic …
ROS
Message communication rosmaster, rosmsg, rosservice …
Execution tool rosrun, roslaunch …
Compile tool catkin_make, rosbuild …
File system roscd, rosls …
ROBOT, SENSOR Install tool rosinstall …
Programing Language C++, Python, Lisp, Java, Ruby, MATLAB등
Robot, Sensor Company Supports more than 90 kinds of robots, more than 80 kinds of sensors
20
Feature of Robot operating system ROS
21
Features 1) Communication infrastructure
Provides data communication between nodes
Support for message transfer interface, which is commonly referred to as middleware
Message parsing function
Providing communication system frequently used in robot development
Message transfer interface between nodes facilitating encapsulation and code reuse
Message Record and Play
Messages that are transmitted/received between nodes can be stored and reused as needed
It is possible to experiment repeatedly based on stored messages, and it is easy to develop algorithm
Use of various programming languages due to the use of messages
Because data exchange between nodes uses messages, each node can be written in a different language
Client libraries: roscpp, rospy, roslisp, rosjava, roslua, roscs, roseus, PhaROS, rosR
Distributed parameter system
Variables used in the system are created as global key values, shared, modified and applied in real time
22
Features 2) Various functions related to robots
Define a standard message for a robot
Modularization by defining standard message such as camera, IMU, laser sensor / odometry, navigation data
such as route and map, inducing collaborative work, and improving efficiency
Robot geometry library
Provides TF to calculate relative coordinates of robot, sensor, etc.
Robot technical language
XML document describing physical characteristics of robots
Diagnostic system
Provides diagnostic system to grasp the state of the robot
Sensing / recognition
Sensor driver, library of sensing / recognition level
Navigation
Estimation of poses (position / posture) of robots commonly used in robots, provision of self position
estimation in maps
SLAM required for map creation, and Navigation library for navigating to destinations within the created map
Manipulation
Provides various Manipulation libraries to support IK and FK used in robot arm as well as pick and place of
application
Provides GUI-like manipulation tools (MoveIt!)
23
Features 3) Various development tools
Provides various development tools needed for robot development
Improving the efficiency of robot development
Command-Line Tools
• Robot access and almost all ROS functions only with commands provided by ROS without GUI
RViz
• Provide powerful 3D visualization tools
• Visualize sensor data such as laser, camera, etc.
• Represent robot outline and planned motion
RQT
• Provides Qt-based framework for developing graphic interface
• Displaying connection information between nodes and them (rqt_graph)
• Encoder, Voltage, or plotting numbers that change over time (rqt_plot)
• Recording and playback of data in message form (rqt_bag)
Gazebo
• Supports physics engine, robot, sensor, environmental model, etc. 3D simulator
• High Compatibility with ROS
http://www.ros.org/core-components/ 24
ROS version selection
25
ROS release schedule and version selection!
• Decision to release the full version once a year from Hydro!
2017.05.23 - Lunar Loggerhead
2016.05.23 - Kinetic Kame (LTS) Recommendation
2015.05.23 - Jade Turtle
2014.07.22 - Indigo Igloo (LTS)
2013.09.04 - Hydro Medusa
2012.12.31 - Groovy Galapagos
2012.04.23 - Fuerte Turtle
2011.08.30 - Electric Emys
2011.03.02 - Diamondback
2010.08.02 - C Turtle
2010.03.02 - Box Turtle
2010.01.22 - ROS 1.0
Lunar Loggerhead (EOL=May, 2019)
Kinetic Kame (EOL=April, 2021) Ubuntu 16.04 Xenial Xerus LTS
Jade Turtle (EOL=May, 2017)
ROS Kinetic Kame
Gazebo 7.0
Indigo Igloo (EOL=April, 2019)
26