- Galactic版本以上不适用的方法:
要求:同时拥有ROS1和ROS2
sudo apt install ros-<ros2-version>-rosbag2 ros-<ros2-version>-rosbag2*
source /opt/ros/<ros1-version>/setup.bash # eg: source /opt/ros/noetic/setup.bash
source /opt/ros/<ros2-version>/setup.bash # eg: source /opt/ros/foxy/setup.bash
ros2 bag info -s rosbag_v2 path/to/ros1bag.bag # eg: ros2 bag play -s rosbag_v2 ~/slam-dataset/rgbd.bag
ros2 bag play -s rosbag_v2 path/to/ros1bag.bag # eg: ros2 bag play -s rosbag_v2 ~/slam-dataset/rgbd.bag
- ROS2版本均适用的方法:
要求:了解topic在ROS2中的正确格式
pip install rosbags
rosbags-convert path/to/ros1bag.bag # eg: rosbags-convert ~/slam-dataset/rgbd.bag
# 会在bag目录下生成ROS2格式的bag文件夹
export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp # 默认的fastrtps中间件无法监听话题
ros2 bag play path/to/ros1bag # eg: rosbags-convert ~/slam-dataset/rgbd
转化过后可能会报错有的话题找不到正确的格式,所以需要自己对生成的metadata.yaml
进行手动修改,比如我对tf这个话题进行了修改:
tf/msg/tfMessage
to tf2_msgs/msg/TFMessage