Lecture on ROS (Robot Operating System)

Jul 10, 2024

Lecture on ROS (Robot Operating System)

Introduction to ROS

  • ROS stands for Robot Operating System.
  • It's more accurately described as middleware, not an operating system.

Types of Robots

  • Traditional robots: Toy robots, household appliances.
  • Modern robots: Operate closely with humans and in industrial settings.
  • Examples:
    • Inventory management in supermarkets
    • Food delivery in urban areas
    • Medical assistance
    • Self-driving cars

Significance of ROS

  • Facilitates the transition of robots into mainstream use.
  • Connects robots to general computer networks.
  • Open-source and houses a repository of general-purpose libraries.

History of ROS

  • Originated from a project over a decade ago (Willow Garage).
  • Currently overseen by Open Robotics, a non-profit organization.
  • Information and resources available on ros.org.
  • Community-driven with active contributions and extensive documentation on GitHub.
  • Over a decade old; began as an academic project.
  • Migration from ROS 1 to ROS 2 initiated around three years ago to meet new industrial needs.

Differences Between ROS 1 and ROS 2

  • ROS 1: Single point of failure, hub-and-spoke model.
  • ROS 2: Uses DDS (Dynamic Data Services) protocol, a robust peer-to-peer messaging infrastructure.
  • ROS 1 and ROS 2 are generally not interoperable but can be bridged.
  • Community is actively migrating to ROS 2.

Getting Started with ROS

  • Extensive tutorials available covering a range from beginner to advanced topics.
  • Tutorials in languages like Python and C++.

Basic Structure of a Robot

  • Central computer: Usually a Raspberry Pi running the robot application.
  • General-purpose libraries: Interface with technology.
  • Data bus: Typically a USB connection to a controller.
  • Controller to driver: Digital connection to translate digital signals into analog actions and vice versa.
  • Actuators and sensors: Interact with the real world.

ROS Middleware

  • Written applications take advantage of ROS's rich libraries.
  • Provides communication abilities (spread application across multiple computers).
  • Standard constructs: Nodes, Parameters, Topics, Services, and Actions.

Key Constructs

  1. Nodes

    • Low-level computational processes (a process in the robot).
  2. Parameters

    • Multivariate dictionary to describe the robot.
  3. Topics

    • Simple pub/sub messaging structure for sending/receiving messages.
  4. Services

    • Asynchronous requests; blocks until the task is completed.
  5. Actions

    • Request robot to achieve goals (e.g., move to a location).
    • Feeds back progress and status.

Integration of Constructs

  • Standardizes how different robot components communicate and interact (hardware, environment, other machines).
  • Basis for high-level applications (e.g., 3D object recognition, navigation).
  • Applications can be plugged into ROS and combined with various hardware.

Client Libraries

  • Exposes various programming languages: Primarily C++ and Python, also Node.js, Java, etc.
  • Enables diverse languages to create nodes and subscribe to topics.

Conclusion

  • ROS standardizes robotic middleware, enabling integration and communication between components.
  • Provides a robust infrastructure supporting a vast range of applications and programming languages.