Preview Mode. Sign in to save progress!
You are in preview mode! Progress will not be saved!
Sign in to save your progress!

What is ROS?

Robot Operating System (ROS) is a flexible framework for writing robot software. It is not an operating system in the traditional sense, but rather, a collection of tools and libraries designed to help create complex and robust robot behavior. Its distributed framework allows different parts of a robot's system to communicate over a network.
ROS - Robot Operating System

Key Components of ROS

Given the flexibility of the ROS framework, there are many different implementations. However, all ROS Implementations have these key components in common:
  • ROS Master: Every instance of ROS has exactly one ROS Master that facilitates the connection between nodes over the network. In our implementation, the ROS Master runs directly on the JetBot to ensure that the JetBot and the Ubuntu VM can find and communicate with each other.
  • Nodes: These are specialized programs that communicate over the network. On the JetBot, publisher nodes include behaviors like broadcasting camera footage and running the LiDAR module. Subscriber nodes on the Ubuntu VM provide a graphical interface for calibration and visualization for map generation.
  • Messages: The nodes exchange information through structured messages. Messages can carry diverse types of data, from sensor readings on the JetBot to commands and feedback from the Ubuntu VM.
  • Topics: Nodes publish or subscribe to topics for message exchange.
 
Key Components of ROS


Flow of Information
While all messages and topics are registered with and coordinated by the ROS Master initially, the actual data transmission does not flow through the ROS Master. This helps in reducing bottlenecks and allows for scalable communication between nodes.

The flow of information can be understood as follows:
  1. The ROS Master acts as a name service, enabling nodes to locate each other on the network. 
  2. When a node starts, it registers with the ROS Master, announcing the topics it will publish to or subscribe from.
  3. After the initial registration and discovery process facilitated by the ROS Master, nodes communicate directly with each other.

JetBot ROS Architecture

This diagram represents the architecture of the JetBot using ROS.
JetBot ROS Architecture

The JetBot may be understood as three main layers:
  1. Hardware Layer: This layer includes the physical components that the JetBot is equipped with, such as Motors, Encoders, an IMU, LiDAR, a Camera, and WiFi.
  2. Driver Layer: This layer contains the software that interfaces directly with the hardware components.
  3. Service Layer: This layer features the Jupyter Labs Server, which provides the web-based interface for controlling the JetBot used in earlier lessons. It also includes ROS Publisher Nodes, which perform specific tasks such as Camera Calibration, AprilTag Navigation, and SLAM. In this architecture, the ROS Master also runs on the JetBot and manages communication between all ROS Nodes. 
Check Your Understanding: What is the primary function of ROS (Robot Operating System)?
Check Your Understanding: Which component of ROS is responsible for facilitating node communication?
Contact Us