ros2 bag删除某个话题的方法

在使用ros2的bag时想要删掉bag中的某些topic。发现ros2中的bag并没有类似ros1中filter的功能,搜了一下发现PyPI有相关的API,如下链接。

rosbag-topic-remove · PyPI

本人在使用时发现了以下问题并解决。

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。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
As an AI language model, I cannot perform any actions beyond providing information. However, I can provide you with some guidance on how to convert a ROS1 bag file to a ROS2 bag file. There are different approaches to converting ROS1 bag files to ROS2 bag files. One of the simplest ways is to use the ROS1-ROS2 bridge, which allows communication between ROS1 and ROS2 systems. To convert a ROS1 bag file to a ROS2 bag file using the bridge, you can follow these steps: 1. Install the ROS1-ROS2 bridge package on your ROS2 system. You can do this by running the following command in your terminal: ``` sudo apt-get install ros-<distro>-ros1-bridge ``` Make sure to replace `<distro>` with the ROS2 distribution you are using (e.g., foxy, galactic). 2. Source the ROS1 and ROS2 environments in separate terminal windows: ``` source /opt/ros/<distro>/setup.bash # for ROS1 source /opt/ros/<distro>/setup.bash # for ROS2 ``` 3. Launch the ROS1-ROS2 bridge node in one terminal window: ``` ros2 run ros1_bridge dynamic_bridge ``` 4. In another terminal window, use the rosbag tool to play the ROS1 bag file and publish its messages to the ROS2 bridge: ``` ros1bag play <ros1_bag_file> --clock --pause --loop ``` 5. In a third terminal window, use the ROS2 bag tool to record the messages published by the bridge: ``` ros2 bag record -a ``` This will record all the messages published by the ROS1-ROS2 bridge and save them to a ROS2 bag file. Note that the conversion process may take some time, depending on the size of the ROS1 bag file and the complexity of the messages it contains. Also, not all message types are currently supported by the ROS1-ROS2 bridge, so you may encounter some errors or limitations during the conversion process.

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值