-
Notifications
You must be signed in to change notification settings - Fork 70
Gazebo GpuRaySensor
The Gazebo GpuRaySensor provides an array of mXn rays prepared using the gazebo::rendering::GpuLaser
module. These rays are of type GpuLaserData
and contain the following fields:
-
beam
: The vertical beam plane index, [0, vRes) (the beam row) -
intensity
: The intensity value we want -
range
: The distance value we want -
reading
: The horizontal index, [0,hRes) (the beam column)
We need this record to additionally include:
-
incident_angle
based on reflection. If we model secondary reflection, then we need vertical and horizontal angles. Otherwise we can get by with one normal angle.
Because GpuLaser
is in a layer below GpuRaySensor and its internals are not accessible (and because sensor::visualize
does not recognize custom sensor types for rendering ray lines), we need to build Gazebo from source so we can add the incident_angle
field. We would additionally make a new BeamSensor type (beam
as opposed to ray
or gpu_ray
) that would produce one horizontal sweep of Sonar Beam data as an array. Initially, output will be n
records of (intensity, range) tuples. Later, these fields will be n
records of arrays of (intensity, range) tuples where a given array of (intensity, range) tuples will consist of multiple range values.
Alternatives considered were:
- dsros_dvl: No, this uses the Physics instead of graphics engine.
- Depth camera: We want rays, not rasterization. However, we notice that incident angle support is being introduced to Gazebo using the Depth camera interface, ref. https://bitbucket.org/osrf/gazebo/pull-requests/3193/added-normals-in-depth-camera-sensor.