Implementing sonars in the navigation stack (ROSARIA)
I'm currently implementing the ROS navigation stack on my Pioneer LX robot with the ROSARIA package as an interface to the robot's drivers. The robot can now perform basic navigation by the use of the SICK S300 laserscanner, consequently, I now want to make use of the four sonar sensors that the Pioneer LX is equipped with. There are two front sonars (2 emitters + 2 receivers), and four rear sonars (2 emitters + 2 receivers) See image below.
I'm not sure how to tackle this problem. My initial thought is to edit the URDF of my robot to include the transforms to each of the eight sonars and then subscribe to the /RosAria/sonar topic in order to read their values. However, having eight separate readings for each sonar doesn't seem ideal.
Are there any packages that combine data from several sonars? Any general suggestions on how to optimally implement the sonar sensors in the navigation stack?
Hi @fendrbud,
You do not need to read from all sonars, this is done by ROSARIA that aggregates the sensor data and publishes as a PointCloud and PointCloud2.
For using the sonar for navigation stack, since ROSARIA is giving you the PointCloud, you only have to set up the costmap config files using the point_cloud_sensor plugin.
Thanks @Weasfas. I have a
costmap_common_params.yaml
file the look like this:Is it the
point_cloud_sensor
line you are suggesting? I don't have a defined sonar frame for the sonar sensors.Yes, I was refering to that plugin. With respect the frame, you can use the one provided in the rosaria topic for the PointCloud, since it is a stamped msgs with header.
Do you want the range_sensor_layer?