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

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

相关文章

Spring三级缓存解决循环依赖的解析过程

《Spring三级缓存解决循环依赖的解析过程》:本文主要介绍Spring三级缓存解决循环依赖的解析过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、循环依赖场景二、三级缓存定义三、解决流程(以ServiceA和ServiceB为例)四、关键机制详解五、设计约

Redis实现分布式锁全解析之从原理到实践过程

《Redis实现分布式锁全解析之从原理到实践过程》:本文主要介绍Redis实现分布式锁全解析之从原理到实践过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、背景介绍二、解决方案(一)使用 SETNX 命令(二)设置锁的过期时间(三)解决锁的误删问题(四)Re

Python如何调用指定路径的模块

《Python如何调用指定路径的模块》要在Python中调用指定路径的模块,可以使用sys.path.append,importlib.util.spec_from_file_location和exe... 目录一、sys.path.append() 方法1. 方法简介2. 使用示例3. 注意事项二、imp

SpringBoot中四种AOP实战应用场景及代码实现

《SpringBoot中四种AOP实战应用场景及代码实现》面向切面编程(AOP)是Spring框架的核心功能之一,它通过预编译和运行期动态代理实现程序功能的统一维护,在SpringBoot应用中,AO... 目录引言场景一:日志记录与性能监控业务需求实现方案使用示例扩展:MDC实现请求跟踪场景二:权限控制与

Python中模块graphviz使用入门

《Python中模块graphviz使用入门》graphviz是一个用于创建和操作图形的Python库,本文主要介绍了Python中模块graphviz使用入门,具有一定的参考价值,感兴趣的可以了解一... 目录1.安装2. 基本用法2.1 输出图像格式2.2 图像style设置2.3 属性2.4 子图和聚

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

Golang HashMap实现原理解析

《GolangHashMap实现原理解析》HashMap是一种基于哈希表实现的键值对存储结构,它通过哈希函数将键映射到数组的索引位置,支持高效的插入、查找和删除操作,:本文主要介绍GolangH... 目录HashMap是一种基于哈希表实现的键值对存储结构,它通过哈希函数将键映射到数组的索引位置,支持

Python的time模块一些常用功能(各种与时间相关的函数)

《Python的time模块一些常用功能(各种与时间相关的函数)》Python的time模块提供了各种与时间相关的函数,包括获取当前时间、处理时间间隔、执行时间测量等,:本文主要介绍Python的... 目录1. 获取当前时间2. 时间格式化3. 延时执行4. 时间戳运算5. 计算代码执行时间6. 转换为指

利用Python调试串口的示例代码

《利用Python调试串口的示例代码》在嵌入式开发、物联网设备调试过程中,串口通信是最基础的调试手段本文将带你用Python+ttkbootstrap打造一款高颜值、多功能的串口调试助手,需要的可以了... 目录概述:为什么需要专业的串口调试工具项目架构设计1.1 技术栈选型1.2 关键类说明1.3 线程模

Python Transformers库(NLP处理库)案例代码讲解

《PythonTransformers库(NLP处理库)案例代码讲解》本文介绍transformers库的全面讲解,包含基础知识、高级用法、案例代码及学习路径,内容经过组织,适合不同阶段的学习者,对... 目录一、基础知识1. Transformers 库简介2. 安装与环境配置3. 快速上手示例二、核心模