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

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

例如,我尝试使用 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。

所以我的问题是:
  • 如果是SD写入速度造成的问题,为什么树莓派不能充分利用90MB/s?
  • 我可以调整 RaspberryPi 以更快地写入 SD 卡吗?
  • 我想买一个带有 SATA 的 BananaPi,这样我就可以连接 SATA 驱动器,并且不会遇到任何写入速度问题。在进行这项投资之前,有人有使用 BananaPis 的经验吗?我在这里看到了一个测试: http://314256.blogspot.co.uk/2014/11/banana-pi-sata-disk-throughput-test.html ,看起来 BananaPi 应该能够处理它。
  • 任何其他想法如何使它在 RaspberryPi 上工作?
  • 最佳答案

    看起来 raspicam_node 发布的图像采用 bgra8 编码( raspicam_raw_node.cpp#L266 ),所以我们需要存储 4*640*480*30 Bytes/second = 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 - 将树莓派摄像头录制到 rosbag,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33304521/

    10-12 17:35