将.bag转.mp4时出现ModuleNotFoundError: No module named 'roslib'问题求助
解决ROS2环境下运行rosbag2video出现
roslib缺失的问题 问题根源
你使用的rosbag2video是基于ROS1开发的脚本,依赖ROS1的roslib、rospy等核心模块,但当前环境是ROS2 Humble——ROS2完全重构了Python API(用rclpy替代rospy,且不存在roslib这个包),因此无论如何配置PYTHONPATH都无法找到该模块。
可行解决方案
方案1:用ROS2原生工具提取图像再转视频
先查看bag文件中的图像话题:
ros2 bag info location1.bag找到需要导出的目标图像话题(比如
/camera/color/image_raw)。从bag中提取所有图像帧为图片文件:
ros2 run image_view image_saver --ros-args -p image_topic:=/camera/color/image_raw -p filename_format:="frame_{:04d}.jpg"执行命令后,运行
ros2 bag play location1.bag,脚本会自动将所有图像帧保存到当前目录。用ffmpeg将图片序列转为MP4:
ffmpeg -framerate 30 -i frame_%04d.jpg -c:v libx264 -r 30 -pix_fmt yuv420p output.mp4注意替换
-framerate为你bag文件的实际帧率(可从ros2 bag info结果中查看)。
方案2:使用ROS2适配的bag转视频工具
选择专门为ROS2开发的bag转视频工具(如ros2bag_to_video),步骤如下:
- 克隆仓库到ROS2工作空间的
src目录:cd ~/ros2_ws/src git clone https://github.com/ros2bag/ros2bag_to_video.git - 安装依赖并编译:
cd ~/ros2_ws rosdep install --from-paths src --ignore-src -r -y colcon build --symlink-install source install/setup.bash - 运行工具转换bag:
ros2 run ros2bag_to_video ros2bag_to_video --bag location1.bag --topic /camera/color/image_raw
内容的提问来源于stack exchange,提问作者J7er
相关产品推荐
相关产品推荐

