SDK Data Reference

IMU Data

A single 6-axis IMU (3-axis gyroscope plus 3-axis accelerometer, no magnetometer) sits inside the back-of-hand module, with two subscription APIs:

APIDataorientation
glove.imu_palm()Raw data: angular velocity + linear accelerationUnavailable (orientation_covariance[0] = -1, see REP-145)
glove.imu_data_palm()Fused data: raw data + complementary-filter orientationAvailable
# Fused data: with orientation
sub = glove.imu_data_palm().subscribe()
imu = await sub.recv_async()
print(f"Orientation: {imu.orientation}")        # quaternion (x, y, z, w)
print(f"Angular velocity: {imu.angular_velocity}")    # rad/s
print(f"Linear acceleration: {imu.linear_acceleration}") # m/s²

# Raw data: angular velocity and linear acceleration only
sub = glove.imu_palm().subscribe()
raw = await sub.recv_async()
print(f"Angular velocity: {raw.angular_velocity}, linear acceleration: {raw.linear_acceleration}")

The fused orientation comes from an SDK complementary filter that starts when the first subscriber opens the stream. Roll and pitch initialize from the first accelerometer frame against gravity and stay stable long term, while yaw has no absolute reference — it zeroes at stream start and drifts slowly over time. Yaw resets only after every subscriber, including indirect ones such as tf, has unsubscribed and the stream restarts.

IMU data is compatible with ROS sensor_msgs/Imu and can be plugged directly into a ROS integration. Both streams can be recorded to MCAP files with TopicRecorder. See the SDK Data Recording page.

ImuData

IMU sensor data, compatible with ROS sensor_msgs/Imu.

FieldTypeDescription
headerFrameHeaderFrame header
orientationQuaternionOrientation quaternion. Fused value on imu_data_palm() only (orientation_covariance[0] = 0) — on imu_palm() it is the identity quaternion with orientation_covariance[0] = -1 marking it unavailable (REP-145)
orientation_covarianceList[float]Orientation covariance matrix (3×3, row-major)
angular_velocityVector3F64Angular velocity (rad/s)
angular_velocity_covarianceList[float]Angular velocity covariance matrix
linear_accelerationVector3F64Linear acceleration (m/s²)
linear_acceleration_covarianceList[float]Linear acceleration covariance matrix

Sample raw frame from imu_palm():

{
  "header": {
    "seq": 500,
    "timestamp_us": 1709876543210,
    "frame_id": ""
  },
  "orientation": {
    "x": 0.0,
    "y": 0.0,
    "z": 0.0,
    "w": 1.0
  },
  "orientation_covariance": [-1, 0, 0, 0, 0, 0, 0, 0, 0],
  "angular_velocity": {
    "x": 0.01,
    "y": -0.02,
    "z": 0.005
  },
  "angular_velocity_covariance": [0, 0, 0, 0, 0, 0, 0, 0, 0],
  "linear_acceleration": {
    "x": 0.1,
    "y": -0.05,
    "z": 9.8
  },
  "linear_acceleration_covariance": [0, 0, 0, 0, 0, 0, 0, 0, 0]
}

On this page