Introduction
What is ROS?
Reference: https://www.theconstructsim.com/what-is-ros/
ROS stands for Robot Operating System. Even if it says so, ROS is not a real operating system since it goes on top of Linux. ROS is a set of software libraries and tools for building robot applications. Also, ROS is a middleware framework on top of the OS that allows it to abstract the hardware from the software. This means software engineers can think in terms of software for all the hardware of the robot.
ROS is becoming the industry standard in robotics programming. Initially, ROS started at universities, but quickly spread into the business world. Every day, more and more companies and startups are basing their businesses in ROS. One of the reasons our team chooses ROS as the software framework is because of its large community, good support and documentation.
The ROS is a flexible framework for writing robot software. It is a collection of tools, libraries, and conventions that aim to simplify the task of creating complex and robust robot behavior across a wide variety of robotic platforms.
ROS Core Components
ROS was built from the ground up to encourage collaborative robotics software development. This is particulary important in our team - For example, one group might have experts in hardware communication, and could contribute to new hardware interfaces with the computer. Another group might have experts at motion planning, and yet another group might be working on the finite-state machine of the robot.
ROS was designed specifically for groups like these to collaborate and build upon each other's work.
To allow packages created by different groups to be able to function with each other, ROS provides a framework to facilitate inter-process communication.
At the lowest level, ROS offers a message passing interface that provides inter-process communication and is commonly referred to as a middleware.
The ROS middleware provides these facilities:
- publish/subscribe anonymous message passing
- recording and playback of messages
- request/response remote procedure calls
- distributed parameter system
Tools
One of the strongest features of ROS is the powerful development toolset. These tools support introspecting, debugging, plotting, and visualizing the state of the system being developed. The underlying publish/subscribe mechanism allows you to spontaneously introspect the data flowing through the system, making it easy to comprehend and debug issues as they occur. The ROS tools take advantage of this introspection capability through an extensive collection of graphical and command line utilities that simplify development and debugging.
Therefore, learning how to develop with ROS is an essential part of being a software engineer in our team.
ROS 1 vs. ROS 2
ROS has two major versions: ROS 1 and ROS 2. Our team has been using ROS 1 for many years. We have just transitioned our code base to ROS 2, which provides additional benefits, such as real-time capabilities, improved security, multi-platform support, and a more modern middleware architecture. For more information, you can have a look at difference between ROS 1 and ROS 2.
Self Learning Labs
Let's get started! :muscle: Please refer to the list of labs on the left sidebar. You should complete each lab in the order specified in the sidebar.