ouster-ros icon indicating copy to clipboard operation
ouster-ros copied to clipboard

low latency point cloud

Open shubham-shahh opened this issue 2 years ago • 14 comments

Hi, @kairenw I came across this package by KumarRobotics. It has very low latency (<0.2ms) compared to ouster_example (>3ms). can we incorporate it into this standard driver package

thanks

shubham-shahh avatar Jun 08 '22 06:06 shubham-shahh

@shubham-shahh Thanks for pointing the package out, we have made several improvements to the current implementation of ouster_ros that should reduce the latency, these changes are not published yet but will be soon. I will close this ticket once the new improvements have been published.

Samahu avatar Jun 08 '22 18:06 Samahu

@shubham-shahh A new release has been published which changes ROS nodes into nodelets. While this reduces latency it does not result in bigger change as it is claimed by the linked package. I did a small investigation and their decoder generates point clouds at a lower latency but with some caveats. So will maintain this ticket open for now and will get back to it ASAP.

Samahu avatar Aug 24 '22 16:08 Samahu

@shubham-shahh A new release has been published which changes ROS nodes into nodelets. While this reduces latency it does not result in bigger change as it is claimed by the linked package. I did a small investigation and their decoder generates point clouds at a lower latency but with some caveats. So will maintain this ticket open for now and will get back to it ASAP.

Hi thank you so much for the update, I'll look at the new release, also, can you please name some caveats to be aware of before using the decoder?

shubham-shahh avatar Aug 24 '22 16:08 shubham-shahh

Sure, when comparing the point cloud generated by the current ouster ros driver vs what the package in reference generates, the resulting point cloud that they generate is incomplete (missing substantial parts).

Samahu avatar Aug 24 '22 16:08 Samahu

Sure, when comparing the point cloud generated by the current ouster ros driver vs what the package in reference generates, the resulting point cloud that they generate is incomplete (missing substantial parts).

Hi, does this have anything to do with, what they have mentioned here

shubham-shahh avatar Aug 25 '22 08:08 shubham-shahh

@shubham-shahh I am not sure which part you are referring to in the document. In general I don't know exactly -yet- how their decode strategy would contribute to the missing the points in the point cloud generated by their decoder.

Samahu avatar Aug 25 '22 16:08 Samahu

Hi, I'm the author of ouster_decoder. The decoding strategy is simple, just check if there's any jump in the frame and measurement id and erase anything in between.

The missing point cloud is probably due to the difference between legacy vs new format. That has been fixed.

versatran01 avatar Aug 25 '22 18:08 versatran01

Hi @versatran01, thanks for commenting. I haven't tried to run your package recently so my observation might be outdated. I will give it another try ASAP.

Samahu avatar Aug 25 '22 18:08 Samahu

It currently doesn't work due to the catkin_package issue mentioned https://github.com/ouster-lidar/ouster_example/pull/420#issuecomment-1227322532

I made some quick hack to get it work in https://github.com/KumarRobotics/ouster_decoder/tree/fw2.4 but you just need to comment out those broken catkin_package lines in the ouster_ros package.

versatran01 avatar Aug 25 '22 18:08 versatran01

I guess the main idea (as written in readme) is to update the sensor_msgs/PointCloud2 message with each batch of incoming columns instead of converting the whole PCL pointcloud to the ROS message only after the scan is complete.

peci1 avatar Nov 09 '22 00:11 peci1

Yes, their implementation converts packets as they arrive rather than waiting for the frame to be ready/complete to start the conversion. It makes total sense but we haven't had the capacity to address it yet.

Samahu avatar Nov 09 '22 00:11 Samahu

Yes, their implementation converts packets as they arrive rather than waiting for the frame to be ready/complete to start the conversion. It makes total sense but we haven't had the capacity to address it yet.

any possible disadvantage because of this approach?

shubham-shahh avatar Nov 09 '22 04:11 shubham-shahh

Yes, their implementation converts packets as they arrive rather than waiting for the frame to be ready/complete to start the conversion. It makes total sense but we haven't had the capacity to address it yet.

any possible disadvantage because of this approach?

Not that I can think of.

The only thing is when I tried their decoder it seemed that their published point cloud was missing certain amount of points when comparing it to the point cloud published by ouster driver. But they have other things in place too. So I can't say the approach itself to blame about missing points.

Samahu avatar Nov 09 '22 17:11 Samahu

Yes, their implementation converts packets as they arrive rather than waiting for the frame to be ready/complete to start the conversion. It makes total sense but we haven't had the capacity to address it yet.

any possible disadvantage because of this approach?

Not that I can think of.

The only thing is when I tried their decoder it seemed that their published point cloud was missing certain amount of points when comparing it to the point cloud published by ouster driver. But they have other things in place too. So I can't say the approach itself to blame about missing points.

I just want to note it has been a while since I have tried their code. So they may no longer have the issue about missing points in their current implementation.

Samahu avatar Nov 09 '22 17:11 Samahu