All projects

Robotics software

NDI Systems ROS2 Driver

ROS 2 / ros2_control driver for NDI Polaris and Aurora medical tracking systems: sub-millimetre 6-DoF poses at up to 60 Hz for surgical and rehabilitation robotics (ICube Robotics, open source).

NDI Systems ROS2 Driver

Overview

The NDI Systems ROS2 Driver is a comprehensive software stack that bridges Northern Digital Inc. (NDI) optical and electromagnetic tracking systems with the Robot Operating System 2 (ROS2). This professional-grade integration enables medical robotics applications requiring sub-millimeter precision tracking for surgical navigation, rehabilitation robotics, and biomechanical analysis.

Technical Architecture

Hardware Interface Layer

ROS2 Control Integration

Controller Framework

Key Features

Precision Tracking

Medical-Grade Reliability

Clinical Integration

Implementation Details

Core Components

NdiSensorHardwareInterface

class NdiSensorHardwareInterface : public hardware_interface::SensorInterface
{
    // Real-time tracking data acquisition
    hardware_interface::return_type read(const rclcpp::Time & time, 
                                       const rclcpp::Duration & period) override;

    // Tool initialization and management
    void initializeAndEnableTools();
    void loadTool(const char *toolDefinitionFilePath);
};

RigidPoseBroadcaster Controller

class RigidPoseBroadcaster : public controller_interface::ControllerInterface
{
    // Real-time pose publishing
    controller_interface::return_type update(const rclcpp::Time & time, 
                                           const rclcpp::Duration & period) override;
};

Data Flow Architecture

  1. Hardware Layer: NDI API communicates with tracking hardware
  2. Interface Layer: Hardware interface abstracts tracking system specifics
  3. Controller Layer: Specialized controllers process and publish tracking data
  4. Application Layer: Clinical applications consume standardized pose messages

Medical Applications

Surgical Navigation

Rehabilitation Robotics

Research Applications

Technical Specifications

Supported Hardware

Performance Characteristics

Software Requirements

Clinical Impact

This driver enables the integration of professional medical tracking systems into research and clinical robotic applications, supporting advances in minimally invasive surgery, precision rehabilitation, and human-robot collaboration in medical environments. The system has been validated in research settings at ICube Laboratory, University of Strasbourg, contributing to multiple peer-reviewed publications in medical robotics.

Development and Collaboration

Developed in collaboration with ICube Laboratory, University of Strasbourg, this project represents a significant contribution to the medical robotics community by providing open-source access to professional-grade tracking system integration. The modular architecture supports extension to additional NDI systems and integration with custom medical robotic platforms.