将RaspberryPi相机录制到rosbag

时间:2015-10-23 14:14:08

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

我正在尝试配置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。

所以我的问题是:

  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上运行?

1 个答案:

答案 0 :(得分:0)

看起来bgra8sensor_msgs/CompressedImage编码(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存储/camera/image/compressed主题中的<base_topic>/compressed/jpeg_quality而不是尝试保存所有原始数据。您可以调整compressed_image_transport参数(请参阅function wpse_143641_homebox_shortcode( $atts ) { ?> <div id="primary" class="content-area"> <main id="main" class="site-main" role="main"> <div class="container blog"> <div class="row"> <div class="col-md-8 col-md-push-2"> <?php global $wp_query; $temp = $wp_query; if ( get_query_var('paged') ) { $paged = get_query_var('paged'); } else if ( get_query_var('page') ) {$paged = get_query_var('page'); } else {$paged = 1; } $wp_query = new WP_Query(); $wp_query->query('posts_per_page=6' . '&paged='.$paged); while ($wp_query->have_posts()) : $wp_query->the_post(); ?> <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>> <a href="<?php the_permalink(); ?>"><?php the_post_thumbnail(); ?></a> <div class="entry-meta"> <?php //neue_posted_on(); ?> by <a href="<?php the_permalink(); ?>"> <?php the_author(); ?></a> </div><!-- .entry-meta --> <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2> <?php the_excerpt(); ?> </article> <?php endwhile; ?> <nav id="nav-posts"> <div class="prev"><?php next_posts_link('&laquo; Previous Posts'); ?></div> <div class="next"><?php previous_posts_link('Newer Posts &raquo;'); ?></div> </nav> <?php $wp_query = null; $wp_query = $temp; ?> </div> <!-- /.col-md-8 --> </div> <!-- /.row --> <?php wp_reset_postdata(); ?> </div> <!-- /.container --> </main><!-- #main --> </div><!-- #primary --> <?php } add_shortcode( 'homebox', 'wpse_143641_homebox_shortcode' ); 的{​​{3}}),但默认值为80,则压缩率应约为30:1,即1.23 MB / s。

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