前视声呐目标识别定位(三)-部署至机器人

前视声呐目标识别定位(一)-基础知识

前视声呐目标识别定位(二)-目标识别定位模块  

前视声呐目标识别定位(三)-部署至机器人

前视声呐目标识别定位(四)-代码解析之启动识别模块

前视声呐目标识别定位(五)-代码解析之修改声呐参数

前视声呐目标识别定位(六)-代码解析之目标截图并传输

前视声呐目标识别定位(七)-代码解析之录制数据包

前视声呐目标识别定位(八)-代码解析之各模块通信

前视声呐目标识别定位(九)-声呐驱动

        开发了多波束前视声呐目标识别定位模块后,自然期待能将声呐部署至AUV,实现AUV对目标的抵近观测。原本规划着定位模块不仅能将目标定位信息提供给AUV进行辅助导航,还能借助水声通信模块在水面实现在水面开关声呐及调节声呐参数,开关目标识别模块,传输目标图像向观测者展示,录制目标数据包以进行模型训练等。在先前的文章已经介绍了,前视声呐目标定位只能提供目标距离及水平开角信息,而缺少垂直开角的信息,所以使用前视声呐定位是无法得到目标物具体坐标信息的,只能起辅助作用。

      先前的文章已经介绍了声呐目标识别及定位模块,在部署过程中有许多问题,比较关键的有三个。首先是目标识别模块需要GPU算力板,算力板尺寸必须满足AUV布局的需求限制,同时要考虑散热的问题;再者声呐的驱动及目标识别模块都是在ubuntu下使用ROS/ROS2进行开发,而AUV的导航模块是性能普通的工控机,还是特制的系统,使用水声通信模块必须借助工控机做中继,只能考虑其它通信方式;最后水声通信的带宽非常低,是比较难满足图片传输的条件的。

      虽然接到任务时时间紧需求多任务重,鼓捣了一段时间还是开发出了一个小小的demo。不过开发完后整个项目都没有了,所以也没有部署至AUV进行下水测试,最终只能算是自娱自乐了。最近整理资料时在角落里发现了这些东西,虽然我也觉得整个框架粗糙且暴力,不尽如人意,但想着水下圈子这么小,资料这么少,把这个demo开源也许能为一些水下爱好者的研究开发提供一条不同的思路吧,同时也算是把这些工作做一个归档,日后可以查阅。

      项目github地址:GitHub - cabinx/yolov5_humble_fls_tcp: yolov5_humble_fls with tcp/ip transmission

      接下来处理上文提及的三个问题。首先综合考虑尺寸和算力后选择了NVIDIA XAVIER开发板,在密闭的舱段内散热的问题倒是没有啥好办法。再者XAVIER板和AUV的工控机之间通过TCP/IP通信,约定好协议就好。最后关于目标图片,只截取目标部分的图片,然后压缩编码传输,以满足水声通信的限制。

      整个软件的框架如下图。

1234

      在XAVIER板上center_server起一个处理中心的作用。其接收AUV工控机下发的指令信息,并转发给相应各个模块。同时接收各个模块的数据,封装后发送给AUV工控机。yolov5_humble_fls是目标识别模块,和之前的识别模块相比主要添加了TCP通信模块和截图封装传输模块。sonar_node是声呐驱动模块,当时选择的是Oculus m750d这款声呐。control center是指令转换模块,将auv下发的指令解包转换为shell指令以执行相应任务,非常粗暴,并不是非常推荐,只是当时简单地想着怎么简单怎么来。

      在工控机上auv_server也起信息中转的作用,接收水面指令转发给XAVIER板,同时接收XAVIER板数据转发给水面,但是需要根据协议解包目标数据以辅助导航。还有一个client test模块,是我用来模拟水面发送指令的测试模块。

      水声通信模块我没接触在此就不讨论了,但只要知道协议无非是在auv server上再添加相应的编解码。

      框架原先我是在ROS Neotic下写的,测试时Oculus 750d声呐通过网线和XAVIER板连接,然后用我的台式机模拟AUV的工控机,直接用一根网线连接,测试基本实现了各个功能。现在我用ROS2 humble大致重新整理了一遍,测试就只在我的台式机测试了,台式机既模拟XAVIER板,又模拟AUV工控机。此外我手头上已经没有声呐进行测试了,所以声呐驱动模块我就没有在ROS2重新整理,以后我会将之前写的ROS版本的上传至github,该版本是测试过是能正常接收发布声呐数据的。

      目前只能使用离线数据包进行测试,将声呐数据包下载至bag文件夹下,启动auv_server.py,center_sever.py,control_center.py。然后通过client_test.py脚本进行测试。后续我会通过几个例子介绍整个框架的信息流。

