🤖
Robotics Handbook
HomeConnect
  • Welcome
    • Authors Note
  • Computer Aided Designs and Simulations
    • Computer Aided Design and Simulations
    • 3D Modelling CAD
      • SolidWorks
    • Simulations
    • PCB Design
  • ROS (Advanced)
    • ROS
    • ROS
      • Concepts and Packages
      • Manual and Quick Setup
    • Some Important packages
  • Hardware
    • Design Processes
      • Materials Selection
      • Build and Prototyping
      • 3D Printing and Machining
    • Fabrication Parts
  • Common Mechanisms
    • Wheels and Drives
    • Power Transmission
  • Career Paths & Research Opportunities
    • Career in Robotics
    • Job Roles In Robotics
    • Conferences and Journals
  • Companies Hiring for Robotics
  • Leading Institutes
  • Mathematical and Programming Foundations
    • Linear Algebra for Robotics
    • Calculus
  • Programming for Robotics
    • Common Languages
    • Algorithms
    • Digital Twin
  • Embedded Systems for Robotics
    • Embedded Systems
    • Microcontrollers
      • Microcontrollers (Advanced Theory)
      • Choosing a Microcontroller
    • Sensors and Actuators
      • Sensors for Robotics
      • Actuators for Robotics
    • Communication
      • Communication Protocols
    • RTOS
    • Power Systems
      • Battery Charging and Storage Best Practices
  • ML and Perception
    • ML and Perception
    • Reinforcement Learning
    • Cameras, Depth Sensors and LiDAR
    • Image Processing Basics (OpenCV)
    • Object Detection and Tracking
    • Example of a Vision Pipeline
  • Mobile Robotics
    • Mobile Robotics
    • SLAM and Navigation
    • Robot Kinematics and Dynamics
      • Some Kinematic Models
    • Trajectory Planning
    • AMR's and AGV's
    • MH633 : Mobile Robotics
      • Geometric Foundations
      • Kinematics
  • Frontiers and Emerging Fields
    • Frontiers and Emerging Fields
    • Humanoids
    • Autonomous Navigation
    • Bio-inspired and Soft Robotics
    • Space Robotics
    • Cobots
    • Edge Robotics
    • Medical Robotics
  • Drones, Rocketry and Aviation
    • Drones
      • Drone Anatomy
    • Rocketry
Powered by GitBook
On this page
  1. ROS (Advanced)
  2. ROS

Concepts and Packages

PreviousROSNextManual and Quick Setup

Last updated 1 day ago

Core Concepts of ROS 1

1. Nodes

  • Definition: Nodes are independent processes that perform computation. Each node is typically responsible for a single task (e.g., reading sensor data, controlling motors, localization).

  • Implementation: Nodes are written using ROS client libraries such as roscpp (C++) or rospy (Python).

2. Master

  • Role: The ROS Master provides name registration and lookup for nodes, topics, and services, enabling nodes to discover and connect with each other.

3. Parameter Server

4. Topics

  • Mechanism: Topics are named message buses for asynchronous, many-to-many communication. Nodes publish messages to topics, and other nodes subscribe to receive those messages.

  • Strong Typing: Each topic enforces a specific message type for data consistency.

5. Messages

6. Services

  • Mechanism: Synchronous, request/response interactions for tasks that require confirmation or a result (e.g., requesting a sensor reading).

7. Bags

8. Filesystem Level

  • Packages: The basic unit of ROS software organization, containing nodes, libraries, configuration files, and more.

Popular and Essential ROS 1 Packages

Package Name
Purpose/Description

tf / tf2

Coordinate frame transforms (essential for robot kinematics)

rviz

3D visualization tool for sensor data, robot models, and planning

ros_control

Framework for controller management and hardware abstraction

moveit

Motion planning and manipulation for robotic arms

navigation

Autonomous navigation stack for mobile robots

gazebo_ros_pkgs

Integration between ROS and Gazebo simulator

urdf

Unified Robot Description Format for robot models

robot_localization

State estimation from multiple sensors

rosbag

Data recording and playback

sensor_msgs, geometry_msgs, std_msgs

Standard message types for sensors, geometry, etc.

image_transport, cv_bridge

Tools for handling images and computer vision

robot_state_publisher

Publishes robot joint states to tf

actionlib

Tools for asynchronous task execution

ros_perception

Perception stack for vision and point cloud processing

rosparam, rosnode, rostopic, rosservice

Core tools for managing ROS system

ROS Industrial

Packages for industrial robot support

rqt

GUI plugins for introspection, plotting, and debugging

  • cv_bridge, image_transport (vision)

  • robot_state_publisher, joint_state_publisher (robot state)

  • dynamic_reconfigure (runtime parameter tuning)

  • catkin (build system)

  • roslaunch, rosbag, rosmsg, rostopic, rosservice, rosnode (core utilities)

  • urdf_tutorial, turtlesim (learning and demos)

References and Further Reading

ROS 2 Concepts and Popular Packages

Core Concepts of ROS 2

ROS 2 is a modern, distributed robotics middleware designed for flexibility, scalability, and real-time performance. It builds on the lessons of ROS 1 and introduces several key architectural and functional improvements.

1. Nodes

  • Definition: Nodes are independent, modular processes that perform computation. Each node can handle a specific function, such as sensor reading, data processing, or actuator control.

  • Types:

    • Standard Node: Basic node with minimal state management.

2. Topics

3. Services

  • Implementation: Defined using .srv files specifying request and response types.

4. Actions

  • Purpose: Actions allow for asynchronous, long-running tasks with feedback and the ability to cancel (e.g., navigation goals, manipulation tasks).

