Skip to content

Depth Camera Sonar with Normals

Bruce Allen edited this page Sep 17, 2020 · 6 revisions

We are creating a Sonar model that takes into account the distance and normal angle to targets as well as the frequency and beam width characteristics of Sonar. We are testing this model in a tank environment consisting of a Sonar device, a target, and a tank, where the transmitter is offset to the left and angled to the right to add context for depth readings:

screenshots_sonar_v2/tank_configuration.png

Here is this view as seen by the depth camera. Darker points are closer and lighter points are further away. The gray above is the cutoff distance, 7 meters:

screenshots_sonar_v2/camera_view.png

Here is this depth view showing 48 points horizontally by 4 points vertically (192 points total). We use these points for computing 16 Sonar beams, each beam from a matrix of rays 3 rays wide by 4 rays high:

screenshots_sonar_v2/3h4v16b.png

Computation time increases by the square of the difference between the nearest and furthest target distances. For example for targets between 0.5 and 20 meters away, each ray requires 31,467 iterations to compute reflected power. Computing all 192 rays takes 35 seconds. For targets between 0.5 and 6 meters away, each ray requires 9,440 iterations and computation takes 11 seconds.

Next is the Sonar view showing the tank example. Bars in the column furthest to the left indicate reflections for the leftmost Sonar beam. Bars in the column furthest to the right indicate reflections from the 16'th Sonar beam. There are 16 columns, one per beam. Bars at the top show closest reflections and bars at the bottom show the longest reflections. Bars values are produced by summing beam powers into 300 buckets. From left to right, reflections are from the left wall, the back wall, the target, and the right wall:

screenshots_sonar_v2/tank_16_rays_300_buckets.png

Although the image is drawn rectangularly, it could be drawn as a pie shape because the Sonar sensor is modeled as a point, not as a beam along the bottom.

Here is the sound pressure level chart for these 16 beams:

screenshots_sonar_v2/tank_16_beam_powers.png

In the tank model, reflections are calculated about once every 10 seconds.

Future work

We need to cut down the computational burden from 10 seconds to somewhere below 10 ms. We calculate reflectivity using less iterations per beam, but we get data loss and we need to adjust the equations for correct timing values. We may need to use look-up tables instead of iterating over frequencies. We add random noise when iterating over frequencies per beam. If we use look-up tables, we will need to apply random noise to vector data retrieved from lookup tables.

Clone this wiki locally