python3 client_test.py 1 1      #启动识别模块
python3 client_test.py 5 1      #播放离线数据包
python3 client_test.py 7 1      #对识别到的目标截图传输
python3 client_test.py 8 1      #开始录制数据包
python3 client_test.py 9 1      #结束录制数据包
python3 client_test.py 6 1      #结束播放离线数据包
python3 client_test.py 2 1      #结束识别模块python3 client_test.py 3 1      #启动声呐模块
python3 client_test.py 4 1      #关闭声呐模块python3 client_test.py 11 1/2   #切换声呐高低频,1为低频,2为高频
python3 client_test.py 12 100   #设定声呐gamma correction值为100
python3 client_test.py 13 20    #设定声呐量程为20m
python3 client_test.py 14 50    #设定增益为50
python3 client_test.py 15 1500  #设定声速为1500
python3 client_test.py 16 25    #设定盐度为25

        当时还想过实际应用中把这些指令做个图形界面的话将会方便不少,现在暂时不需要了。

        当初ROS1版本时测试时,台式机及XAVIER板的系统均为Ubuntu20.04,ROS版本为Neotic;ROS2版本测试时,台式机版本为Ubuntu22.04,ROS版本为Humble。

       ROS1 Neotic版本测试视频:

yolov5-ros1-test

         整理后ROS2 Humble版本测试视频:

yolov5-sonar-test

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/297597.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

二、GitLab相关操作

GitLab相关操作 一、组、用户、项目管理1.创建组2.创建项目3.创建用户并分配组3.1 创建用户3.2 设置密码3.3 给用户分配组 二、拉取/推送代码1.配置ssh(第一次需要)1.1 创建一个空文件夹1.2 配置本地仓账号和邮箱1.3 生成ssh公钥密钥1.4 gitlab配置公钥 2.拉取代码3.推送代码3.…

JAVA JVM内存模型和GC分配和回收

Java 的JVM简介 JVM是(Java Virtual Machine)Java虚拟机的缩写。 JVM是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。 ​ 在Java程序运行时,所有的.class类需要加载到JVM中才能执行代码逻辑。不…

【面试八股总结】超文本传输协议HTTP(二)

参考资料 :小林Coding、阿秀、代码随想录 一、HTTP缓存技术 将资源(如网页、图像、脚本等)的副本存储在客户端或中间代理服务器上,以便将来的请求可以直接从缓存中获取,而不必重新从服务器下载资源。这有助于减少网…

ArcGIS 10.8中文版详细安装教程(附安装包)

ArcGIS 10.8中文版详细安装教程(附安装包) 关键词:ArcGIS 10.8中文版安装 1.概述 ArcGIS Desktop 10.8中文版是由ESRI公司开发的一款专业的地理信息系统,一套完整的桌面GIS软件套件,它包含ArcMap、ArcCatalog、ArcG…

增加网站搜索引擎排名的6个准则

怎样提高网站排名首页 在竞争激烈的网络世界中,网站的排名对于吸引流量和提升曝光至关重要。登上搜索引擎结果页面的首页,意味着更多的曝光和点击率。以下是一些方法,可以帮助您提高网站在搜索引擎中的排名,让其跻身首页&#xf…

多功能知识付费源码下载-实现流量互导多渠道变现(带详细安装教程)

资源变现类产品的许多优势,并剔除了那些无关紧要的元素,使得本产品在运营和变现能力方面实现了质的飞跃。多领域素材资源知识变现营销裂变独立版本。 支持:视频、音频、图文、文档、会员、社群、用户发布、创作分成、任务裂变、流量主、在线…

一、Docker部署GitLab(详细步骤)

Docker部署GitLab(详细步骤) 一、拉取镜像二、启动容器三、修改配置四、修改密码五、浏览器访问 一、拉取镜像 docker安装教程:https://qingsi.blog.csdn.net/article/details/131270071 docker pull gitlab/gitlab-ce:latest二、启动容器 …

