这部分内容其实和水下目标跟踪的软件框架没啥联系,但既然上一篇文章提到了水下环境的仿真,结合近期的一点小尝试,也谈谈对水下slam仿真可行性的一些构想。

在水下光学传感器基本上效果非常差。声学设备一方面专业性比较强(换句话说就是很小众),另一方面传感器价格非常高,更雪上加霜的是进行一次数据采集所需耗费的时间人力物力成本很大,然而不能保证能得到理想的数据。最后各个机构或个人花费如此大代价得到的数据也很少有开源出来的,也可以理解。因此在水下方向的研究都面临一个数据稀缺的问题。

早前在做slam小车的时候就接触过gazebo里进行虚拟仿真。但是鉴于陆地上的实验平台搭建和调试简单,有什么需求直接在真实平台实现就可以了,所以也没有做更深入的了解。

那么转到水下上,在水下实际测试工作量较大的前提下,理论上在仿真的环境里搭建实验平台,获取实验数据,能为水下slam算法的研究提供极大的便利。

实际上我感觉仿真难点在于水下环境的搭建,无论是水体复杂的动力学特性对机器人的影响,还是水体对各类信号造成的影响,这些都是很难模拟的。再者,水下声学设备使用得比较多,专业性太强,比较小众,可能会缺少针对性的仿真模块。比如我需要前视声呐的仿真,而且限定在Gazebo&ROS的环境能使用。一些专业声学方向研究者或许会单独开发前视声呐的仿真模块进行研究,但不一定能在Gazebo&ROS的仿真环境使用。然而对应SLAM算法的研究者来说,前视声呐只是系统里的传感器之一,更关心的是获得点阵数据,而不是从声学原理对前视声呐进行研究,提高前视声呐仿真模块的质量。水下通信更是一个大问题就不展开说了。

目前开源的水下仿真平台也有,比如上一篇文章提到的uuv_simulator。能模拟部分水体的动力学特性,也有一些水下的传感器模块,如前视、侧扫等,但这些传感模块我认为仿真和实际差距应该还是挺大。当然基于欧盟的swarm项目使得其机器人模型非常丰富。其实也就是提供了推进器模块和尾翼模块,能自由设计水下机器人。许多研究机构基于此结合拥有的实际机器人构建了水下机器人模型进行了开源,对于算法研究者来说在不是自己的研究领域采用拿来主义是解决问题的一个途径。当然uuv_simulator里也集成了很多水下机器人的控制算法供研究者使用或优化。

随便选择ECA A9这个AUV的模型跑一下例程,让其在水下绕圈巡航,可以采集其搭载的传感器模块的数据,效果大致如下:

csdn传短视频有点麻烦,测试视频效果可以移步:https://zhuanlan.zhihu.com/p/358369810

目前,我个人觉得水下slam如果能实现,声光融合将是很好的解决途径。当然融合是以声学为主,光学辅助。毕竟正常情况下水下光学基本和瞎子差不多,能获得的信息基本没有,水质特别好的情况另说。

我们都知道声学成像原理和光学成像原理是不同的,陆地slam那一套是不能直接搬到水下的。再吐槽一下,目前我感觉slam技术并没有走出实验室得到大规模应用。我也不太认为水下slam技术能实现定位,但或许能在探测上做些文章,三维重建什么的,对水下弱观测的环境还是有很大的意义。需要指出的是,slam技术和实时三维重建是有非常相似却也有些许不同的。在水下slam这方向有两个机构我认为做得非常好,我也就不翻译机构名了,在下面列出来,感兴趣的可以去关注一下他们的成果及进展。

1、University of South Carolina,Autonomous Field Robotics Laboratory(AFRL)

2、Carnegie Mellon University, Robot Perception Lab(RPL)

