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:
- 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.).
- 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:
- 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.
- 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.
- 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:
- Autonomous Vehicles: ROS2 is used in self-driving cars for tasks like sensor integration, perception, decision-making, and actuation.
- Industrial Automation: In factories, ROS2 can be used to control robotic arms, conveyor belts, and other machinery, integrating them into a cohesive system.
- Research and Education: It's widely used in academic and research settings for developing and testing new robotic concepts and algorithms.
- 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 |