Perception algorithms for underwater sonars and cameras
This package is strongly coupled with the other packages in smarc-project. For installation of SMaRC software packages, see smarc-project/rosinstall.
Each folder in this project is a stand-alone ROS package, with the package name being the same as the folder name.
This package implements sidescan sonar object detection, more specifically bouy and rope detection, for SMaRC simulations and vehicles. The detection results are published as Detection2DArray messages at the topic {robot_name}/payload/sidescan/detection_hypothesis
in the frame {robot-name}/base_link
.
Currently, the algorithms for the simulated and real-world detection are completely disjoint. This is because of the simulated sidescan sonar signals looking very different than the real-world signals, as described in this stonefish issue. As mentioned in the issue, part of the problem is most likely the rolling of the vehicle model of SAM.
Due to the abovementioned issues with the simulated sidescan, the SSS detection for the simulation ignores the simulated sidescan topics entirely, but instead rely on the marked_pos_publisher from the smarc_utils repo to publish the groundtruth position of marked positions (currently the buoy positions for the algae farm scenario).
To publish simulated detections, the ROS node sim_sss_detection_publisher subscribes to the groundtruth poses of the marked positions, compute the range and angle between the simulated vehicle and all marked positions, and then publish the positions of the markers that should be visible by the vehicle as detection results.
The launch file for the simulated detection is located at sim_sss_buoy_detection.launch. To launch the simulated detection, run the following:
roslaunch sss_object_detection sim_sss_buoy_detection.launch
The real SSS detection subscribes to the Sidescan message published at the topic /{robot_name}/payload/sidescan
and uses a 1D sliding window change point detection method to detect buoys and ropes. The computation of the detection message based on the vehicle pose is implemented in sss_detector.py, which uses the CPDetector in cpd_detector for the actual 1D change detection.
The launch file for the simulated detection is located at sss_detection.launch. To launch the real detection, run the following:
roslaunch sss_object_detection sss_detection.launch