What you will learn:
- Basics of ROS 2.0.
- Why ROS 2.0 matters.
- Features and improvements made with ROS 2.0.
Open Robotics released the first RSO (Robot Operating System) in 2007 – it was designed to provide a set of software libraries and tools that developers could use to create robotic applications. Basically, a ROS system consists of a number of independent nodes, each communicating with the other nodes using a publish/subscribe messaging platform.
For example, the driver for a particular sensor can be implemented as a node, which publishes sensor data in a message stream. These messages could then be read by any number of other nodes, including filters, loggers, mapping, navigation, etc.
These nodes don’t even have to be on the same system or used by the same architecture to perform a function. Users could have an Arduino system posting messages; a laptop subscribing to it; and an Android phone driving motors or activating sensors. This makes ROS flexible and adaptable to user needs. Moreover, the platform is also open source and maintained by many people, some of whom have uploaded code that others can use with their robotic projects.
Additionally, ROS is an operating system-based framework, which allows it to abstract hardware from software, which means it can be thought of in terms of software for all robot hardware. This means that users can create programs for robots without the need for physical hardware at hand.
What is ROS 2? An overview of the framework
The design structure of ROS is broken down into several key parameters and tools, including a computer graph model where processes are represented as nodes in a graph structure, connected by edges called subjects. ROS nodes can pass messages to each other through these topics, make service calls to other nodes, provide service for other nodes, or set or retrieve shared data from a common database called the server of parameters.
Each node represents a single process running the ROS graph. Each node has a name, which it registers with the ROS master before taking any other action. Multiple nodes with different names may exist under different namespaces, or a node may be defined as anonymous, in which case it will randomly generate an additional identifier to append to its given name.
Nodes are able to send and receive messages through buses called subjects, which can be user-defined and include everything from sensor data collection to actuator commands. Nodes can also advertise services or actions that provide a single result with a beginning and an end, such as capturing a single image frame. A database shared between nodes, known as a parameter server, allows common access to static and non-static information, such as data that rarely changes.
Additionally, the core functionality of ROS includes tools that can be used by developers to visualize data, navigate package structures, and create scripts that automate complex setups and configuration processes. These include “rviz”, a 3D viewer used to image robots, sensor data and their working environments, and “rosbag”, a command line tool to record and read message data, and system catkin ROS construction.
Some of the add-on packages for the core ROS platform include Mapping and Localization (2D/3D SLAM), Navigation, Perception, Coordinate Frame Representation, and Simulation. The toolset also includes “rosbash”, an application that provides a subset of tools to augment the functionality of a Unix-based bash shell and command language. Finally, core functionality includes “roslaunch”, a tool used to launch multiple nodes, both locally and remotely, and set parameters for servers where nodes send and receive topics.
So what are the features SAR 2 to supply? The platform uses much of the same core components, tools and libraries as its predecessor and includes a number of new features such as an improved communications stack with Real-Time Data Delivery Service (DDS ). DDS acts as the middleware for communication between nodes and uses the Quality of Service (QoS) profile to provide real-time communication, scalability, improved performance, and security benefits.
ROS 2 Features
- Discovery, transport and serialization on DDS
- Support for multiple DDS implementations
- Common client library
- Publish/subscribe to topics
- ROS 1/ROS 2 communication bridge
- DDS security support
- Quality of Service Settings for Non-Ideal Networks
- Composition of node requirements (compile, link, load, runtime)
- Support for nodes with managed lifecycles
- Launch system to coordinate multiple nodes
- Namespace support for nodes and topics
- Static remapping for ROS names
- Preliminary real-time code support
- Preliminary support for bare metal microcontrollers
- Demos for an all-ROS 2 mobile robot
ROS 2 also provides several logging enhancements, allowing users to specify per-logger logging levels and configure their logging directory via environment variables. In addition to that, it has the ability to configure QoS at startup and offers enhancements to the ROS 2 CLI, including echoing serialized topic data, representing YAML data, and the ability to load settings files at run time. Other features include a new time panel for RViz2, a new and improved Connext RMW implementation, and improved rosbag2 performance.
In addition to numerous bug fixes and performance increases, the latest version of Galactic includes Red Hat Enterprise Linux (RHEL) V8 as a level 2 operating system, which can be used as an open source base for ROS 2. Additionally, Galactic maintains over 500 ROS 2 packages from over 192 contributors to increase the functionality of a unlimited number of robotic applications.