m2cs_player is a ROS1 + Qt5 offline multi-sensor playback tool. It can publish:
- GNSS/INS (
/gwnav/nav,/gwnav/gps,/gwnav/imu) - Livox left/right point clouds and IMU (
/livox_left/*,/livox_right/*) - Ouster point cloud and IMU (
/ouster/*) - Camera image (
/camera/image_raw) - Simulated clock (
/clock)
It also provides a GUI for play/pause/loop/stop-skip/sensor toggles, and uses m2cs_player.launch to start RViz and image_proc debayer nodelet.
- ROS package name:
m2cs_player - Executable:
m2cs_player - Launch file:
launch/m2cs_player.launch - Maintainer: Huanfeng Zhao (
zhaohf24@mails.jlu.edu.cn)
You can download the dataset via the links below:
Recommended environment: Ubuntu + ROS1 (catkin workspace).
roscpp,rospy,std_msgs,geometry_msgsimage_transport,cv_bridgepcl_ros,pcl_conversions,pcl_msgscamera_info_manager,tfcmake_modules
- Eigen
- PCL
- OpenCV
- Qt5 (
Widgets,Gui,OpenGL)
The source includes these custom message packages. Make sure they are available in the same workspace:
gwnav_ros_driverlivox_ros_driver
Use the following workflow in your catkin workspace.
- Create a workspace (skip if you already have one):
mkdir -p ~/m2cs_player_ws/src- Clone the repository into
src:
cd ~/m2cs_player_ws/src
git clone https://github.com/InRobots/m2cs_player.git- Build with catkin:
cd ~/m2cs_player_ws
catkin_make- Source the workspace environment:
For zsh:
source ~/m2cs_player_ws/devel/setup.zshFor bash:
source ~/m2cs_player_ws/devel/setup.bashroslaunch m2cs_player m2cs_player.launchThis launch file starts:
m2cs_playermain applicationrviz(config:rviz/m2cs.rviz)nodelet+image_proc/debayer(namespace defaults tocamera)
After clicking Load in the GUI, the selected dataset root should contain at least:
<dataset_root>/
├── data_stamp.csv
├── ins_data/
│ ├── gwnav_nav.csv
│ ├── gwnav_imu.csv
│ ├── gwnav_gps.csv
│ ├── livox_left_imu.csv
│ ├── livox_right_imu.csv
│ └── ouster_imu.csv
├── calib_data/
│ ├── livox_left_to_ouster.yaml
│ ├── livox_right_to_ouster.yaml
│ ├── camera_to_ouster.yaml
│ ├── ouster_to_gwnav.yaml
│ └── camera.yaml
├── lidar_data/
│ ├── livox_left/*.bin
│ ├── livox_right/*.bin
│ └── ouster/*.bin
└── image_data/*.png
If path or files are invalid, the program prints:
Please check file path. Input path is wrong.
- Click Load and select the dataset root folder.
- Click Play to start playback (click again to end).
- Click Pause/Resume to pause/resume.
- Drag the slider to jump in timestamp progress.
- Use checkboxes for options:
Loop: restart playback when finishedSkip stop section: skip stationary segmentsAuto start: auto-play after loading- Sensor switches:
TF,Nav,Ouster,Left Livox,Right Livox,Camera
- Set
Speedplayback rate (0.01 ~ 20.0).
Put the required ROS packages in the same m2cs_player_ws/src and rebuild.
- Verify dataset layout and filenames in Section 6
- Check whether corresponding sensor checkboxes are enabled
- Check RViz topics and fixed frame
@article{zhao2025m2cs,
title={M2CS: A Multimodal and Campus-Scapes Dataset for Dynamic SLAM and Moving Object Perception},
author={Zhao, Huanfeng and Yao, Meibao and Zhao, Yan and Jiang, Yao and Zhang, Hongyan and Xiao, Xueming and Gao, Ke},
journal={Journal of Field Robotics},
volume={42},
number={3},
pages={787--805},
year={2025},
publisher={Wiley Online Library}
}