Versions #
Product Name | Type | Generation | Product Number |
---|---|---|---|
olixSense X1 | USB-C Dual Redundant | 01 | OIMU-X1S-9DOF |
olixSense X1 | USB-C Dual Redundant | 02 | OIMU-X1S-9DOF2 |
olixSense X1 Pro | USB-C Tripple Redundant | 01 | OIMU-X1P-9DOF |
Product Name | Type | Generation | Product Number |
---|---|---|---|
olixSense E1 Pro | Ethernet Tripple-Redundant | 01 | OIMU-E1P-9DOF |
![]() OLVX™-IMU-X01-Gen1 (Deprecated) | ![]() OLVX™IMU-X01-Gen2 (Deprecated) |
![]() OLVX™IMU-X01-Pro | ![]() OLVX™IMU-E01-Pro |
Sensor Details #
The OlixSense™ is a IMU sensor designed for use in robotics and other applications that require precise attitude and heading information. It uses a redundant 9 degree-of-freedom (DOF) sensor array, which provides accurate and stable measurements of orientation and angular velocity with a 3-axis gyroscope, 3-axis accelerometer, and 3-axis magnetometer.
Datasheet #
Sensor System Architecture #

Components #
- 3-axis gyroscope: The IMU module features a 3-axis gyroscope that provides accurate and reliable angular rate data in all three dimensions (x, y, z). This allows you to measure the orientation of the IMU module with respect to a fixed reference frame, and to track the changes in orientation over time.
- 3-axis accelerometer: The IMU module also features a 3-axis accelerometer that provides accurate and reliable acceleration data in all three dimensions (x, y, z). This allows you to measure the linear acceleration of the IMU module with respect to a fixed reference frame, and to track the changes in linear acceleration over time.
- 3-axis magnetometer: The IMU module also features a 3-axis magnetometer that provides accurate and reliable magnetic field data in all three dimensions (x, y, z). This allows you to measure the magnetic field of the IMU module with respect to a fixed reference frame, and to track the changes in magnetic field over time.
3D Coordinate System #
![]() OLVX™-IMU-X01-Gen1 (Deprecated) | ![]() OLVX™IMU-X01-Gen2 (Deprecated) |
![]() OLVX™IMU-X01-Pro | ![]() OLVX™IMU-E01-Pro |
Key Features #
- 9-degree-of-freedom orientation and acceleration measurements
- Maximum data rate of 1000 Hz
- Attitude and heading reference system (AHRS)
- Compact and lightweight design
- USB Type-C and Ethernet over USB communication options
- Out-of-the-box ROS1 (via bridge) & ROS2 (native) support
Technical Specifications #
OLVX™ IMU Technical Specifications #
General Specifications #
Part Number | OLVX™-IMU-U02X9D |
---|---|
Connection Interface | USB Type-C |
Communication Protocol | ROS 1&2 (Virtual Ethernet / IPV4) |
Gyroscope Range | ± 2000 deg/sec |
Accelerometer Range | ± 16 g |
Magnetometer Range | ± 4 gauss |
Sample Rate | 1000 Hz |
Performance Metrics | Covariance Matrix |
Native ROS Messages | sensor_msgs/Imu, sensor_msgs/Temperature |
Operating Temperature | 0°C ~ 55°C |
System Performance #
AHRS Accuracy | Specification |
---|---|
Roll, Pitch (Static, AHRS Mode, Max Rate 100 Hz) | 0.42° |
Roll, Pitch (Dynamic, AHRS Mode, Max Rate 100 Hz) | 0.85° |
Roll, Pitch (Dynamic, IMU Mode, Max Rate 2000 Hz) | 1.05° |
Heading (Static, AHRS Mode, Max Rate 100 Hz) | ±1.2° |
Heading (Dynamic, AHRS Mode, Max Rate 100 Hz) | ±2.8° |
Heading (Dynamic, IMU Mode, Max Rate 2000 Hz) | ±0.8° ±0.06 dps |
IMU Sensor Details #
Specification | Accelerometer | Gyroscope | Magnetometer |
---|---|---|---|
Range | ±4g, ±8g, ±16g | ±250°/s, ±500°/s, ±1000°/s | ±1300 µT |
Resolution | 16-bit or 0.06 mg/LSB | 16-bit or 0.004 dps/LSB | 16-bit |
Sensitivity | 2048 LSB/g @ ±16g | 262.1 LSB/dps @ ±125°/sec | ±0.3 µT |
Sensitivity Tolerance | ±4% @ Ta = 25°C, gFS2g | ±3% @ Ta = 25°C, RFS2000 | ±0.03% (API compensated) |
Zero-rate Offset | ±20 mg | ±0.5 dps | – |
Output Noise Density | 160 µg/√Hz | 0.008 dps/√Hz | – |
Zero-g Offset (x, y, z) | ±150 mg (gFS2g, Ta=25°C) | ±3 dps | – |
Nonlinearity | 0.5% FS @ Ta=25°C | 0.01% FS | 1.2% FS |
Interface Connection #
Parameter | Specification |
---|---|
Connector | USB Type-C |
Communications Interface | Ethernet Over USB |
Output Data Rate | 1-2000 Hz (Raw and Fused Data) |
Protocols (DDS) | rmw_fastrtps_cpp, rmw_cyclonedds_cpp (Upgradeable to rmw_connext_cpp & rmw_zenoh) |
Physical and Electrical Characteristics #
Parameter | Specification |
---|---|
Weight | 32 g |
Size | 40.0 mm x 40.0 mm x 10.0 mm |
Power Consumption | 0.9 W (Typical), 1.8 W (Max) |
Operating Voltage | 4.6 to 5.5 VDC (USB PD 2.0 Standard) |
Operating Temperature | 0°C to 85°C |
Interface LEDs | 3x (Heartbeat, User, System) |
IMU Noise and Random Walk Parameters #
Parameter | AHRS | IMU |
---|---|---|
Accelerometer Noise Density | 150 µg/√Hz | 180 µg/√Hz |
Accelerometer Random Walk | 0.04 m/s/√hr | 0.05 m/s/√hr |
Gyroscope Noise Density | 0.03 °/s/√Hz | 0.01 °/s/√Hz |
Gyroscope Random Walk | 1.5 °/hr/√Hz | 1.0 °/hr/√Hz |
Demo #

