Best Single Board Computer (SBC) for ROS
With the rapid advancement of robotic technology, ROS (Robot Operating System), being a flexible and powerful open-source platform, has emerged as the primary choice in the field of robotics. The extensive application of ROS has also led to its involvement in embedded systems, particularly in Single Board Computer (SBC) platforms. This article aims to elucidate the fundamental concepts of ROS while exploring its application on SBCs and the factors to consider when selecting the optimal SBC platform.
Part One: An Overview of ROS and SBC
What is ROS?
ROS, the abbreviation of Robot Operating System, represents a versatile, scalable, and open-source robotic software platform. It endows developers with an array of tools, libraries, and functionalities to construct robotic applications, encompassing perception, navigation, control, and collaboration, among other aspects.
In the article titled "LattePanda 3 Delta project - building a 2DOF ball balancing robotic platform with ROS2," the author thoroughly acquaints us with the operational mechanisms of ROS.
Here I quote the following:
What is ROS
ROS stands for Robot Operating System. This is a set of software libraries and tools for building robot applications. The project started in 2007, and since then a quantity of drivers and state-of-the-art algorithms and developer tools have been added. At the base of ROS architecture is the concept of "node" A node in ROS is responsible for a single, module purpose (e.g. one node for controlling wheel motors, one node for controlling a laser range-finder, etc). Each node can send and receive data to other nodes via topics, services, actions, or parameters.
Topics are a vital element of the ROS graph that act as a bus for nodes to exchange messages. A node may publish data to any number of topics and simultaneously have subscriptions to any number of topics.
Topics are one of the main ways in which data is moved between nodes and therefore between different parts of the system.
"Simply put, the core concept of ROS is 'nodes.' In ROS, each node is responsible for a specific module function (e.g., one node controls wheel motors, another node controls a laser rangefinder, etc.). Nodes can communicate and exchange data with other nodes through topics, services, actions, or parameters.
Topics are one of the main ways data is passed between nodes, making it a crucial means of interaction between different parts of the system. Through topics, nodes can share and transmit data, enabling the collaboration of the entire system.
The design goal of ROS is to achieve modular robot application development. By using nodes and topics, distributed communication and data sharing are realized, allowing the system to collaborate flexibly and efficiently.
ROS architecture provides a flexible and powerful way to build robot systems, enabling different modules to be independently developed and tested. They can exchange data through topics, thus achieving the functionality of the overall system.
Application Areas of ROS
ROS is currently widely used in the field of robotics. Let's take the example of a vacuum cleaning robot to provide a simple introduction.
1. Perception and Sensing: Vacuum cleaning robots are typically equipped with various sensors such as cameras, LiDAR, infrared sensors, etc. These sensors collect environmental information, such as images, distances, temperatures, etc. ROS offers a complete perception processing framework to handle sensor data. For example, ROS's image processing library can handle images captured by cameras for obstacle recognition and navigation. LiDAR data can be processed using ROS's LiDAR processing library to build environment maps and localization. Additionally, ROS provides sensor data fusion capabilities, allowing integration of data from different sensors to enhance the robot's perception abilities.
2. Navigation and Path Planning: Vacuum cleaning robots need to move freely in the environment, avoid obstacles, and reach specific locations. ROS provides SLAM (Simultaneous Localization and Mapping) algorithms for simultaneous localization and map building in unknown environments. ROS also offers path planning capabilities, enabling the robot to plan a path that avoids obstacles based on the environment map and target location. These features enable vacuum cleaning robots to navigate freely in complex environments.
3. Control and Execution: Vacuum cleaning robots need to control their movements based on navigation and path planning results. ROS provides motion control capabilities for robots, allowing control of wheels, motors, and other hardware devices. Additionally, ROS provides kinematic and dynamic modeling capabilities, enabling simulation of robot movements to help optimize control strategies.
4. Collaboration and Communication: If multiple vacuum cleaning robots need to work together, ROS provides multi-robot system collaboration features. ROS's message passing and communication protocols enable information exchange between robots, facilitating collaborative tasks. For instance, a robot can share its constructed environment map with other robots, helping them quickly understand the surroundings.
As seen from the vacuum cleaning robot example, modern vacuum cleaning robots are becoming more intelligent, requiring advanced sensors like LiDAR and stereo cameras. This increasing complexity demands more computational power from computers, placing higher demands on real-time performance. Therefore, when designing robots, we must consider how to select suitable hardware to meet our requirements.
Part 2: The Role and Selection Factors of SBC in ROS
What is the role of SBC in ROS?
SBCs, as embedded computing platforms, provide computational power and resources for running ROS in resource-limited environments. They serve as hosts for ROS nodes, which are modules responsible for different functionalities, such as sensor drivers, algorithm nodes, and controllers. SBCs offer sufficient computational power and resources to run nodes and execute tasks accordingly.
SBCs can process and analyze data from sensors, perform algorithmic calculations, and computing tasks. ROS nodes can leverage the computational capabilities of SBCs to perform complex data processing and computation tasks, such as image processing, LiDAR data processing, SLAM algorithms, etc.
Nodes in ROS communicate and exchange data through message passing. As the host platform for nodes, SBCs play the roles of message publishers and subscribers, responsible for message passing between different nodes. SBCs provide ROS communication mechanisms and APIs for data exchange and collaboration between nodes.
SBCs can connect and communicate with various hardware devices, such as sensors, actuators, motors, etc. Through ROS's hardware interfaces and drivers, SBCs can control and operate these hardware devices, enabling robot motion control, manipulator operations, etc.
With the development of robot platforms, more mobile robots are appearing in production and daily life. Using SBCs can make our robots smarter and more efficient.
Which SBC platforms does ROS support?
ROS has good cross-platform support and can run on hardware platforms that support Linux operating systems, as long as they meet ROS's hardware and software requirements. Some commonly supported SBC platforms include:
1. Raspberry Pi: Raspberry Pi is a low-cost, low-power SBC platform widely used in the Internet of Things and embedded systems development. ROS has official images and support for Raspberry Pi, allowing ROS to be installed and run on Raspberry Pi.
Hiwonder has launched a quadruped robot named PuppyPi, which is based on Raspberry Pi 4B 4GB and specializes in AI vision. The robot's body is made of aluminum alloy and comes equipped with 8 high-performance coreless servos. The linkage mechanisms in the robot's legs allow it to perform a variety of flexible movements, including walking and climbing stairs. PuppyPi features a first-person view and supports various engaging AI games, such as target tracking, face recognition, line following, and automatic climbing. The robot operates on ROS (Robot Operating System) and is compatible with Gazebo simulation. This offers an excellent platform for learning and verifying machine vision, robot kinematics, and quadruped gait control algorithms. Additionally, a wealth of tutorials and open-source codes are available to help you get started quickly. You can view a video of PuppyPi via the provided link.
2. NVIDIA Jetson series: NVIDIA Jetson is a series of SBC platforms designed for artificial intelligence and robotics applications. It provides high-performance GPU acceleration and deep learning support. ROS has dedicated versions and support for Jetson platforms, such as Jetson Nano, Jetson TX2, Jetson Xavier, etc.
Isaac ROS Visual SLAM provides a high-performance, best-in-class ROS 2 package for VSLAM (visual simultaneous localization and mapping). This package uses a stereo camera with an IMU to estimate odometry as an input to navigation.
3. BeagleBone Black: BeagleBone Black is an open-source hardware platform with rich expansion interfaces and low power consumption. ROS has support for BeagleBone Black, allowing ROS to be installed and run on it.
Some enthusiasts have used BeagleBone to create a hexapod robot, utilizing ROS's visualization tool RViz for better design of the robot's joint movements. The kinematic and inverse kinematic calculations are facilitated by the Kinematics and Dynamics Library, which is integrated into ROS, making it more convenient to modify and adjust the robot's control.
Those interested can check out the following video:
4. Lattepanda series: Lattepanda is an x86-based SBC platform with powerful processors and good hardware compatibility. It uses Intel's Atom or Core processors, offering higher computing performance and larger memory capacity, suitable for running complex ROS applications and processing large-scale data.
We can find someone on youtube to build a robot with lattepanda as a research project.
Which SBC platform performs best in the ROS environment?
When discussing which Single Board Computer (SBC) performs best in the ROS environment, we need to consider the following features:
1. Processing power: Running ROS may require advanced processing power, especially when dealing with complex tasks such as image processing or machine learning. Therefore, choosing a powerful processor is essential.
2. Memory: Depending on the needs of your application, you may require sufficient memory to run multiple ROS nodes.
3. I/O Ports: Robots typically need to interact with the environment through various sensors and actuators. Therefore, your SBC should have enough I/O ports to connect all necessary devices.
4. Power: In mobile robots, power is a critical consideration. The SBC should have an efficient power management system and be able to draw sufficient power from the robot's battery.
5. Operating system compatibility: ROS runs on Unix-like systems such as Linux, so your SBC should be able to run these operating systems.
6. Network connectivity: Robots may need to connect to the network for remote control or software updates. Therefore, your SBC should have a reliable network connection.
7. Size and weight: In some applications, such as drones or small mobile robots, the size and weight of the SBC may be crucial considerations.
Considering these factors, the NVIDIA Jetson series (especially Jetson Xavier NX and Jetson AGX Xavier) performs well in the ROS environment. However, the recent advances in the Lattepanda Sigma series, with its powerful computing capabilities and overall performance, should not be underestimated.
Which SBC has enough computing power to run ROS?
When choosing an SBC to run ROS, computing power is a key factor to consider. Here are some SBC platforms with sufficient computing power to run ROS:
1. NVIDIA Jetson series: The Jetson platforms offer powerful GPU acceleration and deep learning capabilities, suitable for complex computing tasks and machine learning applications. Jetson Xavier NX and Jetson AGX Xavier are high-performance options in the Jetson series, meeting the requirements for running ROS and processing large-scale computing tasks.
2. Lattepanda is a series of x86-based SBC platforms with strong computing power and compatibility. They use Intel's Atom or Core processors, providing higher computing performance and larger memory capacity, suitable for running complex ROS applications and processing large-scale data. Interestingly, Lattepanda offers a capability that some SBCs lack: it provides an Atmel 32u4 microcontroller as a co-processor, allowing it to handle real-time sensor and actuator data.
In project Building a 2DOF ball balancing robotic platform with ROS2 | LattePanda Blog the author comments:
“This project confirms the first impression I had during my review of the Latte Panda 3 Delta SBC: it's an incredible board that can bridge the gap between desktop computing and robotics. You have all the power of a complete x86 desktop at your fingertip AND, at the same time, the hard real-time capabilities provided by the Arduino platform. To be honest, after some tweaking, it would have been great if the LattePanda 3 Delta had two additional features”
Part 3: Selecting an SBC Platform Suitable for ROS Development
1. Which SBC has good community support for ROS development?
When choosing an SBC platform suitable for ROS development, community support is an essential factor to consider. Raspberry Pi series and NVIDIA Jetson series have a large user base and abundant support resources in the ROS community.
2. Which SBC has the best hardware and software compatibility?
In the process of selecting an SBC, considering hardware and software compatibility is necessary to ensure smooth operation of ROS. Among ARM-based platforms, Raspberry Pi series and NVIDIA Jetson series demonstrate good hardware and software compatibility in the ROS environment. In the X86 architecture, the emerging Lattepanda series has made remarkable progress in hardware and software compatibility.
3. Which SBC offers good cost-effectiveness for ROS projects?
When considering cost-effectiveness, Raspberry Pi, once an affordable option suitable for beginners and small-scale ROS projects, has become increasingly scarce and poses challenges for potential users. On the other hand, the NVIDIA Jetson series provides higher performance and more extensive expansion capabilities, suitable for more complex ROS applications and projects. However, the high price may deter some users. The Lattepanda series, with its moderate price and high performance, stands out in today's ROS system, making its cost-effectiveness commendable.
Envisioning the Future
The recent development in robotics seems to have entered a new era, as we witness the introduction of humanoid robots by companies like Tesla, along with numerous Chinese companies launching their own robot platforms. Social media platforms are flooded with videos showcasing robot dogs accomplishing various tasks. Previously niche robot companies are gradually gaining recognition. We can observe that many robotics companies are striving to integrate robots with large language models. Some robots can already perform specific tasks under voice control, while others can autonomously reason and accomplish given objectives. Although some of these endeavors may still appear clumsy, they are the product of the fusion of ROS and LLM. Compared to conventional intelligent algorithms, LLM imposes higher demands on the robot's brain, requiring more computational power and stringent power consumption requirements. In the near future, we can expect to see a proliferation of robots embedded with LLM nodes in our surroundings. Powerful SBCs, such as Lattepanda Sigma, will empower these robots with their impressive computational capabilities.
The application of ROS on SBCs provides flexibility and scalability in robot development. When selecting an SBC platform, factors such as computing power, hardware compatibility, software support, and cost should be considered. Depending on the specific project requirements, an appropriate SBC platform can be chosen, and installation and configuration can be performed following ROS's official documentation and relevant tutorials. Whether for beginners or professional developers, ROS and SBC platforms enable the creation of powerful robot applications." In the future, we anticipate a multitude of intelligent robots empowered by the synergy of ROS and SBCs, making remarkable contributions to the betterment of humanity. This day of remarkable advancements seems within close reach.