当前,水下领域比较小众,开源的资料比较少。Bluerov作为成熟的产品,结合其开源的优势,经历了多年的技术迭代,在市场上受到极大欢迎。刚接触水下领域时,希望能找到一个比较方便的实验平台,开源的Bluerov基本上算是唯一的选择。   Bluerov本身的软件架构,Pixhawk(ardusub)—— Raspberry Pi 3B(不能升级)——QGroundControl,非常臃肿冗余。由于我并不熟悉嵌入式开发,所以对Bluerov进行开发感到非常棘手。当然也尝试了在ardusub的框架基础上引入ROS的框架,借助MAVROS作为ROS信息与MAVLINK之间的桥梁,但这样做给我的感觉是整个项目将变得更加臃肿冗余。同时,外接传感器需要额外的开发版,也意味着额外的水密舱;MAVLINK与ROS间协议有时MAVROS也无法协调等等诸多问题。再者,在开发过程中,遇到需要任意改变推进器布局,或者需要采用不同种类的推进器的情况时,我花了较长时间也没理出头绪。   ROS在机器人领域得到非常广泛的应用,开源资源非常丰富,使得开发非常方便简洁。更进一步,ROS在机器人领域与人工智能领域大放异彩,这些都是Pixhawk无法比拟的。未来有DIY自己的水下平台以满足自身需求的想法与计划。鉴于这几年积累了些许的ROS开发经验,我希望能基于ROS搭建一个开源的软件框架,适用于ROV/AUV等水下平台。   为了验证采用ROS搭建水下平台软件框架的可行性,开发了一个简易的demo,粗略地实现了手柄控制ROV运动以及ROV跟踪水下目标。由于只是验证性质,开发过程中我直接忽略了诸多问题,如定向,定深,处理视频传输的时延等等。从某种程度上来说,实验的基本实现目标。     开发过程充分体现了ROS开源的强大之处,rov的基础控制采用的是俄亥俄州大学水下机器人队伍的开源项目(https://uwrt.engineering.osu.edu/);相机的驱动采用的是usb_cam(http://wiki.ros.org/usb_cam)开发包;目标识别采用的是darknet_ros(https://github.com/leggedrobotics/darknet_ros)开发包,即yolov3在ros下的开发工具等等。开发过程只需要将许多成熟的工程项目结合在一起,非常高效。实验时借助ROS的工具包能在线调参,效率远高于Pixhawk这种调参需要烧录的嵌入式平台。   Demo代码我已上传至github:https://github.com/cabinx/cabin_auv_ws   软件框架简图如下:   视觉模块   基础运动模块   后续我会抽空撰写一些文章解析各个比较关键的模块。   目前这个demo的框架非常简陋,缺少定向,定深等等水下常见的模块。我个人希望这个框架能成为有点用的开源项目。也就是说,如果能有感兴趣的开发者们撰写一两个模块完善这个框架,我会非常高兴。   下一步我更倾向于选择ROS2作为开发平台,计划在此demo的基础上以ROS2构建将来水下平台的软件架构。      
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议。
原文链接:https://blog.csdn.net/xiekaikaibing/article/details/109001139