Field-Robotics-Lab / nps_uw_multibeam_sonar

Multibeam sonar plugin with NVIDIA Cuda library
Apache License 2.0
35 stars 20 forks source link

URDF for Standalone and Robot integration #38

Closed woensug-choi closed 2 years ago

woensug-choi commented 2 years ago

This is on top of https://github.com/Field-Robotics-Lab/nps_uw_multibeam_sonar/pull/31, https://github.com/Field-Robotics-Lab/nps_uw_multibeam_sonar/pull/33, https://github.com/Field-Robotics-Lab/nps_uw_multibeam_sonar/pull/36, https://github.com/Field-Robotics-Lab/nps_uw_multibeam_sonar/pull/37 and dependent on https://github.com/Field-Robotics-Lab/dave/pull/209.

URDF raster version work just fine.

URDF of the ray version does not work.. strange.

Point cloud calculation work if the sonar plugin is excluded.

When both Velodyne(for point cloud) and sonar plugin is called, no update on calculation.

This only happens for xacro/macro. Not if defined directly at SDF.

woensug-choi commented 2 years ago

It's almost a major update.

Note,

Also, https://github.com/Field-Robotics-Lab/nps_uw_multibeam_sonar/issues/35 should have been resolved.

image

woensug-choi commented 2 years ago

URDF to attach multibeam sonar sensor is validated,

with https://github.com/Field-Robotics-Lab/dave/pull/222,

roslaunch dave_demo_launch dave_integrated_demo_multibeam_sonar.launch

image

woensug-choi commented 2 years ago

@mabelzhang This PR includes all other PRs (#37 and #31) alive. I've added ros-noetic-pcl-ros and ros-noetic-image-view in the cuda-dev branch of dockwater.

What you want to try is (just tested myself)

# Basic ones 
# 2nd one will take some time, like 15 seconds, to show the first image
# 3rd one will look like a static image compared to the others (without artificial vibration or noise)
roslaunch nps_uw_multibeam_sonar sonar_tank_blueview_p900_nps_multibeam.launch
roslaunch nps_uw_multibeam_sonar sonar_tank_blueview_p900_nps_multibeam_ray.launch
roslaunch nps_uw_multibeam_sonar sonar_tank_blueview_p900_nps_multibeam_urdf.launch

# Local search scenario ones (generic; not urdf)
roslaunch nps_uw_multibeam_sonar local_search_blueview_p900_nps_multibeam_raster.launch
roslaunch nps_uw_multibeam_sonar local_search_blueview_p900_nps_multibeam_ray.launch

# Local search scenario ones (urdf)
roslaunch nps_uw_multibeam_sonar local_search_blueview_p900_nps_multibeam_urdf_standalone_raster.launch
roslaunch nps_uw_multibeam_sonar local_search_blueview_p900_nps_multibeam_urdf_standalone_ray.launch

# degradation
roslaunch nps_uw_multibeam_sonar sonar_shipwreck_blueview_p900_nps_multibeam.launch
roslaunch nps_uw_multibeam_sonar sonar_vase_blueview_p900_nps_multibeam.launch
mabelzhang commented 2 years ago

This looks so cool!

Do I need something extra for the 2nd launch file in Basic (sonar_tank_blueview_p900_nps_multibeam_ray.launch) and the 2nd in local search generic local_search_blueview_p900_nps_multibeam_ray.launch? The sensor isn't loaded, only the tank and the cylinders show up. Update: see comment below

All other launch files worked for me.

There are some minor build warnings. Should be easy to fix. Not the end of the world - can be after the release.

Warnings   << nps_uw_multibeam_sonar:make /home/master/dave_ws/logs/nps_uw_multibeam_sonar/build.make.024.log
<command-line>: warning: ISO C++11 requires whitespace after the macro name
<command-line>: warning: ISO C++11 requires whitespace after the macro name
/home/master/dave_ws/src/nps_uw_multibeam_sonar/src/sonar_calculation_cuda.cu(340): warning: variable "ray_elebationAngles" was declared but never referenced

/home/master/dave_ws/src/nps_uw_multibeam_sonar/src/sonar_calculation_cuda.cu(340): warning: variable "ray_elebationAngles" was declared but never referenced

<command-line>: warning: ISO C++11 requires whitespace after the macro name
<command-line>: warning: ISO C++11 requires whitespace after the macro name
mabelzhang commented 2 years ago

I'll leave it to you to fix the build warnings.

mabelzhang commented 2 years ago

Once merged, should update this page as well https://github.com/Field-Robotics-Lab/dave/wiki/Install-Directly-on-Host The sudo apt install line and maybe the "Note" line below it.

mabelzhang commented 2 years ago

We decided to merge this so that it can be tag at the same time as the dave repo for 4.3.0 (see https://github.com/Field-Robotics-Lab/dave/pull/226#issuecomment-1051271034)

I looked into the build warnings a little bit, I think the ray_elebationAngles is actually a typo, and a correct variable is declared right after it, so it can just be removed. I don't know what macro names it's talking about though. I'll still leave that to you.

Wiki page mentioned above has been updated. I'm a little iffy whether that's the best way to document it... will the cuda-dev branch eventually be merged into the main branch of dockwater, or will it always stay separate? Currently, the user has to find that specific git checkout cuda-dev line on the mutlibeam tutorial page to know that they have to rebuild their Docker image (which is not a trivial overhead) to run the multibeam sonar. The wiki update gives them a fairer warning ahead of time. But still, there's a risk of cuda-dev falling out of sync with main after say, the project ends. So it might be worth having an option in the Dockerfile to add a layer just for the multibeam dependencies, so that it can go into main. Just a thought.

woensug-choi commented 2 years ago

Thanks! glad it worked. And yes, there are always things to take care after merging.