Analog Devices ROS2

Welcome to Analog Devices Inc ROS2 documentation!

Overview

The Analog Devices Robotics SDK provides a collection of ROS2 packages and 3rd party tools for robotics applications. The adi_ros2 Github Repository aggregates various ADI ROS2 packages into pre-configured Docker images, offering a ready-to-use environment for diverse hardware platforms.

Supported Platforms

The Analog Devices Robotics SDK Docker images are available for multiple platforms and architectures to support diverse hardware deployments:

Host Platforms

Platform

Docker Repository

Use Cases

x86_64 (amd64)

astanea/adi_ros2

Development workstations, servers, edge computing devices, etc.

ARM64 (arm64)

astanea/adi_ros2

ARM-based servers, development boards (Raspberry Pi 4+), etc.

Jetson (arm64)

astanea/adi_ros2-l4t

The image targets NVIDIA’s official L4T base image for Jetson platforms.

Docker Image Variants

The Analog Devices SDK provides three Docker image variants that incrementally add more packages to address different user requirements:

Variant

Description

base

Includes a basic ROS2 installation plus all Analog Devices ROS2 packages and their dependencies.

full

Builds upon the base stage by adding popular 3rd party tools such as Navigation2, SLAM Toolbox, and CANopen for advanced robotics applications.

desktop

Extends the full stage with essential ROS desktop packages, providing development and visualization tools like RViz, rqt, and other GUI applications.

Warning

While the SDK is containerized and should work on any Docker-compatible host, hardware-specific features (IMU, IIO devices, motor controllers) require appropriate driver support on the host system.

Supported ROS2 Distributions:

Getting Started

Note

For a quick start, it is recommended to use one of the pre-build Docker images. These images contain pre-built ROS2 packages installed in an overlay at /opt/ros/adi_ros2 which is automatically sourced when the container starts.

For a complete list of available tags and image variants, visit one of the Docker repositories listed in the Host Platforms section.

  1. Pull the Docker Image

To get started, you can pull the latest version of your desired image from Docker Hub. For example:

sudo docker pull astanea/adi_ros2:humble-amd64-desktop
  1. Run the Docker Container

To run the container:

  • (Optional`) Allow external applications to connect to the host’s display (for GUI applications):

    xhost +
    
  • Run the Docker container with the necessary options:

    sudo docker run \
          -it --rm \
          --net=host \
          --ipc=host \
          --privileged \
          --env="DISPLAY" \
        astanea/adi_ros2:humble-amd64-desktop
    

Arguments explained:

  • -it: Run the container in interactive mode with a TTY.

  • --rm: Automatically remove the container when it exits.

  • --net=host: Use the host’s network stack.

  • --ipc=host: Share the host’s IPC namespace, useful for inter-process communication.

  • --privileged: Grant extended privileges to the container for hardware access.

  1. Run Examples

Once inside the container, you can run examples from any of the ADI ROS2 packages. Each package in the Repositories and Packages section below contains documentation with ROS2 command snippets and usage examples to get you started.

Repositories and Packages

Use this index to find the ROS2 packages you need provided by Analog Devices Inc as well as examples on how to use them.

Repository Docs

Package Name

API Docs

Description

adi_ros2

adi_meta

N/A

This package serves as a meta-package that aggregates all ROS2 packages provided by Analog Devices Inc. It simplifies the installation process by providing a single package that depends on all individual ROS2 packages, ensuring that users can quickly and easily install the entire ADI suite.

iio_ros2

adi_iio

adi_iio API

This package interfaces with IIO devices, providing a comprehensive framework for integrating industrial I/O systems into modern robotics solutions. It offers services to read/write IIO attributes, manage IIO buffers, and attach topics to these attributes/buffers.

imu_ros2

adi_imu

adi_imu API

A package offering precision MEMS IMU integration with factory-calibrated gyroscopes and accelerometers, ensuring accurate motion data for robotics applications.

adrd2121_imu_ros2

adrd2121_imu

adrd2121_imu API

An implementation of the prior ROS1 package (adrd2121_imu_ros) adapted for ROS2. This is a ROS2 driver for EVAL-ADRD2121-EBZ, a hardware and software platform for allowing high-speed asynchronous sampling of iSensor IMU data such as from ADIS16470 and ADIS16500

tmcl_ros2

adi_tmcl

adi_tmcl API

adi_tmcl (previously tmcl_ros2) is the official ROS2 Driver for ADI Trinamic Motor Controllers (TMC) that uses Trinamic Motion Control Language (TMCL) protocol.

adi_tmc_coe_ros2

adi_tmc_coe adi_tmc_coe_core adi_tmc_coe_interfaces

adi_tmc_coe adi_tmc_coe_core API adi_tmc_coe_interfaces

Official ROS2 Metapackage driver for Trinamic Motor Controller (TMC) boards with CoE (CANopen-over-etherCAT) interface.

adi_3dtof_adtf31xx

adi_3dtof_adtf31xx

adi_3dtof_adtf31xx API

The ADI 3DToF ADTF31xx is a ROS (Robot Operating System) package for working with ADI’s ADTF3175D ToF sensor. This node captures the Depth and AB frames from the sensor and publishes them as ROS topics.

adi_3dtof_floor_detector

adi_3dtof_floor_detector

adi_3dtof_floor_detector API

The ADI 3DToF Floor Detector is a ROS (Robot Operating System) package for the Floor Detection application. The term “Floor Detection” refers to determining where the floor is in the given image. It is an image segmentation problem in which a given image is divided into floor and non-floor pixels. Floor Detection is an essential component of real-world applications such as Robot Navigation, Autonomous Driving, Augmented reality (AR) applications, and ‘Obstacles Detection and Avoidance’ for robots and people with inadequate vision.

adi_3dtof_safety_bubble_detector

adi_3dtof_safety_bubble_detector

adi_3dtof_safety_bubble_detector API

The ADI 3DToF Safety Bubble Detector is a ROS(Robot Operating System) package for the Safety Bubble Detection application. The Safety Bubble Detectors are the basic building block of any AGV/AMR. The safety zone is a virtual area around an AGV/AMR. The Safety Bubble Detectors are used to detect the presence of any object inside this zone and prevent the AGV/AMR from colliding with the object.