看解决办法直接跳转到 “三、修改过程”。
一、背景
由于现在比较流行的激光slam 论文中很多使用的都是ros1 版本的livox 激光lidar,但我想复写一个ros2 版本的激光slam系统,那如何使用他们的数据集来用呢?
一个简单的办法是使用rosbags-convert 工具把ros1bag 转换为ros2bag,一般情况下是没什么问题的。但把ros1bag版本的livox 自定义类型转换为ros2bag 类型后,运行(ros2bag play dataset/)出现了以下问题:
[WARN] [1746352189.720472351] [rosbag2_player]: Ignoring a topic '/livox/lidar', reason: package 'livox_ros_driver' not found, searching: [/home/zhaoamoxa163/colcon-ws/ws_livox/install/livox_ros_driver2, /opt/ros/humble].
如何解决呢?查阅相关资料后,了解到ros2bag中的两个文件,如下图所示:

这里的db3 文件是一种SQLite 数据库文件,metadata.yaml 根据我在修改如题问题的时候的经验,我猜测是用来索引查找某些配置项的文件。
二、思路
既然是数据库文件,那我们就可以使用数据库软件打开它(本科学过MySQL或者其他数据的应该知道如何操作),我用到的是DBreaver(图 2) 数据库管理软件。

打开你所要修改的db3 文件(这里需要读者自己查阅资料操作一下),如图 3所示:

三、修改过程
由先前得到的错误报告 和 我上述描述的经验可知:
reason: [package 'livox_ros_driver' not found]
searching: [/home/user/colcon-ws/ws_livox/install/livox_ros_driver2, /opt/ros/humble]
livox_ros_driver 这个包在[/home/user/colcon-ws/ws_livox/install/livox_ros_driver2, /opt/ros/humble]这两个地方没有找到,那我们就修改ros2bag 中的yaml 文件的索引。
修改索引:把如图 4中修改成你想要的位置:

修改数据内容:如图 5所示:

直接双击内容修改数据中的值,然后保存即可(出现问题可能需要一点数据库的知识来修改)。