Hello, i am trying to detect a cylinder in a pool that has roughly 35 milimeters of diameter.
I am using the Python library for the sensor. When i place the cylinder in front of the sensor it outputs the distance between the sensor and the pool wall, not between the sensor and the cylinder
I know that sensor actually registers the distance between the cylinder and sensor, but i don’t know how to acces it. How can I do it ? Is there also a way to reduce the angle, so that horizontal precision increases, that would help too.
Hi @emirhanuzum, welcome to the forum
Our Ping Sonar requires a strong reflection to have confidence in its distance measurements - it’s best suited for detecting large surfaces (e.g. the sea floor, a wall, etc), rather than small obstacles like the cylinder you’ve described. It sounds like the Ping360 would be a more appropriate sensor for your application - it’s been designed for this kind of use-case.
Most likely it’s being detected as a weaker signal than the wall, so your options are either
- process the profile data directly to make your own distance estimate (instead of the sonar’s distance estimate)
reduce the range so the pool wall is not able to be detected, in which case the sonar may register the cylinder as the most likely distance
The 30 degree beamwidth is a fixed property of the sonar’s transducer, and so can’t really be changed without changing the transducer itself, although it may be possible to physically restrict the sound path. Be aware that reducing the beam width would also reduce the directions where your object is detectable.
If using sonar is not vital, you may be interested in a computer-vision based approach
Hey Elliot, much thanks for your reply. I have managed to get the profile_data you have mentioned and now it works fine. Just need to analyze data to figure out the distance.
Glad to hear it
This post might be worth a read to help with understanding and interpreting the data