Hi Stephane,<br><br>If I understand correctly, you have a higher bandwidth, higher precision version of the PR2's ability to drive around while taking laser scans with its <a href="http://www.willowgarage.com/sites/default/files/images/overview02.jpg">tilting laser scanner</a>.<br>

<br>For the PR2, we sometimes aggregate point clouds using <a href="http://www.ros.org/wiki/laser_assembler">http://www.ros.org/wiki/laser_assembler</a>.  This lets us aggregate data in a fixed frame, like the <i>map</i> frame or <i>odom</i> frame.<br>

<br>Based on this thread, it sounds like you might be fragmenting the velodyne scans into chunks that might not necessarily fit into the <i>sensor_msgs/LaserScan</i> type, and it's quite possible that the service call interface that we're using in the <i>laser_assembler</i> is not ideal for your high bandwidth case.  But, nonetheless, I just thought I'd point you at the code that performs the analogous aggregation operation for the PR2.<br>

<br>Vijay<br><br><div class="gmail_quote">2010/10/28 Stéphane Magnenat <span dir="ltr"><<a href="mailto:stephane.magnenat@mavt.ethz.ch">stephane.magnenat@mavt.ethz.ch</a>></span><br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">

Hello,<br>
<div class="im"><br>
> That was the original format (as best I can remember). Adding an input<br>
> class or option specific to the new format should be straightforward.<br>
<br>
</div>Indeed, if this is the only change, that will be fine.<br>
<div class="im"><br>
>> As far as I have seen, the raw scan data do not contain a timestamp for<br>
>> each raw scan. The problem is thus that for a whole revolution, if the<br>
>> Velodyne is mounted on a car going at 72 km/h, and the Velodyne is<br>
>> rotating at 10 Hz, there will be 2 m of errors in the point cloud. This<br>
>> is by far larger than the intrinsic Velodyne error.<br>
><br>
> You are quite right about that. We would like to address this problem, too.<br>
<br>
</div>So we can for sure collaborate on this.<br>
<div class="im"><br>
>> We could keep your architecture but add one timestamp per scan slice and<br>
>> use these in conjunction with a tf transform tree to correct the<br>
>> position of the scans. What do you think?<br>
><br>
> That should be possible. The driver does not require a full scan to<br>
> publish data. I just did that to create a simple interface for our<br>
> students to work with. For that it was a success, they have created<br>
> many interesting programs to process the data in various ways.<br>
><br>
> I believe the driver can publish smaller groups of packet without<br>
> getting behind. When I wrote it a year ago, I was not sure about that.<br>
> We could feed that stream into a different nodelet thread that would<br>
> transform the data into /map or /odom coordinates and (optionally)<br>
> assemble the packets into complete 360 degree scans, if desired.<br>
<br>
</div>I see two different questions there. One is to get proper timestamps for<br>
each slice, the other is to cut the data in smaller chunks. We can work<br>
on them independently.<br>
<div class="im"><br>
> Good. There are other ROS users with significant Velodyne experience.<br>
> Perhaps they will want to participate as well.<br>
><br>
> I am certainly open to better ideas. This was the second ROS driver I<br>
> ever wrote and has not changed significantly since a year ago. The<br>
> package status is marked "experimental". We could start by doing an<br>
> API review of what's there and make a list of things to improve.<br>
<br>
</div>The first thing I see is adding timestamps to slices and then adding<br>
support for tf in the reconstruction code. Cutting the full rotation<br>
into smaller chunks is a matter of trade-offs between latency and<br>
efficiency, and we can address this later.<br>
<br>
I'll be on the move during the next 5 days but later I would like to<br>
work on this. Would you like to discuss more in private, or on there on<br>
ros-users as it might interest other people? Would you like me to send<br>
patches to you? Or use something like gitsvn?<br>
<div class="im"><br>
Kind regards,<br>
<br>
Stéphane<br>
<br>
--<br>
Dr Stéphane Magnenat<br>
<a href="http://stephane.magnenat.net" target="_blank">http://stephane.magnenat.net</a><br>
_______________________________________________<br>
</div><div><div></div><div class="h5">ros-users mailing list<br>
<a href="mailto:ros-users@code.ros.org">ros-users@code.ros.org</a><br>
<a href="https://code.ros.org/mailman/listinfo/ros-users" target="_blank">https://code.ros.org/mailman/listinfo/ros-users</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>Vijay Pradeep<br>
Systems Engineer<br>
Willow Garage, Inc.<br>
<a href="mailto:tfoote@willowgarage.com" target="_blank"><span></span></a><a href="mailto:vpradeep@willowgarage.com" target="_blank">vpradeep@willowgarage.com</a><br>
<br>