5. Parameters

6. Quality of Service (QoS)

7. Launch System

8. Security

9. Tools and Ecosystem

Popular and Essential ROS 2 Packages

The following packages are widely used and form the backbone of most ROS 2 applications. Your choice may vary depending on your robot and application, but these are considered foundational:

Package Name
Purpose/Description

rclcpp / rclpy

Core C++ and Python client libraries for node development

tf2

Coordinate frame transformations for robot kinematics and sensor fusion

RViz2

3D visualization tool for sensor data, robot models, and planning

ros2_control

Modular, extensible robot control framework

Nav2

Navigation stack for autonomous mobile robots

MoveIt 2

Advanced motion planning and manipulation for robotic arms

Gazebo / Ignition

High-fidelity robot simulation environments

sensor_msgs, geometry_msgs, std_msgs

Standard message types for sensors, geometry, and basic data

image_tools, camera_info_manager

Vision and sensor integration tools

rosbag2

Data recording and playback for ROS 2 messages

robot_state_publisher

Publishes robot joint states to tf2

action_msgs, lifecycle_msgs

Standard messages for actions and node lifecycle management

rqt, RViz2 plugins

GUI tools for introspection, plotting, debugging, and visualization

slam_toolbox

SLAM (Simultaneous Localization and Mapping) for mapping and localization

navigation2 (Nav2)

Advanced navigation and path planning for mobile robots

Perception packages

Includes packages for vision, point cloud processing, and object detection

Other Notable Packages:

  • micro_ros (ROS 2 for microcontrollers)

  • ament_cmake (build system)

  • colcon (build tool)

  • ros2launch (launch management)

  • ros2param (parameter management)

  • ros2topic, ros2service, ros2bag (core CLI tools)

References and Further Reading

Tutorials:

ROS 1 is structured around several key concepts that enable modular, distributed, and scalable robot software development. The main ideas are organized at different levels2:

Communication: Nodes communicate with each other using topics, services, or the parameter server, and are managed at runtime by the ROS Master2.

Operation: Nodes register themselves and their communication interfaces with the Master, which acts like a DNS server for the ROS network. After discovery, nodes communicate directly2.

Purpose: Stores global parameters (key-value pairs) accessible at runtime by all nodes. Used for configuration and tuning of nodes without code changes2.

Transport: Default is TCPROS (reliable TCP/IP), with UDPROS (UDP-based, low-latency) for specific use cases2.

Definition: Strictly defined data structures used to communicate over topics. Defined in .msg files and can include primitive types or nested messages.

Definition: Defined in .srv files with request and response fields.

Purpose: Files (with .bag extension) for recording and replaying topic data. Essential for debugging, simulation, and development.

Workspaces: Directories for building and managing multiple packages together.

While the importance of a package depends on your application, the following are widely used and considered essential in most ROS 1 projects:

Other Notable Packages (from usage statistics):

2

ROS 2 Tutorials:

Lifecycle Node: Supports managed states (e.g., unconfigured, inactive, active, finalized), enabling robust startup, shutdown, and error handling.

Features: Nodes are more modular in ROS 2, can be composed into a single process, and support advanced lifecycle management for reliability.

Mechanism: Topics are named channels for asynchronous, many-to-many publish/subscribe communication. Nodes publish messages to topics, and other nodes subscribe to receive them2.

DDS Integration: ROS 2 uses the Data Distribution Service (DDS) middleware, enabling automatic discovery, decentralized communication, and advanced Quality of Service (QoS) controls.

QoS Policies: Fine-grained control over reliability, durability, deadline, and resource usage, crucial for real-time and safety-critical applications.

Definition: Services provide synchronous, request/response communication. A client sends a request to a service server and waits for a response, suitable for tasks that require confirmation or a result.

Structure: Built on top of topics and services, actions provide goal, feedback, and result channels.

Role: Store configuration and runtime values for nodes. Parameters can be dynamically updated, allowing for flexible system tuning.

Importance: QoS policies (enabled by DDS) let developers specify message delivery guarantees, reliability, and resource constraints for each topic or service, enhancing real-time and distributed performance.

Advancement: ROS 2 uses Python-based launch files, allowing for programmable, flexible system startup and orchestration.

Features: Built-in support for authentication, encryption, and access control, making ROS 2 suitable for commercial and safety-critical deployments.

Developer Tools: ROS 2 offers a suite of tools for introspection, debugging, visualization (e.g., RViz2), plotting, logging, and playback, accelerating development and troubleshooting.

Community: A vibrant, global community contributes to a rich repository of open-source packages, ensuring continuous improvement and innovation.

2

https://wiki.ros.org/ROS/Tutorials
5
3
5
5
5
3
5
3
5
5
5
5
4
6
7
6
ROS Concepts (wiki.ros.org)
The Building Blocks of ROS 1 (Foxglove)
3
Effective Robotics Programming with ROS (Packt)
5
Most Important ROS Packages (Reddit)
4
Top ROS Packages (GitHub Gist)
6
Trossen Robotics: ROS 1 Open Source Packages
https://docs.ros.org/en/humble/Tutorials.html
4
7
4
7
4
6
6
7
4
7
4
6
4
6
4
6
4
7
4
6
4
7
5
7
7
ROS 2 Concepts (docs.ros.org, Foxy)
ROS 2 Concepts (docs.ros.org, Humble)
6
Introduction to ROS 2 (LearnOpenCV)
4
ROS 2 Tutorials (Husarion)
5
Introduction to ROS 2 (MathWorks)
7
Most Important ROS Packages (Reddit)
Playlist encapsualting important concepts
Playlist encapsualting important concepts