I am curious about some anomalous readings I got while testing the Ping sonar.
My proprietary, industry-leading test setup was a 12.5 gallon garbage bin mostly full of hose water (to 482.6 mm). Please note that that is not Ping’s intended use case – every measurement I made was beneath the 0.5 meter minimum range, and confined measurement space certainly led to multipath interference. Also, I used a piece of PVC pipe to position the transponder off the ground in a way that could have caused interference. Even still, I noticed some interesting calibration results that cause me to wonder about the internal workings of the sonar signal processing. Perhaps BlueRobotics could shed some light on it, or if the algorithm is proprietary, maybe the forum would care to speculate.
I found that sensor had high relative accuracy and a constant 53 mm offset over the range from 250-450 mm (see figure above). That was very good, and indicates that I could be successful in measuring ice thickness with the sonar, which is my ultimate intended use case. However, at distances lower than 250 mm, the slope of the fit line remained the same but the reported distance jumped upward by about 500 mm as shown in the figure below. My question is about what might have caused that jump.
I think this behavior might be caused by the front of the sonar wave returning before the ping has completed broadcasting. The figure below, created using a different setup, should help clarify what I mean. In that setup, a ping consisting of five periods of a 19KHz sine wave was emitted, and an audio input was recorded to determine the timing of the echo (Fig. 7). We see in Fig. 8 a spectrogram showing the intensity at different frequencies as a function of time. In the 19KHz band, there is initially high energy due to lingering resonation from the ping. After a while, at about 0.5 ms on the time axis, you can discern the echo returning from the floor of the test tank. It is straightforward to translate that time into distance to the target: simply multiply by one-half the speed of sound in water (which is 1500 m/s) to get 375 mm, which is close to the actual transponder position.
I can see that extracting the returned signal becomes very hard when the distance is small because returning echoes impact the transponder before it has had time to stabilize after the sound is broadcast. My theory is that BlueRobotics’ Ping Sonar might yield the anomalous jump in distance because the initial return reaches the sensor too soon and gets ignored, causing a secondary echo (perhaps bouncing off of the target twice) to be reported.
Does anyone else have any theories? I am interested to see whether I can greatly reduce the minimum measurement range. I expect that modifying Ping firmware parameters such as the pulse duration might help me with this goal, but I wanted to check with the community first. Additionally, I might be totally wrong about this – for instance, perhaps Ping is getting distance from the beat frequency instead of time-of-flight. Any theories, feedback, or suggestions of resources to look up would be highly appreciated.
Thank you,
Tim
*edit: typos
**edit: experimental setup explanation