Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

The ocean reflects the laser beams #29

Closed
osrf-migration opened this issue Aug 15, 2018 · 13 comments
Closed

The ocean reflects the laser beams #29

osrf-migration opened this issue Aug 15, 2018 · 13 comments
Labels
bug Something isn't working major
Milestone

Comments

@osrf-migration
Copy link

Original report (archived issue) by Carlos Agüero (Bitbucket: caguero, GitHub: caguero).


This issue was discussed in pull request #41.

A potential solution might involve to play with visibility masks.

@osrf-migration
Copy link
Author

Original comment by Carlos Agüero (Bitbucket: caguero, GitHub: caguero).


  • changed title from "The ocean reflects the laser beams." to "The ocean reflects the laser beams"

@osrf-migration
Copy link
Author

Original comment by Carlos Agüero (Bitbucket: caguero, GitHub: caguero).


  • changed milestone from "0.3" to "0.5"

@osrf-migration
Copy link
Author

Original comment by Jonathan Wheare (Bitbucket: Jonathan Wheare).


Hi Carlos,

I have been looking at this and the linked issue. If you want an example of the behavior of a velodyne on the water, the lidar data in the following image was accumulated from several scans of an artificial lake. The sensor was an HDL-32 mounted on a WAM-V. The top of the image includes trees and a beach, the bottom is the water surface. Note that in this image, the velodyne produces only a very few returns from the water surface.

https://csem.flinders.edu.au/competitions/maritime_robotx/images/gallery/LiDAR%20west%20lakes%20data..jpg

A connected issue may be that the GPU velodyne implementation does not currently support variable reflectivity. A bug has been filed about this on the dataspeed bitbucket.

https://bitbucket.org/DataspeedInc/velodyne_simulator/issues/13/same-intensity-values-populated-if-gpu_ray

If the bug is resolved, it may be possible to create the expected behaviour by setting the oceans laser_retro value to zero.

Regards,
Jonathan.

@osrf-migration
Copy link
Author

Original comment by Jonathan Wheare (Bitbucket: Jonathan Wheare).


HI Carlos,

After some experimentation, the laser_retro tag is supported by the GPU velodyne_lidar plugin when applied to the visual element of the SDF description. However, all generated lidar returns within the maximum and minimum ranges will be returned even if they have a low intensity value. I have modified a version of the velodyne_simulator plugin that will optionally clip points that have an intensity that lies beneath a specified threshold. If the laser retro value of the ocean is set to a negative value, ocean points can then be removed from the lidar return while still detecting objects that have the default laser_retro value of zero. This version of the plugin can be found here: https://bitbucket.org/JonathanWheare/velodyne_simulator/src/master/

Without clipping. In this image the lidar has returned approximately 14,000 points.
Screenshot from 2019-01-23 13-44-37.png

with clipping. In this image only approximately 2500 points have been returned by the lidar.
Screenshot from 2019-01-23 13-45-24.png
(Note: buoy laser_retro values have been set to 100 to enable them to be clearly distinguished from the ocean return.)

Regards,
Jonathan.

@osrf-migration
Copy link
Author

Original comment by Brian Bingham (Bitbucket: brian_bingham).


Thank you @JonathanWheare. This seems very promising. I'll let Carlos comment on the details. Do we think that the velodyne_simulator folks will entertain a PR to implement this feature? From your fork it seems like a low-impact addition.

@osrf-migration
Copy link
Author

Original comment by Jonathan Wheare (Bitbucket: Jonathan Wheare).


Hi Brian,

I think it is a sensible enhancement to the simulator package.

Regards,
Jonathan.

@osrf-migration
Copy link
Author

Original comment by Carlos Agüero (Bitbucket: caguero, GitHub: caguero).


Hi Jonathan, this solution looks very promising. One more question: Aren't the beams hitting the ocean floor? It's not clear from your picture but I'd expect to happen.

@osrf-migration
Copy link
Author

Original comment by Carlos Agüero (Bitbucket: caguero, GitHub: caguero).


In any case, I suggest to go ahead and submit your pull request. Looks like a good contribution to velodyne_simulator. I'll share my comments in your pull request. Feel free to tag me.

@osrf-migration
Copy link
Author

Original comment by Jonathan Wheare (Bitbucket: Jonathan Wheare).


Hi Carlos,

I cannot tell you exactly how far through the water surface that a lidar will give a return, but I can state that my experience has been that such returns have been very rare. The west lakes image I linked to was an accumulation of several passes of the lidar, and beyond the vehicle, shore and test docking area (shown here: https://csem.flinders.edu.au/competitions/maritime_robotx/images/gallery/west_lakes_docking.jpg) only a small scattering of returns can be seen. I interpret these returns as coming from the water surface. There may be places where the water is shallow enough for a return to come from the floor, but in the RobotX course area, I expect such returns would be minimal.

Thanks for your support, I will put together a pull request for velodyne_simulator.

Regards,
Jonathan.

@osrf-migration
Copy link
Author

Original comment by Carlos Agüero (Bitbucket: caguero, GitHub: caguero).


Thanks Jonathan, looking forward to see the pull request!

@osrf-migration
Copy link
Author

Original comment by Carlos Agüero (Bitbucket: caguero, GitHub: caguero).


  • changed milestone from "0.5" to "1.1"

@osrf-migration
Copy link
Author

Original comment by Jonathan Wheare (Bitbucket: Jonathan Wheare).


Hi Carlos,

I just sent in pull request that should enable filtering of the returns. Note that by default, other objects in the world will still give zero intensity returns.

Regards,
Jonathan Wheare.

@osrf-migration
Copy link
Author

Original comment by Carlos Agüero (Bitbucket: caguero, GitHub: caguero).


  • changed state from "new" to "resolved"

Solved with https://bitbucket.org/DataspeedInc/velodyne_simulator/pull-requests/7/master/diff and pull request #79. Thanks @JonathanWheare !

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working major
Projects
None yet
Development

No branches or pull requests

1 participant