# record **Repository Path**: rippleos/record ## Basic Information - **Project Name**: record - **Description**: MOSS 数据录制回放模块 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-12 - **Last Updated**: 2026-05-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # mrecord - MOSS Data Recording Module Data recording and playback module for MOSS middleware. Records Topic data to MCAP files and plays back recorded data. ## Features - **MCAP Format**: Industry-standard container format for robotics/AV data - **Multi-Topic Recording**: Record multiple topics to a single file - **Topic Filtering**: Include/exclude topics by pattern - **Time Range Selection**: Play back specific time ranges - **Rate Control**: 0.5x to 2.0x playback speed - **Loop Playback**: Continuously loop recorded data - **FoxGlove Compatible**: Open recorded files in FoxGlove Studio ## Dependencies - mlog (Logging) - mdds (DDS - optional for full integration) - C++17 compiler - CMake 3.14+ ## Building ```bash cd mrecord mkdir -p build && cd build cmake .. -DCMAKE_BUILD_TYPE=Release -DMRECORD_BUILD_TESTS=ON make -j$(nproc) ``` ## CLI Usage ### Record Topics ```bash # Record specific topics mrecord record -o output.mcap -t /camera/image,/lidar/points # Record all topics (with exclusions) mrecord record -o output.mcap -e /debug/* # Record with size limit (100MB) mrecord record -o output.mcap -s 104857600 # Record with time limit (60 seconds) mrecord record -o output.mcap -d 60 # With compression mrecord record -o output.mcap -c 3 ``` ### Play Back Data ```bash # Play back at normal speed mrecord play output.mcap # Play at half speed mrecord play output.mcap -r 0.5 # Play specific topics mrecord play output.mcap -t /camera/image # Loop playback mrecord play output.mcap --loop # Play specific time range mrecord play output.mcap --start 1000000000 --end 5000000000 ``` ### View File Info ```bash mrecord info output.mcap ``` Output: ``` MCAP File: output.mcap ──────────────────────────────────────── Messages: 1500 Duration: 30s Start Time: 2026-04-19 10:00:00.000 End Time: 2026-04-19 10:00:30.000 File Size: 15.23 MB Topics (3): /camera/image Type: foxglove.Image Messages: 900 /lidar/points Type: foxglove.PointCloud Messages: 300 /localization/pose Type: foxglove.Pose Messages: 300 ``` ## API Usage ### Recording ```cpp #include #include // Create participant auto participant = mdds::DomainParticipant::create(0); // Configure recording mrecord::RecordConfig config; config.output_path = "output.mcap"; config.topics = {"/camera/image", "/lidar/points"}; config.use_compression = true; // Create and start recorder auto recorder = std::make_unique(); recorder->init(config, participant); recorder->start(); // ... recording happens in background ... // Stop recording recorder->stop(); ``` ### Playback ```cpp #include #include auto participant = mdds::DomainParticipant::create(0); mrecord::PlaybackConfig config; config.input_path = "output.mcap"; config.playback_rate = 1.0; config.loop = true; auto player = std::make_unique(); player->init(config, participant); // Set message callback player->set_message_callback([](const mrecord::MessageRecord& record) { std::cout << "Topic: " << record.topic_name << " Timestamp: " << record.timestamp_ns << std::endl; }); player->start(); // ... playback happens in background ... player->stop(); ``` ## Architecture ``` record/ ├── include/record/ │ ├── mrecord.h # Main include │ ├── types.h # Type definitions │ ├── mcap_writer.h # MCAP file writer │ ├── mcap_reader.h # MCAP file reader │ ├── recorder.h # Data recorder │ └── player.h # Data player ├── src/ │ ├── mcap_writer.cpp │ ├── mcap_reader.cpp │ ├── recorder.cpp │ ├── player.cpp │ └── main.cpp # CLI tool ├── test/ │ ├── test_mcap_writer.cpp │ ├── test_mcap_reader.cpp │ ├── test_recorder.cpp │ └── test_player.cpp └── CMakeLists.txt ``` ## MCAP Format MCAP is a container file format developed by FoxGlove for storing robot and autonomous vehicle data. It provides: - Efficient sequential read/write - Support for multiple topics/channels - Built-in compression (zstd) - Schema storage - Time indexing Learn more: https://mcap.dev/ ## Running Tests ```bash cd build ctest ``` ## License MIT License