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 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
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.
Let's get started! Please refer to the list of labs on the left sidebar. You should complete each lab in the order specified in the sidebar.