深入理解C/C++的内存管理

在C和C中,高效的内存管理是编写性能优化和资源高效利用程序的关键。本文将深入探讨C/C内存管理的各个方面,包括内存的分布、C语言和C中的动态内存管理方式,以及new和delete操作符的使用 C/C内存分布 C和C程序的内存可以分为以下几个区域&…

windows上配置Redis主从加哨兵模式实现缓存高可用

一、哨兵模式 哨兵(sentinel)是Redis的高可用性(High Availability)的解决方案:由一个或多个sentinel实例组成sentinel集群可以监视一个或多个主服务器和多个从服务器。当主服务器进入下线状态时,sentinel可以将该主服务器下的某…

深入浅出 -- 系统架构之单体架构

单体架构(Monolithic Architecture) 单体架构的定义 单体架构(Monolithic Architecture)是一种传统的软件架构模式,将整个应用程序作为一个单一的、统一的单元进行开发、部署和扩展。在单体架构中,所有的功…

精品PPT-2023年无人驾驶汽车车联网网络安全方案

以下是部分PPT内容,请您参阅。如需下载完整PPTX文件,请前往星球获取: 无人驾驶安全架构是一个复杂的系统,它涉及到多个关键组件和层次,以确保无人驾驶车辆在各种情况下都能安全、可靠地运行。以下是一些主要的无人驾驶…

探索未来智慧酒店网项目接口架构

在数字化时代,智慧酒店已成为酒店业发展的重要趋势之一。智慧酒店网项目接口架构作为支撑智慧酒店运营的核心技术之一,其设计和优化对于提升用户体验、提高管理效率具有重要意义。本文将深入探讨智慧酒店网项目接口架构的设计理念和关键要素。 ### 智慧…

【蓝桥杯选拔赛真题55】C++最长路线 第十四届蓝桥杯青少年创意编程大赛 算法思维 C++编程选拔赛真题解

目录 C最长路线 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 七、推荐资料 C最长路线 第十四届蓝桥杯青少年创意编程大赛C选拔赛真题 一、题目要求 1、编程实现 有一个N*M的矩阵,且矩阵…

金融中的数学知识

随机偏微分方程相比普通偏微分方程具有额外的随机项,反映了其描述的现象具有随机性质

CVPR24_ArGue: Attribute-Guided Prompt Tuning for Vision-Language Models

Abstract 尽管软提示微调在调整视觉语言模型以适应下游任务方面表现出色,但在处理分布偏移方面存在局限性,通过属性引导提示微调(Attribute-Guided,ArGue)来解决这个问题 Contributions 与直接在类名之前添加软提示…

物联网实战--入门篇之(六)嵌入式-WIFI驱动(ESP8266)

目录 一、WIFI简介 二、基础网络知识 三、思路讲解 四、代码分析 4.1 状态机制 4.2 客户端连接 4.3 应用数据接收处理 4.4 数据发送 4.5 主函数调用 4.6 网络连接ID分配 五、总结 一、WIFI简介 WIFI在我们生活中太常见了,手机电脑都可以用WiFi连接路由器进行上…

【C++】C++中的list

一、介绍 官方给的 list的文档介绍 简单来说就是: list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中…

DashOJ-8.奇偶统计

题目链接: 题目详情 - 奇偶统计 - DashOJ 思路: (while循环加if分支语句) 巧用死循环 while(1) 然后在里面第一句就判断输入的数字是否等于0 if(x0) ,如果 等于0就直接break跳出循环 或者用 while(cin>>x) 代…

后端SpringBoot+Mybatis 查询订单数据表奇怪报错加一

排错过程: 看报错意思是SQL语句存在错误,然后使用图形化工具运行这个SQL语句 其实这里稍微细心想一下就能发现问题,但是当时没深入想,就觉得order表前加了数据库名字影响不大,所以感觉SQL语句是没问题的,然…

STM32八种I/O口模式

STM32八种I/O口模式 文章目录 STM32八种I/O口模式前言一、stm32八种I/O类型二、区别1.模拟输入2.浮空输入3.上拉输入4.下拉输入5.推挽输出6.开漏输出7.复用推挽输出8.复用推挽输出 总结 前言 作为两年嵌入式软件攻城狮,还没仔细去理解过STM32的GPIO的八种使用模式&…