在使用ros2的bag时想要删掉bag中的某些topic。发现ros2中的bag并没有类似ros1中filter的功能,搜了一下发现PyPI有相关的API,如下链接。
本人在使用时发现了以下问题并解决。
1. 该包需要python版本>=3.9,因此把python升级到了3.10
2. 安装按成后,在使用官方文档的命令
rosbag-topic-remove /path/to/rosbag -t /topic/to_delete
后,报错writer.add_connection() 这个函数的参数不对,应该是3个但是给了5个。
查看python3.10/site-packages/rosbag_topic_remove/topic_remover.py
这个文件的192行如下
conn_map[conn.id] = writer.add_connection(
conn.topic,
conn.msgtype,
ext.serialization_format,
ext.offered_qos_profiles,
)
改为
conn_map[conn.id] = writer.add_connection(
conn.topic,
conn.msgtype,
)
即去掉后面两个参数。再次运行就可以了,测试成功删掉了一个topic。