3

我正在尝试从 Python 3 读取 rosbag 文件。
我安装了 ROS2(Eloquent Elusor),它应该支持 Python 3。

当我跑

import rosbag
bag = rosbag.Bag('test.bag')

从 Python 2.7 开始,它可以工作。
当我在 Python 3 中尝试相同的操作时,我得到:

ModuleNotFoundError: No module named 'rosbag'

我也尝试过类似的东西:和sudo apt install python-rosbag,但它们没有帮助。sudo apt install python3-rospkgpip3 install rospkg

我应该怎么做才能从 Python 3 打开一个 rosbag 文件?

[编辑]
这是调用后的输出pip3 install rospkg

Requirement already satisfied: rospkg in ./rosbag-env/lib/python3.6/site-packages
Requirement already satisfied: catkin-pkg in ./rosbag-env/lib/python3.6/site-packages (from rospkg)
Requirement already satisfied: distro in ./rosbag-env/lib/python3.6/site-packages (from rospkg)
Requirement already satisfied: PyYAML in ./rosbag-env/lib/python3.6/site-packages (from rospkg)
Requirement already satisfied: pyparsing in ./rosbag-env/lib/python3.6/site-packages (from catkin-pkg->rospkg)
Requirement already satisfied: python-dateutil in ./rosbag-env/lib/python3.6/site-packages (from catkin-pkg->rospkg)
Requirement already satisfied: docutils in ./rosbag-env/lib/python3.6/site-packages (from catkin-pkg->rospkg)
Requirement already satisfied: six>=1.5 in ./rosbag-env/lib/python3.6/site-packages (from python-dateutil->catkin-pkg->rospkg)
4

6 回答 6

3

您可以使用该bagpy包在 Python 中读取 .bag 文件。可以使用 pip 安装

pip install bagpy

简要文档位于https://jmscslgroup.github.io/bagpy/

以下是示例代码片段:

import bagpy
from bagpy import bagreader

b = bagreader('09-23-59.bag')

# get the list of topics
print(b.topic_table)

# get all the messages of type velocity
velmsgs   = b.vel_data()
veldf = pd.read_csv(velmsgs[0])
plt.plot(veldf['Time'], veldf['linear.x'])

# quickly plot velocities
b.plot_vel(save_fig=True)

# you can animate a timeseries data
bagpy.animate_timeseries(veldf['Time'], veldf['linear.x'], title='Velocity Timeseries Plot')

于 2020-10-12T02:25:32.853 回答
2

我编写了一个纯 python3 模块来导入 rosbag 数据。它是独立的 - 无需安装 ROS。它仅适用于选定的消息类型子集,但它应该作为一个示例,您可以按照它来解包您感兴趣的消息类型: https ://github.com/event-driven-robotics/importRosbag

于 2020-04-01T16:36:41.957 回答
2

要使用标准rosbag库,您有两种选择:

  1. 设置 ROS并通过 apt 安装它:
sudo apt install ros-$ROS_DISTRO-rosbag ros-$ROS_DISTRO-roslz4
source /opt/ros/$ROS_DISTRO/setup.bash
  1. 从 pip 将其安装为常规 Python 包,尽管不是从常规 PyPI 索引:
pip install rosbag roslz4 --extra-index-url https://rospypi.github.io/simple/

请注意,如果您已经 sourced /opt/ros/$ROS_DISTRO/setup.bash,将 ROS Python 包添加到PYTHONPATH,您可能需要unset PYTHONPATH首先使用 pip 安装的包。如果您在 virtualenv 或 Conda 环境中使用 Python,这一点尤其重要。

于 2021-07-12T12:43:01.447 回答
1

TLDR;

运行这个:

pip3 install bagpy
# OR, if that ends up failing in the end due to a "Permission denied" error, 
# do this:
sudo pip3 install bagpy

现在这将在您的 Python 3 脚本中运行:

import rosbag

...只要您在 Python 3 文件的顶部有正确的 hash-bang,例如这个:

#!/usr/bin/env python3

细节

我在ros_readbagfile这里写了这个 ROS 教程:Reading messages from a bag file,这个ModuleNotFoundError: No module named 'rosbag'错误似乎出现了很多:

Traceback (most recent call last):
  File "./ros_readbagfile", line 50, in <module>
    import rosbag
ModuleNotFoundError: No module named 'rosbag'

在 Python 3 中工作的解决方案import rosbag似乎是:

pip3 install bagpy

现在import rosbag有效,因此我的ros_readbagfile脚本也有效。

根据这个答案,你显然也可以这样做:

conda install -c conda-forge ros-rosbag 

...但我还没有尝试过。

如果您已运行pip3 install bagpy但由于权限错误而无法完成:

ERROR: Could not install packages due to an EnvironmentError: [Errno 13] Permission denied

...然后尝试使用sudo

sudo pip3 install bagpy

现在,假设有效,如果import rosbag仍然无效,那么可能是因为pip3 install bagpy安装bagpy(和rosbag的 Python3 二进制可执行文件与您的脚本通过顶部的 hash-bang 行调用的不同。要查看是否是这种情况,which python3请在 Python3 脚本的顶部运行并使用该路径。例如:我的which python3输出是:

/usr/bin/python3

所以,我的 Python3 脚本顶部的 hashbang (shebang) 应该是:

#!/usr/bin/python3

其他常见路径可能包括:

/usr/local/bin/python3

或者(在这种情况下最好),让您的环境为您选择 python3 可执行文件,请在 Python 3 文件的顶部使用这个 hash-bang:

#!/usr/bin/env python3

这就是我现在在ros_readbagfile.py脚本顶部使用的内容。

其他参考:

  1. 我自己的评论和这个答案
  2. [ROS 网站上的交叉链接] https://answers.ros.org/question/12307/no-module-named-rosbag-error/?answer=387606#post-id-387606
于 2021-09-28T21:52:24.010 回答
0

根据http://wiki.ros.org/rosbag/Cookbook它说你必须在 pip3 中执行以下操作才能使 rosbag 工作:

pip3 install pycryptodomex python-gnupg

到目前为止为我工作。希望这也可以帮助所有其他人。

设置:

  • Ubuntu 18.04
  • ROS旋律
  • Python3
于 2021-03-30T15:01:42.570 回答
-2

试试这个,它会工作:

pip3 install pyrosbag
于 2020-01-17T20:39:00.723 回答