Unboxing #
Setup and Test: #
- Follow the Quick Start Guide for Olive Robotics robot modules to connect the device and start using it.
- For more information about the IMU setup and user interface, refer to the demonstration below:
- When the IMU module is correctly connected to your system, you can check that the expected ros topics are present.
- On your host PC run:
ros2 topic list
- The following ROS topics should be shown:
- On your host PC run:
- Patch 1733
- Patch >1787
- /olive/imu/id001/filtered_imu
- /olive/imu/id001/filtered_ahrs
- /olive/imu/id001/linear_accel
- /olive/imu/id001/magnetometer
- /olive/imu/id001/status
- /olive/imu/id001/temperature
- /olive/imu/id001/twist
- /olive/imu/id001/feedback
- /tf
- /olive/imu/id001/mpu
- /olive/imu/id001/ahrs
- /olive/imu/id001/acceleration
- /olive/imu/id001/magneticfield
- /olive/imu/id001/status
- /olive/imu/id001/temperature
- /olive/imu/id001/velocity
- /olive/imu/id001/feedback
- /tf
The number id001 is your device’s default namespace.
By default, the magnetometer is disabled, making the sensor output relative. To enable the magnetometer and perform calculations based on magnetometer calibration, set the operation_mode parameter to AHRS+ / AHRS
- All topics shown are publishers, meaning that they publish data to the ROS network. In the command line interface you can verify that they are in fact publishing data using for example:
ros2 topic echo /olive/imu/id001/filtered_ahrs
- Visualize the data using:
- Embedded Web Interface (https://olive-robotics.com/docs2/olive-embedded-web-based-gui/)
- rqt (https://olive-robotics.com/docs2/ros-rqt-interface/)
- rviz2 (https://olive-robotics.com/docs2/rviz-2/).
- Visualize the data and change the parameters like IP, Topic Name, etc using the embedded web interface. You just need to open your browser on your host computer and enter the IP address of the device. If you didn’t change the default IP address, then it must be
192.168.7.1
00.
ROS Topics and Services #
Topics #
- Patch 1733
- Patch >1787
Topic Name | Message Type | Type | Description |
---|---|---|---|
/filtered_ahrs | sensor_msgs/Imu | Publisher | AHRS optimized acc/gyro/quaternion |
/filtered_imu | sensor_msgs/Imu | Publisher | High dynamic acc/gyro/quaternion |
/linear_accel | geometry_msgs/msg/AccelStamped | Publisher | Gravity compensated acceleration |
/magnetometer | sensor_msgs/MagneticField | Publisher | Messured magnetic field |
/status | diagnostic_msgs/DiagnosticStatus | Publisher | Device status |
/feedback | std_msgs/msg/Float32MultiArray | Publisher | Sensor IO loops |
/temperature | sensor_msgs/msg/Temperature | Publisher | Sensor temperature |
/pose | geometry_msgs/msg/PoseStamped | Publisher | 3D Position (Estimation) |
/twist | geometry_msgs/msg/TwistStamped | Publisher | 3D Velocity (Estimation) |
/tf | tf2_msgs/msg/TFMessage | Publisher | TF |
filtered_AHRS: This provides improved quaternion calculations (roll, pitch, yaw), making it more robust against drift and vibrations. It operates efficiently at up to 100 Hz.
filtered_IMU: This topic is optimized for higher sample rates, up to 2000 Hz, focusing on minimizing latency and improving accuracy in accelerometer and gyroscope data.
Summary:
- If high sample rate and sensor accuracy are important: use filtered_IMU.
- If roll, pitch, and yaw are critical: use filtered_AHRS.
Topic Name | Message Type | Type | Description |
---|---|---|---|
/ahrs | sensor_msgs/Imu | Publisher | AHRS optimized acc/gyro/quaternion |
/mpu | sensor_msgs/Imu | Publisher | High dynamic acc/gyro/quaternion |
/acceleration | geometry_msgs/msg/AccelStamped | Publisher | Gravity compensated acceleration |
/magneticfield | sensor_msgs/MagneticField | Publisher | Messured magnetic field |
/status | diagnostic_msgs/DiagnosticStatus | Publisher | Device status |
/feedback | std_msgs/msg/Float32MultiArray | Publisher | Sensor IO loops |
/temperature | sensor_msgs/msg/Temperature | Publisher | Sensor temperature |
/pose | geometry_msgs/msg/PoseStamped | Publisher | 3D Position (Estimation) |
/velocity | geometry_msgs/msg/TwistStamped | Publisher | 3D Velocity (Estimation) |
/tf | tf2_msgs/msg/TFMessage | Publisher | TF |
AHRS: This provides improved quaternion calculations (roll, pitch, yaw), making it more robust against drift and vibrations. It operates efficiently at up to 100 Hz.
MPU: This topic is optimized for higher sample rates, up to 2000 Hz, focusing on minimizing latency and improving accuracy in accelerometer and gyroscope data.
Summary:
- If high sample rate and sensor accuracy are important: use MPU.
- If roll, pitch, and yaw are critical: use AHRS.
Services #
Service Name | Service Type | Type | Description |
---|---|---|---|
/setBias | std_srvs/srv/Trigger | Service | Calibrating the sensor’s bias offset values |
/setZeroQuaternion | std_srvs/srv/Trigger | Service | Resetting the sensor’s rotation axis |
/setZeroPose | std_srvs/srv/Trigger | Service | Resetting the sensor’s position estimation |
Calibrating the sensor’s bias offset values: #
By calling the setBias
service or triggering it from the GUI, the sensor will collect bias values to minimize the zero offset. During this process, please ensure that the sensor remains completely stable and is not moving. It is also important to call the service when the sensor is placed in the correct Orientation: the Olive logo facing up and the four screw holes facing down.

Resetting the sensor’s rotation axis: #

The gain effect of the low-pass filter: #

Advanced Settings #
The device allows certain parameters to be changed at runtime. To get an overview of all changeable parameters use
ros2 param list
To change a parameter use
ros2 param set /dcm_imu <parameter> <new_value>
IMU Parameters #
Name | Description | Type | Default Value | Range / Options |
---|---|---|---|---|
operation_mode | Change sensor operation mode: AHRS-, AHRS, AHRS+. | string | AHRS- | AHRS- | AHRS | AHRS+ |
enable_tf_publisher | Publish a dedicated tf with respect to filtered IMU data. | bool | true | – |
enable_fusion_publisher | Activate the fusion data publisher. | bool | true | – |
enable_linear_acc_publisher | Activate the linear gravity-compensated accelerometer publisher. | bool | true | – |
enable_startup_zero_quaternion | Reset quaternion on system startup. | bool | true | – |
enable_ahrs_publisher | Activate the filtered AHRS data publisher. | bool | true | – |
ahrs_publish_rate | Publish rate for filtered AHRS data. | int | 100 | [0, 100] Hz |
enable_temperature_publisher | Activate the temperature data publisher. | bool | true | – |
enable_twist_publisher | Activate the twist (velocity) data publisher. | bool | true | – |
imu_acc_cutoff_frequency | IMU accelerometer cutoff frequency (0 disables). | double | 100.0 | [0, 500] Hz |
imu_acc_ema_gain | EMA gain for IMU accelerometer (0 disables). | double | 0.9 | [0, 1] |
imu_gyro_cutoff_frequency | IMU gyroscope cutoff frequency (0 disables). | double | 100.0 | [0, 500] Hz |
imu_gyro_ema_gain | EMA gain for IMU gyroscope (0 disables). | double | 0.9 | [0, 1] |
ahrs_acc_cutoff_frequency | AHRS accelerometer cutoff frequency (0 disables). | double | 100.0 | [0, 500] Hz |
ahrs_acc_ema_gain | EMA gain for AHRS accelerometer (0 disables). | double | 0.5 | [0, 1] |
ahrs_gyro_cutoff_frequency | AHRS gyroscope cutoff frequency (0 disables). | double | 100.0 | [0, 500] Hz |
ahrs_gyro_ema_gain | EMA gain for AHRS gyroscope (0 disables). | double | 0.5 | [0, 1] |
ahrs_mag_cutoff_frequency | AHRS magnetometer cutoff frequency (0 disables). | double | 100.0 | [0, 500] Hz |
ahrs_mag_ema_gain | EMA gain for AHRS magnetometer (0 disables). | double | 0.5 | [0, 1] |
fusion_gain | Fusion gain for sensor data fusion. | double | 0.1 | [0, 1] |
fusion_publish_rate | Publish rate of fusion data. | int | 500 | [0, 1000] Hz |
gyro_zero_cutoff_threshold | Gyro zero cutoff threshold (0 disables). | double | 0.005 | [0, 1] |
linear_acc_zero_cutoff_threshold | Linear acceleration zero cutoff threshold (0 disables). | double | 0.2 | [0, 1] |
topic_publisher_qos | QoS type for all topic publishers. | string | reliable | besteffort | reliable |
Detailed Parameter Descriptions #
operation_mode
Change the internal sensor operation mode: AHRS+ for absolute orientation with fast magnetic calibration, AHRS for absolute orientation without fast magnetic calibration, AHRS- for relative orientation with the magnetometer disabled.
Options: AHRS- | AHRS | AHRS+
enable_tf_publisher
Enabling this will publish a dedicated transformation (tf) frame with respect to the filtered IMU data, useful for applications requiring precise spatial orientation.
enable_fusion_publisher
Enabling this will activate the fusion data publisher.
enable_linear_acc_publisher
Enabling this will activate the linear, gravity-compensated accelerometer data publisher.
enable_startup_zero_quaternion
Enabling this will reset the quaternion values to zero upon system startup for consistent initial conditions.
enable_ahrs_publisher
Enabling this will activate the filtered AHRS (Attitude and Heading Reference System) data publisher.
ahrs_publish_rate
Sets the publish rate for the filtered AHRS data in Hz.
Range: [0, 100]
enable_temperature_publisher
Enabling this will activate the temperature data publisher.
enable_twist_publisher
Enabling this will activate the twist (angular and linear velocity) data publisher.
imu_acc_cutoff_frequency
Sets the cutoff frequency for the IMU accelerometer. A value of zero disables the cutoff filter.
Range: [0, 500] Hz
imu_acc_ema_gain
Sets the exponential moving average (EMA) gain for the IMU accelerometer. A value of zero disables EMA filtering.
Range: [0, 1]
imu_gyro_cutoff_frequency
Sets the cutoff frequency for the IMU gyroscope. A value of zero disables the cutoff filter.
Range: [0, 500] Hz
imu_gyro_ema_gain
Sets the exponential moving average (EMA) gain for the IMU gyroscope. A value of zero disables EMA filtering.
Range: [0, 1]
ahrs_acc_cutoff_frequency
Sets the cutoff frequency for the AHRS accelerometer. A value of zero disables the cutoff filter.
Range: [0, 500] Hz
ahrs_acc_ema_gain
Sets the exponential moving average (EMA) gain for the AHRS accelerometer. A value of zero disables EMA filtering.
Range: [0, 1]
ahrs_gyro_cutoff_frequency
Sets the cutoff frequency for the AHRS gyroscope. A value of zero disables the cutoff filter.
Range: [0, 500] Hz
ahrs_gyro_ema_gain
Sets the exponential moving average (EMA) gain for the AHRS gyroscope. A value of zero disables EMA filtering.
Range: [0, 1]
ahrs_mag_cutoff_frequency
Sets the cutoff frequency for the AHRS magnetometer. A value of zero disables the cutoff filter.
Range: [0, 500] Hz
ahrs_mag_ema_gain
Sets the exponential moving average (EMA) gain for the AHRS magnetometer. A value of zero disables EMA filtering.
Range: [0, 1]
fusion_gain
Adjusts the fusion gain used for combining sensor data. A smaller value gives slower, more stable fusion, while a larger value makes it more responsive.
Range: [0, 1]
fusion_publish_rate
Sets the publish rate for fusion data in Hz.
Range: [0, 1000]
gyro_zero_cutoff_threshold
Specifies a zero cutoff threshold for the gyroscope output. Values below this threshold are considered noise and set to zero. A value of zero disables the threshold.
Range: [0, 1]
linear_acc_zero_cutoff_threshold
Specifies a zero cutoff threshold for the linear acceleration output. Values below this threshold are considered noise and set to zero. A value of zero disables the threshold.
Range: [0, 1]
topic_publisher_qos
Defines the Quality of Service (QoS) setting for all topic publishers
Options: besteffort | reliable
reliable: Ensures reliable delivery by retrying transmissions until acknowledged.
besteffort: Prioritizes low-latency delivery, allows some data loss.
Notes: #
Ensure consistency between your fusion rate, AHRS rate, and QoS settings depending on your application needs.
Any EMA Gain = 0 or Cutoff Frequency = 0 disables that specific filter.
System #
Parameter | Type | Range Min | Range Max | Default | Description |
---|---|---|---|---|---|
frequency | int | 0 | 10 | 1 | System status publish rate |
Downloads #
Downloads (OLVX™-IMU-X01-G1) #
Downloads (OLVX™-IMU-X01-G2) #
Type | Format | Version | Link |
---|---|---|---|
3D Models | |||
STP | 1.0 | download |
Mechanical Details #
(OLVX™-IMU-X01-G1) #

(OLVX™-IMU-X01-G2) #
