robotdataprocess
robotdataprocess is a Python library for loading, manipulating, saving, publishing, and evaluating multi-robot SLAM datasets. It provides a unified interface across ROS versions, coordinate frames, and file formats, eliminating the per-dataset boilerplate that slows down robotics research.
Supported environments:
Python 3.8 – ROS1 Noetic, ROS2 Foxy/Galactic
Python 3.10+ – ROS2 Humble and later
All sensor data is loaded into format-agnostic Data objects. Adding support for a new input format requires only a dataloader; all manipulation, visualization, and export methods work automatically. ROS is not required for pure-Python workflows.
from robotdataprocess import ImuData, CoordinateFrame, ROSMsgLibType
from robotdataprocess import publish_data_ROS_multiprocess
from decimal import Decimal
imu = ImuData.from_txt_file(path, "imu_link", CoordinateFrame.NED)
imu.to_coordinate_frame(CoordinateFrame.FLU)
imu.crop_data(Decimal("0.0"), end_time)
publish_data_ROS_multiprocess(
[imu], ["/imu0"], [None], [500], [1],
ROSMsgLibType.RCLPY, True, verbose=True,
)
The library is tested across all supported Python versions via GitHub Actions, with coverage reported through Coveralls.
At the Lunar Lab, robotdataprocess has been used with VINS-Mono, OpenVINS, LIO-SAM, and ROMAN.
See the examples folder for usage examples, or browse the data types and ROS integration pages in the sidebar.
Contact Us
For questions or inquiries, feel free to reach out to the authors: