Closeup of a hand on a laptop keyboard, controlling robots in the background with ROS.

Building the Foundations of Software Architecture in Autonomous Mobile Robots

By Sarvesh Pimpalkar, Rajesh Mahapatra

As autonomous mobile robots (AMRs) continue to reshape industries with their capabilities in automation, navigation, and complex task execution, building a robust software architecture is paramount. This blog will explore the essential components of the AMR software stack and highlight key considerations for developers.

Building Blocks of AMR Software Architecture

A software stack consists of various subsystems that work together to create a complete platform for running applications. Figure 1 shows a simplified software architecture diagram.  

Figure 1: Simplified AMR software architecture diagram

The hardware abstraction layer allows the operating system to interact with hardware devices at an abstract level without needing to manage the complexities of the hardware itself. As the name suggests, the middleware exists in the middle, acting as a bridge between the operating system and applications. Finally, the application layer facilitates communication with other applications and systems in the network. With these basics, it’s time to dive deeper into the architecture.
 

Key Layers of an AMR Software Stack

Building an efficient software architecture for AMRs requires seamless integration of hardware, middleware, software development kits (SDKs), and end-user applications. Each layer plays a critical role in optimizing performance and enabling AMRs to operate effectively. 

Figure 2 show a more detailed breakdown of each layer and outlines how the integration of hardware and software enhances the overall performance of an AMR.

Figure 2: Detailed AMR software architecture diagram
 

Hardware Abstraction Layer (HAL) or the Embedded Edge Layer

This layer includes low level drivers for sensor hardware such as RADAR, LiDAR, Time-of-Flight (ToF) cameras, and inertial measurement units (IMUs) that provide data for environmental awareness and motion sensing. From an actuation perspective, this layer has low-level drivers for motors and encoders that you will find, for example, within an AMR.

Sensing and actuation activities run on microcontrollers (MCU), compute systems, or systems on chips (SoC), which typically use embedded Linux or RTOS to execute real-time data processing tasks. Low-level drivers within the HAL bridge the gap between hardware and higher-level software by providing direct control over the system’s sensors and actuators.
 

Middleware Layer

The robot operating system (ROS) serves as the primary middleware for open-source/prototyping and quick testing of sensor modalities in AMR development. It provides a rich set of libraries and frameworks that simplify the integration of perception, motion control, and application layers. Both ROS 1 and ROS 2 leverage Ubuntu Linux as the underlying operating system, with inbuilt support for various communication protocols such as USB, Ethernet, etc. Learn more about ROS in the previous blog.

In addition to ROS, the Software Development Kit (SDK) layer provides the building blocks for developing and deploying perception and motion algorithms.
 

Application Layer

The application layer is where high-level functions such as object identification, route planning, and pick-and-place movements come to life. These applications depend on data processed from the lower layers of the stack, and they directly impact how the robot interacts with its environment.

For tasks like route planning and navigation, the seamless integration of perception and motion data ensures that robots can adapt to changing environments quickly. Cloud integration further enhances the robot’s capabilities, extending processing beyond the device. This allows advanced functions like deep learning model training, digital twin simulations, remote monitoring, and fleet management.
 

Best Practices for System Integrators

By offering cutting-edge sensor technologies, edge processing capabilities, and ROS 2 integration packages, Analog Devices empowers system integrators to develop AMRs that are not only intelligent and adaptive, but also reliable and scalable. Our holistic solutions and the best practices below can help developers build AMRs that are well-prepared for the demands of modern automation.

  • Leverage ROS 2 for Flexible, Scalable Development: ROS 2 enables scalability through modularity, making it easy to adapt the system for new sensors or functionalities. Pre-built ROS 21 nodes are readily available from ADI for various functionalities.2,3,4,11

  • Optimize Real-Time Performance with Edge Processing: Efficient edge processing can reduce latency and enhance a robot’s responsiveness. ADI offers modular, real-time tuned, plug-and play-solutions for motor control5, ToF6, IMU7, and BMS8.

  • Utilize SDKs to Customize Applications: SDKs provide tools for tailoring perception and motion algorithms, allowing developers to customize AMR performance for their target applications. ADI provides Linux-based SDKs for motor control9, IMU10, and ToF11.

  • Ensure Secure and Reliable Cloud Integration: When interfacing with cloud services, always incorporate secure communication protocols and data management practices to maintain data integrity.12

To learn more, go to www.analog.com/mobile-robotics.

 

References/Resources

1 Robot Operating System (ROS) Development Platforms

2 Official ROS 2 Driver for Trinamic Motor Controllers (GitHub: tmcl_ros2)

3 ROS 2 Bindings for Time-of-Flight (GitHub: tof_ros2)

4 C++ ROS 2 Node that Reads Sensor Data from ADI IMU and Publishes Message to Topic (GitHub: imu_ros2)

5 TMCM-2611-AGV Dual Axis Servo Drive Platform for 3-phase BLDC Motors

6 EVAL-ADTF3175 Time-of-Flight Evaluation Kit

7 ADIS16500/PCB Breakout Board

8 ADBMS6948 16-channel, Battery Pack Monitoring System

9 TMC Tech Access Package – Open Source IC Software API

10 ADIS16475 IIO Inertial Measurement Unit Linux Driver

11 ADI Time-of-Flight SDK (GitHub: ToF)

12 Ensuring a Secure Future for Robotics: The Role of Cybersecurity