Ping360 ROS Package

Hey all!

@Stormix and I are working in a ROS Package for the Ping360 sonar, we managed to do so using the python library you provided (brping). We published our work on GitHub Here it is it’s still a WIP (/develop branch). You can check it out and let us know what you think.

However, we were wondering if there is an ETA on the ping-cpp device library, because we would like to create a C++ version of the package.

Best regards,
Henrique Martinez.

Hi @henrique,
I’m very interested with your work on the ping360.
I have one that I will put on a RC boat already on ROS and NAVIO2.
If you need maintainer, I would be glad to help you.

Also I would like to know why you use the type of topic “Image” for this device ?
We would like to implement it in a slam so I would suggest a custom msg based on laser_scan at low rate.

Hello Thomas!
As I mentioned on Github issue, the initial purpose of the project was to be able to do some image processing on the sonar output images without having to go through the ping viewer.
We are open to adding new features, as long as time allows it :smiley:. I’m personally not familiar with laser_scan msg type but I’ll take a look at it.
Meanwhile, feel free to create a pull request on the project if you want to help.

Regards,
Anas

Thanks for sharing!

Hi,

I am reviving this topic as we are now adapting the previous ROS 1/Python package to ROS 2/C++.

Indeed our BlueROV2 now runs ROS 2 with Navio2 and we want to run some embedded sonar processing.

Just bumping the thread so that interested people get to know about this project, or advertise their own before we reinvent the wheel.

Hi @olivier,

Can you provide more info on what you are doing with BlueROV2 + ROS2? Can you refer me to some documentation/papers?
I am interested in knowing how you set up your system and what you are running.
Right now, I am setting up my BlueROV2 with ROS kinetic to run the ping360 package and save some data in rosbags for post-processing. I will also add a ros package for a xsens imu I added, and one for saving videos from the camera.
With the experience you had so far, do you think it is better to go for ROS 2?

Hi,

I am mostly using the BlueROV2 for teaching both underwater robotics and ROS2.
We do beacon/vision fusion for localization and also compare model-free and model-based control.

We have switched to ROS2 for the 2020 intake. We have struggled a bit with our setup that relies on Navio2, which is not supported for Ubuntu 20.04 but it was solved.

As far as I know the ROV works well on many versions of Ubuntu / ROS. Most people I know who use it are still on ROS 1. You may consider upgrading though as Kinetic is a rather old distribution.

Hello,

I am using Ubuntu 22.04 and ROS 2 Humble. I have a real Ping360 sonar and I want to use it for mapping and obstacle detection. I want to run it in a ROS2 environment.

Currently, I can get data directly using the Ping Viewer software. I also cloned the CentraleNantesRobotics/ping360_sonar repository from GitHub and built it with colcon build.

ros2 run ping360_sonar ping360.py --ros-args -p fallback_emulated:=False

Using this command, I can start the sonar in ROS2 and view the data in Rviz2 as an Image.

My problem is that topics like LaserScan or PointCloud2 are not visible, so I cannot visualize the data in these formats in Rviz.

My questions are:

  1. Is there an official or supported ROS2 package for obtaining data from the Ping360 sonar?
  2. Do I need a special launch file or node to publish LaserScan or TF?
  3. What is the recommended way to use Ping360 in ROS2 for mapping and obstacle detection?
  4. Do I need to change the Ubuntu or ROS version for this purpose?
  5. What data types can I visualize in Rviz with Ping360? (Image, PointCloud2, LaserScan, etc.)

Thank you,

Beyza Nur Yağcı

Hi @beyza,

I’ve moved your post here because it’s requesting support for the package which was shared in this thread.

Blue Robotics does not currently provide an official or supported ROS2 package for Ping360 interfacing, and nor do we have a specifically recommended package (it’s not a space we’ve investigated or contributed to).

I’m afraid I can’t meaningfully respond to the rest of your questions, as they relate to technologies and implementation details I’m not familiar with.


In case it’s relevant, any packages that haven’t been updated since July this year are unlikely to support the new auto_transmit messages, so will have slower scanning speeds than the device is capable of (due to the communication overheads of individually requesting a profile at each angle).

I would also note that we’re in the process of transitioning BlueOS to primarily using Zenoh for communication, with MCAP files for synchronised data recording (both of which I believe are quite ROS compatible). It’s possible that will make this kind of integration more straightforward in future, but I’m unsure whether there’ll be integration of peripherals in that kind of capacity.