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

2024-04-04 08:44

本文主要是介绍前视声呐目标识别定位(八)-代码解析之各模块通信,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

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

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

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

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

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

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

结合结构图:

一、auv_server.py

1、作为center_cerver的服务器,通过端口8088与其通信

self.auv_ip = '192.168.1.111'
self.auv_port = 8088
...
# tcp server setting
self.auv_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.auv_server.bind((self.auv_ip, self.auv_port))
self.auv_server.listen(5)
self.conn, self.addr = self.auv_server.accept()

2、作为client_test的服务器,通过端口8089与其通信

self.cmd_test_port = 8089
...
self.test_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.test_server.bind((self.auv_ip, self.cmd_test_port))
self.test_server.listen(5)

二、center_server.py

1、与auv_server通信

self.auv_ip = '192.168.1.111'            # the server ip
self.auv_port = 8088
...
# connect the auv
self.nx_client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.nx_client.connect((self.auv_ip,self.auv_port))

2、作为识别模块yolov5_humble_fls的服务器,通过端口8080与其通信

self.nx_ip = '192.168.1.110'             # the board ip
self.data_port = 8080                     # yolo pos info & object 
...
# yolo server for the yolo module on the nx
self.yolo_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.yolo_server.bind((self.nx_ip, self.data_port))                          # bind the data port
self.yolo_server.listen(5)   

3、作为control_center的服务器,通过端口8081与其通信

self.control_center_port = 8081           # cmd and cmd callback of each module transfer port
# control_center server for the control_center module on the nx
self.control_center_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.control_center_server.bind((self.nx_ip, self.control_center_port))                          # bind the control_center port
self.control_center_server.listen(5)

4、作为声呐驱动模块sonar_node的服务器,通过端口8082与其通信

self.sonar_param_port = 8082              # sonar parameters setting cmd tansfer port
...
# sonar parameters parameters setting server for the sonar module on the nx
self.sonar_param_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.sonar_param_server.bind((self.nx_ip, self.sonar_param_port))                          # bind the sonar port
self.sonar_param_server.listen(5)

三、yolov5_humble_fls模块(yolov5_sonar.py)

1、与center_server通信

# tcp parameters
self.declare_parameter('server_ip', '192.168.1.110')
self.server_host = self.get_parameter('server_ip').get_parameter_value().string_value
self.declare_parameter('server_port', 8080)
self.server_port = self.get_parameter('server_port').get_parameter_value().integer_value
...
# establish tcp link
try:self.yolo_client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)self.yolo_client.connect((self.server_host, self.server_port))
except Exception as e:tcp_error = "connection error... " + str(self.server_host) + " : " + str(self.server_port)print("\033[31;1m %s %s\033[0m" %(tcp_error,e))

IP和端口均可在yolov5_humble_fls.yaml中设置。

四、control_center.py

1、与center_server通信

self.nx_ip = '192.168.1.110'
self.cmd_port = 8081self.cmd_client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)                           # create TCP/IP socket
self.cmd_client.connect((self.nx_ip, self.cmd_port))

五、声呐模块sonar node同理

代码整理后的ROS2的版本我进行测试时只在一台台式机上进行,所以各个IP都是相同的。

这篇关于前视声呐目标识别定位(八)-代码解析之各模块通信的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/875326

相关文章

Java 正则表达式URL 匹配与源码全解析

《Java正则表达式URL匹配与源码全解析》在Web应用开发中,我们经常需要对URL进行格式验证,今天我们结合Java的Pattern和Matcher类,深入理解正则表达式在实际应用中... 目录1.正则表达式分解:2. 添加域名匹配 (2)3. 添加路径和查询参数匹配 (3) 4. 最终优化版本5.设计思

使用Java将DOCX文档解析为Markdown文档的代码实现

《使用Java将DOCX文档解析为Markdown文档的代码实现》在现代文档处理中,Markdown(MD)因其简洁的语法和良好的可读性,逐渐成为开发者、技术写作者和内容创作者的首选格式,然而,许多文... 目录引言1. 工具和库介绍2. 安装依赖库3. 使用Apache POI解析DOCX文档4. 将解析

Java字符串处理全解析(String、StringBuilder与StringBuffer)

《Java字符串处理全解析(String、StringBuilder与StringBuffer)》:本文主要介绍Java字符串处理全解析(String、StringBuilder与StringBu... 目录Java字符串处理全解析:String、StringBuilder与StringBuffer一、St

C++使用printf语句实现进制转换的示例代码

《C++使用printf语句实现进制转换的示例代码》在C语言中,printf函数可以直接实现部分进制转换功能,通过格式说明符(formatspecifier)快速输出不同进制的数值,下面给大家分享C+... 目录一、printf 原生支持的进制转换1. 十进制、八进制、十六进制转换2. 显示进制前缀3. 指

Spring Boot循环依赖原理、解决方案与最佳实践(全解析)

《SpringBoot循环依赖原理、解决方案与最佳实践(全解析)》循环依赖指两个或多个Bean相互直接或间接引用,形成闭环依赖关系,:本文主要介绍SpringBoot循环依赖原理、解决方案与最... 目录一、循环依赖的本质与危害1.1 什么是循环依赖?1.2 核心危害二、Spring的三级缓存机制2.1 三

C#中async await异步关键字用法和异步的底层原理全解析

《C#中asyncawait异步关键字用法和异步的底层原理全解析》:本文主要介绍C#中asyncawait异步关键字用法和异步的底层原理全解析,本文给大家介绍的非常详细,对大家的学习或工作具有一... 目录C#异步编程一、异步编程基础二、异步方法的工作原理三、代码示例四、编译后的底层实现五、总结C#异步编程

python logging模块详解及其日志定时清理方式

《pythonlogging模块详解及其日志定时清理方式》:本文主要介绍pythonlogging模块详解及其日志定时清理方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录python logging模块及日志定时清理1.创建logger对象2.logging.basicCo

使用Python实现全能手机虚拟键盘的示例代码

《使用Python实现全能手机虚拟键盘的示例代码》在数字化办公时代,你是否遇到过这样的场景:会议室投影电脑突然键盘失灵、躺在沙发上想远程控制书房电脑、或者需要给长辈远程协助操作?今天我要分享的Pyth... 目录一、项目概述:不止于键盘的远程控制方案1.1 创新价值1.2 技术栈全景二、需求实现步骤一、需求

Java中Date、LocalDate、LocalDateTime、LocalTime、时间戳之间的相互转换代码

《Java中Date、LocalDate、LocalDateTime、LocalTime、时间戳之间的相互转换代码》:本文主要介绍Java中日期时间转换的多种方法,包括将Date转换为LocalD... 目录一、Date转LocalDateTime二、Date转LocalDate三、LocalDateTim

Qt spdlog日志模块的使用详解

《Qtspdlog日志模块的使用详解》在Qt应用程序开发中,良好的日志系统至关重要,本文将介绍如何使用spdlog1.5.0创建满足以下要求的日志系统,感兴趣的朋友一起看看吧... 目录版本摘要例子logmanager.cpp文件main.cpp文件版本spdlog版本:1.5.0采用1.5.0版本主要