Lightwheel Egosuite DevKit - MCAP conversion and visualization pipeline
Project description
LW-Egosuite-DevKit
Backend Installation
Prerequisites
- Operating System: Ubuntu 20.04 or higher
Install
1. Conda environment
conda create -n lw_egosuite_devkit python=3.11 -y
conda activate lw_egosuite_devkit
2. Install the package
From PyPI:
pip install lw-egosuite-devkit
From source:
git clone https://github.com/LightwheelAI/LW-Egosuite-DevKit.git
cd LW-Egosuite-DevKit
pip install -e .
Usage
1. Conversion for Visualization
Generate visualization-ready MCAP files from raw egosuite MCAP data.
1.1 Single File Conversion
cd LW-Egosuite-DevKit
lw-egosuite convert --mcap $input_mcap_path --mcap_vis $mcap_for_vis_path
| Parameter | Description |
|---|---|
--mcap |
Path to the source MCAP file (not a directory) |
--mcap_vis |
(Optional) Output path. Default: {input_dir}/{input_stem}_vis.mcap |
Output path is printed at the start of conversion.
1.2 Batch Conversion
cd LW-Egosuite-DevKit
data_path="/path/to/your/data"
for input_mcap_path in "$data_path"/*.mcap; do
[ -e "$input_mcap_path" ] || continue
echo "Processing: $input_mcap_path ..."
# output goes to same directory as input
lw-egosuite convert --mcap "$input_mcap_path"
done
$data_path: The directory containing the source MCAP files. Each file will be converted and saved with a_vis.mcapsuffix in the same directory as the source file.
2. Reading from MCAP
2.1 Export Video (CLI)
Export video requires ffmpeg on PATH. If not installed:
sudo apt install ffmpeg
Export a foxglove.CompressedVideo topic from an MCAP file to MP4. Uses stream copy (no re-encode). Output is a valid MP4 with moov atom at the start for compatibility.
lw-egosuite export-video --mcap path/to/file.mcap --output output.mp4
| Parameter | Description |
|---|---|
--mcap |
Input MCAP file path |
--output |
Output MP4 file path |
--topic |
(Optional) CompressedVideo topic to export. Default: /sensor/camera/head_left/video |
2.2 Iterate decoded messages (Python API)
Iterate decoded proto messages with the built-in reader:
from lw_egosuite_backend.mcap_reader import iter_messages
for m in iter_messages("out.mcap"):
print(m.topic, m.log_time_ns, m.message)
# Filter by topics
for m in iter_messages("out.mcap", topics=["/pose/body"]):
print(m.topic, m.message)
2.3 Decoding camera video frames (Python API)
Camera streams are stored as foxglove.CompressedVideo messages on topics such as:
/sensor/camera/head_left/video/sensor/camera/head_right/video
You can decode these into numpy.ndarray or torch.Tensor using EgosuiteMcapReader.iter_video_frames:
from lw_egosuite_backend.mcap_reader import EgosuiteMcapReader, iter_video_frames
# Using the context-managed reader:
with EgosuiteMcapReader("episode.mcap") as r:
for frame in r.iter_video_frames("/sensor/camera/head_left/video", output="numpy"):
# frame is a numpy.ndarray with shape (H, W, 3), dtype=uint8
print(frame.shape, frame.dtype)
# Using the convenience helper for a single topic:
for frame in iter_video_frames(
"episode.mcap",
topic="/sensor/camera/head_left/video",
output="numpy", # or "torch"
):
print(frame.shape)
Notes:
- Video decoding requires ffmpeg and ffprobe on PATH.
numpyis required;torchis only required whenoutput="torch".
3. Visualization with Foxglove Studio
Follow these steps to visualize the processed data in Foxglove Studio:
- Launch Foxglove: Open the Foxglove Studio desktop application or web version.
- Import Layout: Load the recommended configuration file:
assets/default_layout.json. - Load Data Streams: Simultaneously load the source file
mcap_filename.mcapand the generated visualization file{mcap_filename}_vis.mcap(in the same directory as the source by default).
Once loaded, the visualization will appear in the Foxglove Studio dashboard as shown below:
License
This project is licensed under the Apache License 2.0.
Copyright 2026 Lightwheel Team
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file lw_egosuite_devkit-0.1.4.tar.gz.
File metadata
- Download URL: lw_egosuite_devkit-0.1.4.tar.gz
- Upload date:
- Size: 1.4 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b6fd133fd51e9acb1f339430260ebe5c5e125a95882f429dcc8b1b652e0fa9f1
|
|
| MD5 |
dc14443848f2455cb2fadc85180f27b1
|
|
| BLAKE2b-256 |
e0d2eaabe8860bca792f30b070a9a0820d466d1cd1f6be2de6ea919d0e241cd3
|
File details
Details for the file lw_egosuite_devkit-0.1.4-py3-none-any.whl.
File metadata
- Download URL: lw_egosuite_devkit-0.1.4-py3-none-any.whl
- Upload date:
- Size: 1.4 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
731f61c5b4b12e714076045fab2222936100714a9052a713e6f47e0b58f1ae0b
|
|
| MD5 |
7d2046afe90207f479005f7081a1db6a
|
|
| BLAKE2b-256 |
981af4f188ac7d8bd33975874018aa1dbe87d0e71c5436017362968ea6c69dee
|