raspberry-pi - 将RaspberryPi摄像头录制到rosbag

标签 raspberry-pi sd-card ros raspberry-pi2

我正在尝试配置 RaspberryPi2 将视频数据从摄像头模块记录到 rosbag。为了让相机与 ROS 一起工作,我使用了在这里找到的代码:https://github.com/fpasteau/raspicam_node .

这工作正常,但我在将数据捕获到 rosbag 时遇到问题。在高帧率下以原始模式捕获时,它会平稳捕获几秒钟,然后卡住几秒钟,然后平稳捕获几秒钟,然后卡住,...

例如,我 try catch 640x480@30FPS 的文件,这就是 rosbag info 的结果:

duration:    2:51s (171s)
size:        2.9 GB
messages:    5049
compression: none [2504/2504 chunks]
types:       rosgraph_msgs/Log      [acffd30cd6b6de30f120938c17c593fb]
             sensor_msgs/CameraInfo [c9a58c1b0b154e0e6da7578cb991d214]
             sensor_msgs/Image      [060021388200f6f0f447d0fcd9c64743]
topics:      /camera/camera_info   2505 msgs    : sensor_msgs/CameraInfo
             /camera/image         2504 msgs    : sensor_msgs/Image
             /rosout                 22 msgs    : rosgraph_msgs/Log      (2 connections)
             /rosout_agg             18 msgs    : rosgraph_msgs/Log

因此,如果我们有 171 秒的视频,帧速率为 90FPS,应该会给出 15390 条消息,但我们只得到 2504 条消息,大约为 14FPS。文件本身大小为 2.9GB。这意味着它的平均写入速度约为 17.5MB/s。最终我找到了一个测试SD卡写入速度的命令(dd if=/dev/zero of=~/test.tmp bs=500K count=1024),上面说我的写入速度是平均约为 19MB/s。

所以我的问题是:

  1. 如果 SD 写入速度导致问题,为什么 RaspberryPi 无法充分利用 90MB/s?
  2. 我可以调整 RaspberryPi 以更快地写入 SD 卡吗?
  3. 我考虑过购买一个带有 SATA 的 BananaPi,这样我就可以连接 SATA 驱动器并且不会遇到任何写入速度问题。在进行这项投资之前,有人有使用 BananaPis 的经验吗?我在这里看到了一个测试:http://314256.blogspot.co.uk/2014/11/banana-pi-sata-disk-throughput-test.html ,看起来 BananaPi 应该能够处理它。
  4. 还有其他关于如何使其在 RaspberryPi 上运行的想法吗?

最佳答案

看起来像raspicam_node发布图像 bgra8编码( raspicam_raw_node.cpp#L266 ),所以我们需要存储 4*640*480*30 字节/秒 = 36.86 MB/s。 然而,~18 MB/s 似乎几乎是 Raspberry 2 的限制 ( microSD card performance comparison )。

不要尝试保存所有原始数据,而是让 rosbag 存储 sensor_msgs/CompressedImage来自/camera/image/compressed话题。您可以调整<base_topic>/compressed/jpeg_quality参数(请参阅 compressed_image_transportdynamic reconfigure parameters ),但使用默认值 80,您应该获得大约 30:1 的压缩比,即 1.23 MB/s。

Raspberry 应该能够轻松处理这个问题。考虑到微型 Raspberry 相机的图像质量,您甚至可能不会察觉到任何质量差异。

关于raspberry-pi - 将RaspberryPi摄像头录制到rosbag,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33304521/

相关文章:

python - 使用 Carla 创建超车(硬编码)场景

tcp - 从 ROSbridge 服务器到客户端的消息

python - 防止 Tkinter 网格动态调整单元格大小

python - Flask 被 OpenCV 卡住

android - 未在 Android 模拟器(虚拟设备)上找到 SD 卡文件夹?

android - 如何永久删除SD卡上的数据

opencv - 如何将sensor_msgs/CameraInfo分配给cv::Mat

python - 在启动时启动 python 脚本 - Raspbian

python - 归一化倾斜的地球磁场

git - 初始化 git 仓库对 linux 根目录的影响 3 :)