D
DreamLake

Data

imu_6dof

Six-axis IMU: accelerometer + gyroscope. Fixed layout [ax, ay, az, gx, gy, gz] — accelerations in m/s² followed by angular velocities in rad/s.

Chunk format

  • Format: jsonl
  • Decoder: jsonlDecoder

JSONL shape

{
  ts: number
  data: [number, number, number, number, number, number]
  //     ax      ay      az      gx      gy      gz
}
FieldTypeRequiredNotes
tsnumberyesMonotonically increasing.
data[number, number, number, number, number, number]yesFixed 6-tuple: ax, ay, az, gx, gy, gz.

Sample data

{"ts": 0.000, "data": [-0.007, -0.009,  9.804,  0.014, -0.003, -0.030]}
{"ts": 0.010, "data": [ 0.017, -0.013,  9.799,  0.002,  0.005,  0.023]}
{"ts": 0.020, "data": [ 0.033,  0.006,  9.773, -0.020,  0.005,  0.026]}

At rest: az ≈ 9.8 (gravity); gyro near zero. Any other axis-convention (e.g. ROS ENU) is just data — the visualization doesn't rotate the frame for you.

Sample m3u8

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:5
#EXTINF:5.000,
chunk-001.jsonl
#EXT-X-ENDLIST

Compatible timeline lanes

LaneNotes
LineChartLaneDefault. Six curves in two groups (accel / gyro) via the dtype's default channelGroups.

Compatible standalone views

ViewNotes
ImuChartViewRolling 6-channel chart, clock-driven.
ImuGizmoViewAttitude-indicator gizmo.

Default props

FieldValue
shape[6]
channelGroups[['ax','ay','az'], ['gx','gy','gz']]

Track-level props.range / unit commonly override — e.g. plot accelerations in g's:

{
  "dtype": "imu_6dof",
  "props": { "range": [-2, 2], "unit": "g" }
}

Python generator

import numpy as np
from dreamlake import Episode
 
ep = Episode.create("ep1")
imu = ep.track("sensors/imu", dtype="imu_6dof")
 
t, dt = 0.0, 0.01
while t < 10.0:
    ax, ay, az = np.random.normal([0, 0, 9.8], [0.02, 0.02, 0.02])
    gx, gy, gz = np.random.normal(0, 0.03, size=3)
    imu.append({"ts": t, "data": [float(ax), float(ay), float(az), float(gx), float(gy), float(gz)]})
    t += dt