Back to Rerun

Load IMU data from CSV into a dataframe

examples/python/imu_signals/README.md

0.31.42.8 KB
Original Source
<!--[metadata] title = "IMU signals" tags = ["Plots"] description = "Log multi dimensional signals under a single entity." thumbnail = "https://static.rerun.io/imu_signals/64f773d238a0456a0f233abeea7e521cfb871b67/480w.jpg" thumbnail_dimensions = [480, 480] channel = "main" include_in_manifest = true build_args = ["--seconds=10"] -->

This example demonstrates how to log multi dimensional signals with the Rerun SDK, using the TUM VI Benchmark.

<picture> <source media="(max-width: 480px)" srcset="https://static.rerun.io/imu_signals/1184ab6e2df3275b8b7a574d7f0e42b1aed8343a/480w.png"> <source media="(max-width: 768px)" srcset="https://static.rerun.io/imu_signals/1184ab6e2df3275b8b7a574d7f0e42b1aed8343a/768w.png"> <source media="(max-width: 1024px)" srcset="https://static.rerun.io/imu_signals/1184ab6e2df3275b8b7a574d7f0e42b1aed8343a/1024w.png"> <source media="(max-width: 1200px)" srcset="https://static.rerun.io/imu_signals/1184ab6e2df3275b8b7a574d7f0e42b1aed8343a/1200w.png"> </picture>

Background

This example shows how to log multi-dimensional signals efficiently using the rr.send_columns() API.

The API automatically selects the right partition sizes, making it simple to log scalar signals like this:

py
# Load IMU data from CSV into a dataframe
imu_data = pd.read_csv(
    cwd / DATASET_NAME / "dso/imu.txt",
    sep=" ",
    header=0,
    names=["timestamp", "gyro.x", "gyro.y", "gyro.z", "accel.x", "accel.y", "accel.z"],
    comment="#",
)

times = rr.TimeColumn("timestamp", timestamp=imu_data["timestamp"])

# Extract gyroscope data (x, y, z axes) and log it to a single entity.
gyro = imu_data[["gyro.x", "gyro.y", "gyro.z"]]
rr.send_columns("/gyroscope", indexes=[times], columns=rr.Scalars.columns(scalars=gyro))

# Extract accelerometer data (x, y, z axes) and log it to a single entity.
accel = imu_data[["accel.x", "accel.y", "accel.z"]]
rr.send_columns("/accelerometer", indexes=[times], columns=rr.Scalars.columns(scalars=accel))

Running

Install the example package:

bash
pip install -e examples/python/imu_signals

To experiment with the provided example, simply execute the main Python script:

bash
python -m imu_signals

Attribution

This example uses a scene from the TUM VI Benchmark dataset, originally provided by Technical University of Munich (TUM). The dataset is licensed under Creative Commons Attribution 4.0 (CC BY 4.0).