【声呐仿真】学习记录2.5-DAVE项目
- 一、Dave Models 模型
- Vehicle Models 航行器模型
- New Underwater Vehicle 新型水下航行器
- Dave ROV Models
- Dave Glider Models
- Manipulator Models 机械臂模型
- UUV Simulator Examples
- rexrov
- rexrov2
- desistek saga rov
- eca_a9
- Light Autonomous Underwater Vehicle (LAUV) 轻型自主水下航行器
- Bathymetry Models 探测模型
- Bathymetry Models
- Build from heightmap 从高度图构建
- Object Models
- Dave Object Models 物体模型
- Object Degradation Tool
- 二、Dave Sensors传感器
- 1.Multibeam Sonar 多波束声纳
- 1.1介绍
- 1.2 Background 背景
- Characteristics/fidelity/Features 特性/保真度/特性
- 1.3 Related works 相关著作
- 1.4 Approach 方法
- 1.5 Installation 安装
- 1.6 ==多波束声纳快速入门==
- Launch commands 启动命令
- Raster vs GPURay
- 光栅版本
- GPURay 版本
- Sonar image 声呐图像
- Configurations 配置
- Gazebo Coordinate Frames Gazebo坐标系
- Parameters 参数
- Viewport properties 视口属性
- Sonar properties 声纳属性
- Plugin properties 插件属性
- ROS Topic names
- Variational Reflectivity 变分反射率
- 按型号名称划分的反射率
- How it works 运作方式
- Results 结果
- 自定义 SDF 标签的反射率
- Quickstart 快速入门
- How it works 运作方式
- Results 结果
- Output ROS msg 输出 ROS 消息
- Rviz Sonar Image Viewer Plugin 图像查看器插件
- Scenario demonstrations 场景演示
- Local area search scenarios 本地搜索方案
- 适用于本地搜索方案的 GPU Ray 与 Raster
- Degradaded object detection scenarios
- Examples 例子
- Terrain Aided Navigation Scenarios 地形辅助导航场景
- ==多波束声纳END==
一、Dave Models 模型
Vehicle Models 航行器模型
New Underwater Vehicle 新型水下航行器
一个创建uuv的示例,不过貌似缺少相关的纹理文件
Dave ROV Models
预览所有已有ROV模型
roslaunch dave_robot_launch uuv_collection.launch paused:=true
Dave Glider Models
预览glider模型
roslaunch dave_robot_launch glider_collection.launch paused:=true
右键move to即可看到水下滑翔机: Slocum, hybrid and wave.
Manipulator Models 机械臂模型
roslaunch uuv_dave uuv_predator.launch
UUV Simulator Examples
rexrov
rexrov2
desistek saga rov
eca_a9
Light Autonomous Underwater Vehicle (LAUV) 轻型自主水下航行器
Bathymetry Models 探测模型
Bathymetry Models
有两种方法在Gazebo中模拟高度图:
一是使用Gazebo中的通用Ogre’s高度图生成功能;
另一种是使用Bathymetry_Converter从大型测深高度图文件中分解并生成一个或多个测深面片。
用户可以任意选择。但前者(在2022年2月22日,发现有错误,无法在运行中删除和插入新的测深数据)。此外,其需要更长的时间来加载到场景中的测深。
后者可以与测深自动生成/删除插件一起使用,该插件可以按需根据车辆的位置插入和删除测深图块。
Build from heightmap 从高度图构建
创建一个新的高分辨率海底的示例
Object Models
Dave Object Models 物体模型
DAVE特定物体模型存储在两个位置:
1.dave存储库中的dave_object_models ROS包
2.Within the DAVE collection of the Ignition Fuel online model repository.
在点火燃料在线模型库的DAVE集合中。
有一些鱼、炮弹、罐子之类的物体
Object Degradation Tool
物体扭曲工具,参考#Degradaded_object_detection_scenarios
二、Dave Sensors传感器
1.Multibeam Sonar 多波束声纳
1.1介绍
以前的声纳传感器插件基于图像处理领域,通过将感知图像的每个子像素(点云)转换为类似于具有或不具有声纳方程的声纳传感器(对以前基于图像的方法的详细回顾)。在这里,我们开发了一个基于射线的多波束声纳插件,以考虑声信号的相位phase和再兆应物理场,使用点散射模型提供原始声纳强度范围数据(A图)。
考虑物理特性,包括时间和角度模糊以及散斑噪声。时间和角度模糊度是相干成像系统的点扩散函数(即由于匹配滤波和波束成形导致的旁瓣)的函数。
斑点是由于许多小于成像系统分辨率极限的干扰散射体而导致的图像颗粒状外观。
features 特点:
- 使用点散射模型计算物理声纳波束/射线
– 生成强度范围(A图)原始声纳数据
– 使用 UW APL 的声纳图像消息格式发布数据 - NVIDIA CUDA 核心 GPU 并行化
– 10Hz刷新率,10m范围(光栅版)
注意:要获得闪闪发光的声纳图像, artificialVehicleVibration 光栅版本的标签应为 true。对于 GPU Ray 版本, stddev 或 gaussian_noise_stddev 应大于 0.0(例如 0.01)
1.2 Background 背景
Characteristics/fidelity/Features 特性/保真度/特性
- 基于声纳方程的声学特性 (SNR = SL-2TL-(NL-DI)+TS)
声纳方程不考虑相位、光线之间的混响
- 更高保真度的声学特性
- 插件图
1.3 Related works 相关著作
在 2015 年的 Demarco 中,使用光线追踪开发了 Gazebo 声纳传感器模型。Gazebo 光线追踪功能可生成转换为声纳图像的 3D 点云。
在 Cirqueira 2017 中,使用光栅化开发了基于 GPU 的声纳模拟器。该模型有两种类型的声纳:机械扫描成像声纳(MSIS)和前视声呐(FLS)。其模型中提供的声学特征是准确的,并且代表了声音传播。
1.4 Approach 方法
Original Research paper 原创研究论文:
Choi, W., Olson, D., Davis, D., Zhang, M., Racson, A., Bingham, B. S., … & Herman, J. Physics-based modelling and simulation of Multibeam Echosounder perception for Autonomous Underwater Manipulation. Frontiers in Robotics and AI, 279. 10.3389/frobt.2021.706646的部分文章
1.5 Installation 安装
参照之前的文章,最好用docker安装
1.6 多波束声纳快速入门
Launch commands 启动命令
该存储库包括四种声纳型号(Blueview P900、Blueview M450、Seabat F50 和 Oculus M1200d)
# Raster version
roslaunch nps_uw_multibeam_sonar sonar_tank_blueview_p900_nps_multibeam.launch
roslaunch nps_uw_multibeam_sonar sonar_tank_blueview_m450_nps_multibeam.launch
roslaunch nps_uw_multibeam_sonar sonar_tank_seabat_f50_nps_multibeam.launch
roslaunch nps_uw_multibeam_sonar sonar_tank_oculus_m1200d_nps_multibeam.launch
# GPU Ray version
roslaunch nps_uw_multibeam_sonar sonar_tank_blueview_p900_nps_multibeam_ray.launch
# URDF description version (gpu_ray true/false to change between Raster and GPU ray versions)
roslaunch nps_uw_multibeam_sonar sonar_tank_blueview_p900_nps_multibeam_urdf.launch
Raster vs GPURay
存储库中有两种类型的多波束声纳插件。光栅版本和 GPURay 版本。它们输出相同的结果,但 GPURay 版本可以自由使用更多数量的光线,以节省计算时间和变分反射率特征。
光栅版本
它基于 depth camera 传感器获取点云数据集,用于声纳信号计算。
它通常比 GPURay 版本快,但无法定义垂直光线的数量。此外,根据模型名称的变分反射率也适用。
GPURay 版本
它基于为Velodyne模拟器打包的 GPU Ray 传感器,以获得用于声纳单次计算的点云数据集。
它通常比光栅版本慢,但它可以使用 fidelity 参数定义垂直光线的数量。它只能在所有型号的恒定反射率值下使用。
Sonar image 声呐图像
- 使用 image_view 在启动文件中定义的实时取景捕获绘制。
右键单击它会将图像保存在目录中 /tmp
如果要动态调整大小,请将标记更改 autosize 为 false 启动文件。
- 使用 MATLAB 脚本可视化的导出数据,网址为 scripts/plotRawData.m
Configurations 配置
Gazebo Coordinate Frames Gazebo坐标系
该插件使用 marine_acoustic_msgs/ProjectedSonarImage ROS 消息输出声纳数据。该消息将每个声纳波束的方位定义为围绕向下轴线的旋转,使得负方位角位于前舷,正轴承位于右舷(如果声纳安装在其“典型”前视方向上)。
该插件将使用 Gazebo 框架名称作为 ROS 消息 frame_id 中的框架名称。为了使声纳数据正确地重新投射到 3D 空间中,它必须连接到 Gazebo 中的 X-Forward、Y-Starboard、Z-Down 框架。
Parameters 参数
声纳的参数在每个 model.sdf
或 urdf/multibeam_sonar_blueview_p900.xacro
文件中配置
Viewport properties 视口属性
-
光栅版本
声纳的视口是使用深度相机参数配置定义的,包括 FOV、Clip(Range)、nBeams(宽度)、nRays(高度,也用作垂直视场) -
GPU Ray版本
声纳的视口使用gpu_ray型传感器配置定义,包括水平和垂直视场以及采样数
Sonar properties 声纳属性
声纳计算的参数也在 model.sdf or urdf/multibeam_sonar_blueview_p900.xacro 文件中定义,包括声纳频率、带宽、声速、声源电平。
Plugin properties 插件属性
可以更改计算设置,包括 Ray skips、Max distance、writeLog/interval、DebugFlag、Publishing 主题名称。
maxDistance :定义目标的最大距离,这也定义了每个波束的信号长度。理想情况下,它应该与 clip 深度相机属性的参数匹配。
ray skips :用于减少跳跃光线计算的计算时间。每个光束的光线总数由深度相机属性的 height 参数定义。
sensor gain :用于指定传感器增益,以获得更好的可视化效果。 plot scaler :用于缩放捆绑查看器窗口上的值,该窗口使用 ROS rqt_image_view 的包绘制。
writeLog 标志 :如果打开,则原始数据以 /tmp/ writeFrameInterval as SonarRawData_000001.csv 的速率保存为 csv 文件。此外,对于 GPU Ray 版本, SonarRawData_beam_angles.csv 已保存。
debugFlag 标志 :如果开启,则在控制台上打印每帧的计算时间。
artificialVehicleVibration 标志 :如果打开,高斯噪声值将不断变化,作为本维基上示例gif中的闪闪发光的声纳图像。
除非声纳所连接的车辆被移动或场景中的物体发生变化,否则在现实世界中不会发生闪光噪声(即使声纳场景是静态的,随机噪声值也会持续变化)。
在某些情况下,利用这些物理特性通过检测噪声变化来识别场景中的变化。在插件中,每当场景中对象的最大距离发生变化时,高斯噪声值(随机噪声值)就会发生变化。
此标志参数更改每帧上的随机值,以模拟车辆在原位振动。
ROS Topic names
您还可以为声纳图像和其他数据定义主题名称。
Variational Reflectivity 变分反射率
虽然高保真目标强度对于简单的实现来说是遥不可及的,但用户可以在场景对象上提供不同的表面反射率。
Note 注意:
变分反射率会显着降低刷新率。
该插件将以恒定的反射率启动,可能需要几秒钟才能刷新具有变分反射率的图像。
按型号名称划分的反射率
How it works 运作方式
Results 结果
自定义 SDF 标签的反射率
Quickstart 快速入门
How it works 运作方式
Results 结果
Output ROS msg 输出 ROS 消息
声纳图像的最终输出以两种类型发送。
- Topic name sonar_image
这是内部用于绘制与 ROS 包一起 image_view 使用的消息。
数据使用 OpenCV 的 CV_8UC1 格式生成,用 cv::NORM_MINMAX 归一化,用 cv::COLORMAP_HOT 着色,并使用 BGR8 格式更改为 msg 格式
- Topic name sonar_image_raw
这是与 UW APL 的 ProjectedSonarImage.msg 相匹配的msg。
数据位于 uint8 中。
Rviz Sonar Image Viewer Plugin 图像查看器插件
有一个专用的声纳图像查看器 rviz 插件由 Roland Arsenault 开发。要使用它,请在 src 目录中包含rviz_sonar_image存储库并编译它们。
# clone and compile rviz_sonar_image repo
cd ~/uuv_ws/src/
git clone https://github.com/rolker/rviz_sonar_image
cd ../
catkin build rviz_sonar_image
# run rviz after running the launch file
rviz
在 rviz 中,添加 ProjectedSonarImageDisplay 并选择 sonar_image_raw 要发布的声纳的主题。
Scenario demonstrations 场景演示
Local area search scenarios 本地搜索方案
多波束声呐的 GPU Ray 版本可以完全支持声呐向海底俯仰的局部搜索场景。使用 Dave 中的示例模型,包含用于用户演示的世界/启动文件。
适用于本地搜索方案的 GPU Ray 与 Raster
- Raster version 光栅版本
# generic sdf; not urdf
roslaunch nps_uw_multibeam_sonar local_search_blueview_p900_nps_multibeam_raster.launch
# urdf standalone
roslaunch nps_uw_multibeam_sonar local_search_blueview_p900_nps_multibeam_urdf_standalone_raster.launch
声纳视角掠过海底时仰角光线不足
基于光栅(深度相机)的声纳插件无法更改仰角光线的数量(使用水平/垂直 FOV 的定义进行修复)
512 个水平光束(每个光束有 228 条仰角射线)
- Ray version Ray 版本
# generic sdf; not urdf
roslaunch nps_uw_multibeam_sonar local_search_blueview_p900_nps_multibeam_ray.launch
# urdf standalone
roslaunch nps_uw_multibeam_sonar local_search_blueview_p900_nps_multibeam_urdf_standalone_ray.launch
当然,高程射线的数量是用户可以定义的,但计算时间成本很高
512 个水平光束(每个光束有 500 个仰角光线)
Degradaded object detection scenarios
多波束声纳可用于检测物体的退化。要实现此方案,您可以使用自动扭曲网格模型的 mesh_destortion 脚本来扭曲模型。
Examples 例子
- 大型模型示例:Ship reck(原始与扭曲)
roslaunch nps_uw_multibeam_sonar sonar_shipwreck_blueview_p900_nps_multibeam.launch
- 小模型示例:花瓶(原始与扭曲)
roslaunch nps_uw_multibeam_sonar sonar_vase_blueview_p900_nps_multibeam.launch
Terrain Aided Navigation Scenarios 地形辅助导航场景
TAN Scenarios | Project DAVE