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
}| Field | Type | Required | Notes |
|---|---|---|---|
ts | number | yes | Monotonically increasing. |
data | [number, number, number, number, number, number] | yes | Fixed 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-ENDLISTCompatible timeline lanes
| Lane | Notes |
|---|---|
LineChartLane | Default. Six curves in two groups (accel / gyro) via the dtype's default channelGroups. |
Compatible standalone views
| View | Notes |
|---|---|
ImuChartView | Rolling 6-channel chart, clock-driven. |
ImuGizmoView | Attitude-indicator gizmo. |
Default props
| Field | Value |
|---|---|
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