现在回到最开始的问题,如果要研究水下slam的算法,总得有数据。假如没有一个实验平台(ROV/AUV+惯导+dvl+usbl+前视+双目…),或者数据采集回来后算法实验过程中突然又发现新情况需要新的数据,又或者根本就不能好好规划应采集什么数据进行研究。水下采集数据可是非常折腾的。先行的仿真确实是一种解决的方法。

实际上对多波束前视声呐(我个人认为是水下slam主要信息源)仿真模块也是有的,如巴西机器人研究所的一个项目https://github.com/romulogcerqueira/sonar_simulation。但是其不能和水下机器人以及其它传感器结合起来。

这时就有一个非常优秀的开源计划,是美国海军研究生院主导的旨在为水下机器人自主算法验证提供仿真平台的dave项目(https://github.com/Field-Robotics-Lab/dave)。项目基于uuv_simulator和ds_sim,详情请仔细参阅其wiki。

Dave项目不仅添加了水下滑翔机等模型,也添加了水下机械臂模块,而且除了uuv_simulator和ds_sim里的传感器模块,Dave项目还添加自行开发的了USBL,DVL,多波束前视声呐,水下3D激光雷达等等。算是目前比较全的水下仿真平台。

之前粗略地搭了一个小平台,bluerov搭载IMU,双目相机和多波束前视声呐。其中IMU仿的IMU型号为ADIS16448(带噪声模拟),前视声呐仿的型号为blueview P900,双目直接使用gazebo自带的双目模块。如下:

输出如下:

csdn传短视频有点麻烦,测试视频效果可以移步:https://zhuanlan.zhihu.com/p/358369810

右边的屏幕输出的双目图像,前视图像和IMU的数据,同时是能获取前视声呐原始点阵数据的,便于算法的研究。同时gazebo里是能获取机器人在世界坐标系下的绝对位置,可以与算法解算出来的位置做比较,成为算法性能评估的一个依据。

接下来需要考虑的就是仿真与实际的差异究竟有多大了。如果仿真得到的环境等同于最理想的实际环境,其就能为算法开发提供支持。换个角度思考,算法在最理想的环境都没有效果,如何能在恶劣的实际水下环境中起作用。但是,如果仿真模块,尤其是传感器模块从原理上就是错的,就会对算法的开发提供干扰。期待能有一个仿真平台能在仿真和实际环境中实现一定程度的统一。就如本系列文章基于ROS搭建简易软件框架实现水下目标跟踪一样,在仿真中开发的算法改动几乎可以原封不动地移植至实际环境中。

不管怎么样,目前可以先搭建平台,配置好需要的传感器,录制数据包,先跑跑成熟的slam框架看看效果,再考虑如何从声学成像的角度出发对算法进行优化,实现水下应用。

基于ROS搭建简易软件框架实现ROV水下目标跟踪(补2)--水下slam仿真构想相关推荐

  1. 基于ROS搭建简易软件框架实现ROV水下目标跟踪(一)--简述

    当前,水下领域比较小众,开源的资料比较少.Bluerov作为成熟的产品,结合其开源的优势,经历了多年的技术迭代,在市场上受到极大欢迎.刚接触水下领域时,希望能找到一个比较方便的实验平台,开源的Blue ...

  2. 基于ROS搭建简易软件框架实现ROV水下目标跟踪(三)--软件框架简述

    项目链接:GitHub - cabinx/cabin_auv_ws: A simple demo for rov/auv underwater object tracking based on ros ...

  3. 基于ROS搭建简易软件框架实现ROV水下目标跟踪(二)--硬件框架简述

    虽然本系列文章是介绍一个简易的ROV水下目标跟踪demo的软件实现,但软件框架的运行也是需要硬件基础的.鉴于我在这方面不擅长,实际工作也非我完成,由我撰写此部分可能会出现谬误.和完成demo硬件部分的 ...

  4. 基于ROS搭建简易软件框架实现ROV水下目标跟踪(补1)--gazebo仿真

    项目地址:https://github.com/cabinx/cabin_auv_simulation 鉴于水下机器人调试的复杂性,在仿真环境中对水下机器人进行先期调试能降低调试难度,节约大量的时间成 ...

  5. ros 双wan配置_基于ROS搭建简易软件框架实现ROV水下目标跟踪(九)--程序解析之PWM波下发...

    模块对应cabin_controllers/serial_to_mcu.模块实现的功能为监听网络中PWM矩阵信息,将其转换成十六进制数据通过串口下发至MCU,实现对推进器电机的控制.模块数据的串口通信 ...

  6. 基于ROS搭建简易软件框架实现ROV水下目标跟踪(六)--电机模型文件

    项目链接:https://github.com/cabinx/cabin_auv_ws 推进器电机模型文件的内容只有一个:推进器推力与PWM波的映射关系.当我们推算得到某时刻该推进器需要提供的推力时, ...

  7. 基于ROS搭建简易软件框架实现ROV水下目标跟踪(四)--网络配置

    项目链接:https://github.com/cabinx/cabin_auv_ws Demo测试时需要岸上PC与树莓派在同一局域网下运行,二者能进行通信.下水测试时总的设备连接大致如下图. Fat ...

  8. 基于pytest搭建接口自动化测试框架,提供源码

    基于pytest搭建接口自动化测试框架 框架整体介绍和方法教程 新框架(比这个功能多了很多,用例使用yaml编写) 源码框架结构 xmind项目结构介绍 源码地址 使用教程 1.全局变量设置和使用 2 ...

  9. 《多旋翼无人飞行器嵌入式飞控开发指南》里基于FreeRTOS的无人机软件框架

    <多旋翼无人飞行器嵌入式飞控开发指南>里基于FreeRTOS的无人机软件框架

最新文章

  1. 正则 去除字符串中的特殊字符
  2. Python中的那些“坑”
  3. Tableau系列之使用日期
  4. java开发怎么打补丁_[Java教程]【NC】出补丁与打补丁
  5. 利用Asp.net中的AJAX制作网页上自动选取开始日期及结束日期的用户自定义控件...
  6. python-scrapy爬虫框架
  7. 图像处理中各种边缘检测的微分算子简单比较(Sobel,Robert, Prewitt,Laplacian,Canny) 【转】
  8. (转) 用虚函数实现多态
  9. 如何git-cherry-pick仅更改某些文件?
  10. Python的并发并行[3] - 进程[0] - subprocess 模块
  11. IE9兼容性视图与IE9标准视图
  12. Python 库学习 —— Excel存储(xlwt、xlrd)
  13. android 分区 PT,Android:pt 、sp、dp之间的换算
  14. matlab求两向量夹角_MATLAB图形的标注与修饰
  15. 云上故事 | “电”亮数字生活,阿里云混合云助力南方电网智能调度
  16. java版+支付宝支付和微信支付(一)(含源码)
  17. python1000以内水仙花数_python 计算1000以内的水仙花数
  18. 计算机打开页面恢复默认大小,win10怎样恢复Windows窗口默认的大小?
  19. GitHub 上这个「计算机科学」自学指南火了!
  20. 程序员圈 内的 鄙视链

热门文章

  1. java内部错误2503_win10安装和卸载Java jdk错误出现2503,2502错误
  2. Excel表格如何设置公文样式页码
  3. 跑revit计算机硬件要求,BIM软件——Revit对电脑配置的要求分析
  4. 『UC Berkeley CS267』Lecture3: More MatMul and the Roofline Performance Model
  5. asp.net实现在线人数及访问量总计
  6. CF 242E XOR on Segment 【线段树】
  7. 九型人格 (性格型态学)
  8. 31岁才转行程序员,目前34了,我的经历和一些感受...
  9. Vscode中,无法打开源文件 “Adafruit_GFX.h“
  10. 基于前端页面开发课程教学网站的设计与实现