Open Source Drivers & SDKs - DAISCH
< rosdep install -i --from-path src >

Designed for Robotics &
Autonomous Systems

Seamlessly integrate DAISCH IM1R inertial modules into your stack. Official drivers for ROS 1 (Melodic/Noetic) and ROS 2 (Foxy/Humble).

ROS Native Support

Publish standard sensor_msgs/Imu and temperature out of the box. Includes custom interfaces for Euler angles and dynamic gyro bias.

ros2 topic echo /imu/data

Open Source C++

Full transparency and performance. Access our high-performance C++ ROS 1 & ROS 2 drivers directly on GitHub. Native implementation ensures minimal latency and CPU overhead with no external Python dependencies. git clone https://github.com/DaischSensor/im1r_ros2_driver.git

git clone .../im1r_ros2_driver.git

Ready to Launch

Compile smoothly via catkin_make or colcon build. Pass serial port and baud rate configurations directly at runtime.

rosrun ... /dev/ttyUSB0 115200
Native Integration

Published Topics

Strict adherence to ROS standards. Our driver publishes standard sensor_msgs for plug-and-play compatibility with packages like robot_localization, plus custom topics for advanced diagnostics.

imu/data
sensor_msgs/Imu

Core inertial data used for navigation, state estimation, and SLAM.

  • orientation
    Quaternion (x, y, z, w)
  • angular_velocity
    3-Axis Gyro (x, y, z) rad/s
  • linear_acceleration
    3-Axis Accel (x, y, z) m/s²
  • header.stamp
    Hardware synchronized time
im1r/extra
VariableTypeDefinitionUnitRemarks
countuint8Message counter-0–255 cyclic increment
timestampuint64Timestamp of the measurementmicroseconds (μs)UNIX time
pitchfloat64Pitch angledegrees (°)
rollfloat64Roll angledegrees (°)
yawfloat64Yaw angledegrees (°)
imu_statusuint8IMU status indicator-See the product manual for bit definitions.
temperaturefloat64Temperaturedegrees Celsius (°C)

Reference Architectures

Validated configurations for popular SLAM and Odometry packages. Copy-paste ready for your launch files.

Visual-Inertial (VIO)

High-frequency IMU data (200Hz+) is critical for VINS to recover scale and handle rapid motion blur.

VINS-Mono ORB-SLAM3
# vins_config.yaml
imu_topic: "/imu/data"
acc_n: 0.08
gyr_n: 0.004
g_norm: 9.81007

LiDAR-Inertial (LIO)

Provides tight-coupling for LiDAR motion de-skewing and robust localization in feature-poor environments (tunnels).

LIO-SAM FAST-LIO2
# params.yaml
imuTopic: "/imu/data"
imuAccNoise: 3.99e-03
imuGyrNoise: 1.56e-03
extrinsicRot: [1, 0, 0, ...]

Sensor Fusion (EKF)

Fuse wheel odometry with IMU gyro/accel to prevent drift. Standard setup for AGVs and indoor mobile robots.

robot_localization nav2
# ekf.yaml
imu0: /imu/data
imu0_config: [false, false, false,
true, true, true, ...]
two_d_mode: true
From Zero to Data

Quick Start Guide

Clone, build, and run the node in under 3 minutes. Our drivers are designed to be lightweight and compile cleanly in your existing workspace.

bash — ROS 2 (Humble / Foxy)
# 1. Create workspace & clone repositories
$mkdir -p ~/ros2_ws/src && cd ~/ros2_ws/src
$git clone https://github.com/DaischSensor/im1r_ros2_interface.git
# 2. Install dependencies & build
$cd ~/ros2_ws
$rosdep install --from-paths src --ignore-src -r -y
$colcon build
# 3. Grant port permission & Launch Node
$sudo chmod 666 /dev/ttyUSB0
$ros2 run im1r_ros2_driver im1r_driver_node --ros-args -p serial_port:=/dev/ttyUSB0 -p baud_rate:=115200
bash — ROS 1 (Noetic / Melodic)
# 1. Create workspace & clone repository
$mkdir -p ~/catkin_ws/src && cd ~/catkin_ws/src
$git clone https://github.com/DaischSensor/im1r_ros1_driver.git
# 2. Build the workspace
$cd ~/catkin_ws
$catkin_make
# 3. Grant port permission & Run Node
$sudo chmod 666 /dev/ttyUSB0
$rosrun im1r_ros_driver daisch_im1r_node /dev/ttyUSB0 115200

Prerequisite: Ensure you have the C++ serial package installed before building. The easiest way is using rosdep: rosdep install --from-paths src --ignore-src -r -y.

Maintainer FAQ

Build & Deployment Support

Authentic technical answers for robotics engineers deploying official DAISCH drivers in Linux/ROS environments.

Yes, Fully compatible. The driver is implemented in native C++, which significantly reduces CPU overhead and improves the real-time performance of data parsing compared to the Python version. You can directly perform local compilation on any ARM64 platform running Linux using catkin_make or colcon build, without worrying about interpreter compatibility issues.
Our C++ driver relies on the standard ROS serial library. If this package is missing from the system, please install:

ROS1:sudo apt-get install ros-$ROS_DISTRO-serial

ROS2: Make sure to runrosdep install --from-paths src --ignore-src -r -y to automatically complete the underlying serial port dependencies.
This is due to insufficient permissions. You can temporarily grant permission by running sudo chmod 666 /dev/ttyUSB0. Recommended approach: Add the current user to the dialout group to obtain persistent permissions (will take effect after a reboot): sudo usermod -a -G dialout $USER
No. This driver is defined as a "lightweight parser", and its core function is to parse the raw serial data stream and publish standard ROS topics. The driver does not have the function to write commands to modify the hardware configuration. If you need to modify the baud rate, output frequency, or perform internal calibration, please refer to the "Product User Manual" and use the upper-level machine configuration tool provided by DAISCH to make the settings.
We have integrated the custom message interface into the driver package. If you are unable to recognize this topic, please ensure:
  1. After compilation, the command source install/setup.bash was executed.
  2. If you are using it in a third-party package, please add the dependency for this driver package in the package.xml .
Please submit Issues through the official GitHub repository (im1r_ros1_driver or im1r_ros2_driver). Our engineering team will regularly follow up.

Power your Autonomy Stack with DAISCH Drivers

Seamlessly integrate high-precision IMU and GNSS data into your robotic software. Get immediate support for standard interfaces (like sensor_msgs/Imu) in ROS 1 and ROS 2.