Ping360 ROS Python Driver


I am a university student currently working on developing an AUV. I have been building a Python-based driver to get our Ping360 Sonar data onto our ROS network, specifically inside a sensor_msgs/LaserScan message type for later use with SLAM. Currently, I have implemented a manual scan with the “control_transducer” function and am manually stepping through a specified range of gradians. I had a few questions that don’t seem to be addressed anywhere in the documentation for either the Ping360 or the python driver GitHub repository and was hoping to either get pointed in the right direction or get some insight provided.

  1. If we wanted to control the range of the scan, what combination of settings would we need to change? I assume the settings in question are sample period and transmit duration, I’m unsure if there are any more. More specifically if we are given a range of 12m for example. What would mathematical equations need to be performed, and what constants would we need to provide to get the correct settings?

  2. Does the number of samples contribute anything to the range or is that simply for better resolution for the scan data?

  3. The return data field states that “An array of return strength measurements taken at regular intervals across the scan region”. Is calculating the interval as simple as dividing the previously mentioned by the length of the array of the returned data or is there more to it than that?

I will greatly appreciate any and all information that may be provided.

Hi @SirJansen, welcome to the forum :slight_smile:

I’d recommend reading the following threads, then following up if you have further questions:

Thank you very much @EliotBR. Those links were very insightful and I have the program working correctly now. While I was doing some searching related to this I read somewhere that the transmit frequency should also be attenuated based on a few other parameters for clarity. I was wondering what you’d recommend for this aspect.

1 Like

Glad to hear it! :slight_smile:

Can you provide a link to where you read that? I’m not sure of the context.

If it’s relevant, the Ping Viewer docs description may be helpful:

Alternatively, if you actually meant the transmit_duration,