Skip to content

Roxbot & ROS

About ROS

ROS2 (Robot Operating System 2) is a set of software tools and libraries designed for developing robotics applications. Think of it as a framework, similar to what you might have encountered in web development, but tailored for the unique requirements of robotics. Here's a breakdown of its purpose, functionalities, and use cases, aimed at software students with a web development background:

Purpose:

  1. Modularity: ROS2 allows developers to create modular software for robots. Just like in web development, where you might use different libraries or modules for different functionalities (like handling database connections, user authentication, etc.), ROS2 lets you create or use different modules for various robot functionalities (like sensing, movement, decision-making, etc.).
  2. Standardization: It provides a standardized way of writing robot software. This is similar to how web development frameworks (like React, Django, or Ruby on Rails) provide standard practices and patterns.

Functionalities:

  1. Communication: One of ROS2's core functionalities is managing communication between different parts of a robot's software. This is similar to how parts of a web application (like the frontend, backend, and database) communicate with each other. In ROS2, this communication can happen through messages, services (like APIs in web dev), and actions.
  2. Hardware Abstraction: ROS2 abstracts hardware details. This means that you can write software without needing to know the intricate details of the hardware, similar to how web development frameworks abstract away the details of HTTP protocols or database connections.
  3. Tools and Libraries: ROS2 comes with a wide range of tools and libraries for common robotic tasks, like navigation, perception, and control. This is akin to using external libraries in web development to add functionalities like image processing or payment gateways.

Use Cases:

  1. Autonomous Vehicles: ROS2 is used in self-driving cars for tasks like sensor integration, perception, decision-making, and actuation.
  2. Industrial Automation: In factories, ROS2 can be used to control robotic arms, conveyor belts, and other machinery, integrating them into a cohesive system.
  3. Research and Education: It's widely used in academic and research settings for developing and testing new robotic concepts and algorithms.
  4. Home and Service Robots: For developing robots that assist with tasks at home or in commercial settings (like cleaning robots or delivery robots).

Analogy with Web Development:

  • Modularity: Just as you would build a web app with different components for the frontend, backend, and database, in ROS2, you build a robotic system with different components for sensing, actuation, decision-making, etc.
  • MVC Framework Analogy: If you're familiar with the Model-View-Controller (MVC) framework in web development, you can think of ROS2 as providing a similar structure for robotics, where different parts of a robot's software handle different aspects of its operation.

ROS in a nutshell

ROS2 is like a web development framework but for robots. It simplifies the complex task of writing software for various robotic components and ensures that these components can work together effectively. Its modular design, standard practices, and rich set of tools make it a go-to choice for anyone venturing into the field of robotics.

About Roxbot

Roxbot is intended as a "ROS light", a simpler and easier to use system that should feel familiar to software developers. Just like a ROS itself, Roxbot is a toolbox, containing tools and building blocks for robotics. Roxbot is not intended as a replacement for ROS, but rather as an addition. Especially when it comes to specific (and complex) toolboxes, like ROS Nav Stack, Roxbot allows for interfacing with those through rosbridge protocol.

The comparison table below provides a side-by-side view of how Roxbot and ROS/ROS2 achieve various functionalities. While Roxbot and ROS/ROS2 share a common goal of providing a comprehensive robotics framework, they employ different technologies and approaches to fulfill these functionalities. Roxbot's design leverages modern open-source modules and established technologies like Docker, MQTT, and asyncio to provide a Python-centric, user-friendly, and scalable robotics development environment. On the other hand, ROS/ROS2, with its robust set of tools and strong community support, continues to be a reliable and comprehensive solution for robotics development.

Functionality Roxbot ROS/ROS2
Modular Design - Central node framework for structured module communication - Nodes and packages for modular development
Easy Configuration - dataclass, pydantic, yaml for configuration - Parameter servers and yaml for configuration
Communication Between Processes - asyncio for intra-subsystem communication - Topics, services, actions for IPC
- mqtt for inter-subsystem communication - Communication layer provided by DDS
- Websocket bridge for frontend integrations
Friendly Hardware Interaction - Hardware abstraction layer and CAN interface - Hardware abstraction through drivers and hardware interface packages
Kinematic Models - Trike, diff-drive, bicycle models - URDF/XACRO for robot description
Diagnostic and Monitoring Tools - Visualization dashboards - rqt, rviz, rosbag for diagnostics and monitoring
Logging and Debugging - Python’s logging, coloredlogs, data logging, influxdb - Built-in logging and debugging tools
Built-in Security - Containerized sub-systems, SSH tunnels - DDS-Security for encryption, authentication, access control
Community-Driven Growth - Community cultivation for collaborative development - Strong community and ecosystem of packages, tools, libraries
Compatibility and Portability - ROS/ROS2 integration via rosbridge, Docker - Standard protocols and interfaces for compatibility and portability
Testing and Simulation Made Easy - "Digital-twin" design principle, simulators, mocks - Gazebo for simulation, testing frameworks for development/testing