基于ROS多波束前视声呐仿真模块的一些应用

鼓捣前视声呐仿真模块也有一段时间了,在没有实际数据的条件下,选择仿真做一些算法的前期验证工作不失为一种选择,更多的是无奈的选择吧。长时间没有写点东西了,姑且记录一下前段时间的工作。

关于仿真的平台与声呐仿真模块之前的博客都已经有详细介绍,不再赘述。

本文的相关视频可以移步我的知乎博客:https://zhuanlan.zhihu.com/p/510770644

一·、图像迁移技术改善目标识别的小样本问题

水下研究工作面临的比较大的一个困难就是研究数据的稀缺。目前已有开源的水下声学目标识别的小型数据集,但用于深度学习训练识别模型还是面临小样本的问题。相对于实地采集水下数据,仿真平台能简易高效生成大量的数据,结合已有的真实数据,采用基于深度学习的CycleGan网络进行图像风格迁移以实现数据集的扩充。

仿真平台的声呐模块参数与实际声呐参数需要尽量一致,目标物也与实际目标物尺寸相一致,均为边长为0.3m的正方体。场景如下:

基于ROS多波束前视声呐仿真模块的一些应用_第1张图片

真实声呐数据,仿真声呐数据与CycleGAN迁移后的数据对比效果如下:

基于ROS多波束前视声呐仿真模块的一些应用_第2张图片

在CycleGAN迁移模型训练过程中,使用了560张真实声呐数据,其中500张作为train,60张作为test,使用了330张仿真声呐数据,其中300张作为train,30张作为test。训练得到CycleGAN的迁移模型。

另取300张仿真声呐数据,经训练好的CycleGAN模型得到得到迁移后的数据,于另取300张真实声呐数据一起组成数据集进行目标识别模型的训练。与单纯使用真实数据或真实数据与仿真未迁移数据混合相比,使用真实数据与仿真迁移数据的效果是最佳的。

基于ROS多波束前视声呐仿真模块的一些应用_第3张图片

二、基于双目前视声呐目标重建

这部分的工作是尝试复现Stevens Institute of Technology团队的工作。该团队基于双目前视声呐已经从仿真到实际实验实现了水下大场景的重建,个人认为效果还是相当不错的。

基于ROS多波束前视声呐仿真模块的一些应用_第4张图片

详细视频可以移步我的知乎上的博客:https://zhuanlan.zhihu.com/p/510770644

照着文章的思路初步完成简化版的算法框架,然后搭建仿真环境验证。在配置声呐仿真模块参数时,期望尽可能地贴近于手头上的Tritech声呐的参数,使得仿真模块所需算力大为增加,故仿真过程中声呐数据帧率过低一直是个问题。

基于ROS多波束前视声呐仿真模块的一些应用_第5张图片

 详细视频可以移步我的知乎上的博客:https://zhuanlan.zhihu.com/p/510770644

 将重建的目标点云映射至空间世界坐标系,坐标与原目标相比大致是匹配的。

基于ROS多波束前视声呐仿真模块的一些应用_第6张图片

详细视频可以移步我的知乎上的博客:

以上是初步测试时的效果,其实可以看到这不是精细的重建,只能重建一个轮廓,同时还有很多重影。当然后续加入了一些点云匹配及滤波的算法后,效果应该能好很多。

接着对比较大的目标物进行重建,还是能大致得到沉船的轮廓。

基于ROS多波束前视声呐仿真模块的一些应用_第7张图片

详细视频可以移步我的知乎上的博客:https://zhuanlan.zhihu.com/p/510770644

从沉船重建的效果也可以看到,有时相邻帧重建耗时非常长,之后我们发现耗时主要在km算法(二分图最大权值匹配)这一块。正着手采用GPU加速及想办法进行算法优化两个思路看看效果。

显然,重建方案是非常标准的SFM,非常依赖声呐,或者说机器人的准确位姿。在仿真环境里,输出的机器人位姿是绝对准确的,所以重建效果还是不错的。也尝试过加入带偏移及噪声的IMU模块,结果积分计算里程计数据飘得非常厉害,就没做下一步测试了。至于实际水下实验效果如何还有待测试。当然按Stevens Institute of Technology团队的实验视频展示的是没有问题的。

之前我在博客里就提及了一些水下slam的构想,我觉得这就是一个非常不错的切入点。把双目前视声呐作为一个传感器模块,机器人位姿通过惯导DVL之类的常见水下传感器得到,双目前视声呐模块空间中输出点云建图,然后点云匹配校正机器人位姿,或者说二者相互融合校正。

三、基于前视声呐目标跟踪

基于ROS多波束前视声呐仿真模块的一些应用_第8张图片

这是一个纯工程项目。前视声呐原始数据输入,识别模块输出目标的距离以及方位角,供控制系统控制机器人跟踪目标。路线清晰,技术成熟,无非是用些开源的资源搭积木而已。个人主要负责目标识别模块,将目标距离与方位角输出给机器人进行跟踪控制。因为用ros比较多,所以就在ros下开发了。分两个部分,一是前视声呐数据转ros的image的topic,二是darknet_ros目标识别并输出目标距离及方位角。至于数据集制作,模型的训练和部署之前的博客也写得很清楚了。

先期工作还是再仿真环境中先将程序框架搭建起来。直接看初步的结果吧。仿真和跑识别模型都太吃资源了,主要是声呐仿真生成数据帧率低,导致效果不佳。

基于ROS多波束前视声呐仿真模块的一些应用_第9张图片

详细视频可以移步我的知乎上的博客:https://zhuanlan.zhihu.com/p/510770644​​​​​​​

当然后续还要加上其它的一些模块,比如出现多个目标时如何滤去误识别的目标。在仿真环境中完成代码框架后,基本上就等实际采集的数据做替换再根据实际问题修正了。从这方面看,仿真模块还是能对实验开发有所帮助的。

四、水下声学数据采集

我们一直在致力于构建开源的前视声呐数据集,在几次实验后也开源了一个小型的数据集。我们以基于声学的水下三维重建与水下slam为主要研究目标。前段时间也进行了最近的一次湖试,采集了一些新数据。设备如下:

基于ROS多波束前视声呐仿真模块的一些应用_第10张图片

实际湖试中不出意外地遇到各种问题,所得的数据非常不理想,很多设计的场景没有实现。最为遗憾的是双目前视声呐的场景未能实验,只能待准备充分后的下次湖试。

接下来要着手对采集的数据进行标注等后处理,扩充已有的数据集。

我们的数据集链接:海洋空间环境感知(虎鲸)开源计划 - OpenI

你可能感兴趣的:(水下机器人,仿真,ROS,前视声呐,仿真)