ROS package for ADI(Analog Devices Inc.)'s IMU sensors
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

adi_driver Build Status CircleCI

This package contains ROS driver nodes for Analog Devices(ADI) sensor products mainly communicate by SPI(Serial Periferal Interface).

Currently supported devices are:

  • ADIS16470

    • Wide Dynamic Range Mini MEMS IMU
  • ADXL345:

    • 3-Axis, ±2 g/±4 g/±8 g/±16 g Digital Accelerometer
    • The support for this device is experimental

You need a SPI interface on your PC to communicate with device. This package supports Devantech's USB-IIS as the USB-SPI converter.



USB-IIS is a USB to Serial/I2C/SPI converter, simple, small and easy to use. You don't need any extra library like libusb or libftdi. The device is available on /dev/ttyACM* as modem device.

Please consult the product information and SPI documentation for the detail.


You need to remove the jumper block on Power link pins to provide 3.3V for the device.

You need to add your user to dialout group to acces /dev/ttyACM* .

$ sudo adduser your_user_name dialout

If it takes several seconds until /dev/ttyACM* available, you need to uninstall modemmanager as:

$ sudo apt remove modemmanager



ADIS16470 is a complete inertial system that includes a triaxis gyroscope and a triaxis accelerometer.

You can use Breakout board for easy use.


You need to build a flat cable to connect the USB-ISS and the ADIS16470 breakout board. The picture shows a implementation.

Very simple schematic is here. J1 is the USB-ISS pin and J2 is the 2mm pin headers on the ADIS16470 breakout board.

Note: you only need to connect one of the power-line(3.3V and GND). They are connected in the breakout board.


  • J1: 2550 Connector 6pin
  • J2: FCI Connector for 1.0mm pitch ribon cables
  • 1.0 mm pitch ribon cable

Quick start

Connect your sensor to USB port. Run the launch file as:

$ roslaunch adi_driver adis16470.launch

You can see the model of ADIS16470 breakout board in rviz panel.


  • /imu/data_raw (sensor_msgs/Imu)

    IMU raw output. It contains angular velocities and linear accelerations. The orientation is always unit quaternion.

  • /imu/data (sensor_msgs/Imu)

    IMU filtered output by imu_filter_madgwick. It contains angular velocities and linear accelerations. The orientation is always unit quaternion.

  • /imu/temperature (sensor_msgs/Temperature)

    Temperature of the IMU. To publish this message, you need to set true the parameter named 'publish_temperature'. See sample launch file.


  • /imu/bias_estimate

    This service activate ADIS16470's internal bias estimation function. You should call this service after the IMU is placed steady for at least 40 seconds. The bias value of the gyro sensors are calcuarated as the average of the duration. The sensor value are obtained after it is substracted by the bias value. The bias value is stored on the chip and cleared when it powered up or reset.



The ADXL345 is a small, thin, low power, 3-axis accelerometer with high resolution (13-bit) measurement at up to ±16g. At this moment, support for this device is experimental.