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

     

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

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

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

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

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

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

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

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

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

以启动识别模块为例,其余关闭识别模块,启动和关闭声呐模块,启动和关闭离线数据播放同理。

1、client_test.py

python3 clien_test.py 1 1

if cmd == str(1):print("sent the yolo start cmd...")arrBuff = bytearray(b'\xee\xaa\xee\xaa\xee\xff\xee\xff')

在协议文件中,启动的协议为:

故模块将该数据包发送至auv_server。

2、auv_server.py

def test_cmd(self):while True:self.test_conn, self.test_addr = self.test_server.accept()test_cmd_msg = self.test_conn.recv(1024)if len(test_cmd_msg)>0:self.conn.send(test_cmd_msg)

直接将指令转发至center_server

3、center_sever.py

# send the control_center cmd from auv to the control_center module on nx
def recv_control_center_msg(self):while True:          cmd_msg = self.nx_client.recv(1024)if len(cmd_msg) > 3:# send the control_center cmd to the control_center moduleif cmd_msg[-4:] == b'\xee\xff\xee\xff':self.control_center_socket.send(cmd_msg)# send the sonar parameters cmd to the sonar moduleelif cmd_msg[-4:] == b'\xee\xaa\xee\xff':self.sonar_param_socket.send(cmd_msg)else:print("cmd from auv error, no such cmd...")

根据‘\ee\ff\ee\ff‘判断为不带参数的指令,转control_center.py

4、control_center.py

def rcev_cmd(self):
...# start yolov5_ros ros2 launchif recvmsg[0:4] == self.start_yolo_msg[0:4]:# yolo is running, continueif self.yolo_running:print("yolo is running...")# callback the cmdself.send_cmd(self.yolo_is_running)# no yolo is running, start yoloelse:print("start yolo...")self.yolo_subprocess = subprocess.Popen(self.start_yolo_cmd, shell=True, executable="/bin/bash")self.yolo_running = Trueself.send_cmd(self.start_yolo_msg)
....

根据”\ee\aa\ee\aa”判断为启动识别程序。

如果识别程序没有运行,执行

self.start_yolo_cmd = 'cd ~/yolov5_humble_fls_tcp && source install/setup.bash && ros2 launch yolov5_humble_fls start.launch.py'

反馈信息至auv_server.py,self.cmd_callback_header + self.start_yolo_msg

即/ee/ff/ee/ff/ee/aa/ee/aa/ee/aa/ee/ff

5、auv_server.py

# cmd callback state msg
if pkg_head == b'\xee\xff\xee\xff':print(self.cmd_callback_state[recv_msg[4:8]])

根据\ee\ff\ee\ff判断为反馈信息,根据\ee\aa\ee\aa判断为识别程序成功启动信息

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

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

相关文章

C语言之分支语句和循环语句

前言 一、什么是语句? 二、分支语句(选择结构) 2.1 if语句 2.2 switch语句 三、循环语句 3.1 while循环 3.2 break与continue语句 3.3 getchar()与putchar() 3.3.1 缓冲区 3.4 for循环 3.4.1 一些for循环的变种 3.5 do...while循…

AcWing 785. 快速排序——算法基础课题解

AcWing 785. 快速排序 文章目录 题目描述CGo模板 题目描述 给定你一个长度为 n 的整数数列。 请你使用快速排序对这个数列按照从小到大进行排序。 并将排好序的数列按顺序输出。 输入格式 输入共两行,第一行包含整数 n。 第二行包含 n 个整数(所有…

C语言中的结构体:高级特性与扩展应用

前言 结构体在C语言中的应用不仅限于基本的定义和使用,还包含一些高级特性和扩展应用,这些特性和应用使得结构体在编程中发挥着更加重要的作用。 一、位字段(Bit-fields) 在结构体中,我们可以使用位字段来定义成员…

AJAX —— 学习(二)

目录 一、利用 JSON 字符串 返回数据 (一)基础代码 (二)原理及实现 二、nodmon 工具 自动重启服务 (一)用途 (二)下载 (三)使用 三、IE 缓存问题 &a…

QA测试开发工程师面试题满分问答8: mysql数据库的索引定义、用途和使用场景

MySQL数据库索引是一种数据结构,用于提高数据库的查询效率。索引是基于表中的一个或多个列构建的,它们允许数据库系统快速定位和访问表中的特定数据,而无需扫描整个表。 索引的定义 在MySQL中,可以使用CREATE INDEX语句定义索引…

pulsar集群部署流程及方案

# 部署方案: 集群模式部署,broker和bookie混合部署,zk同时部署在三台机器上面(资源充足zk最好单独部署,注意pulsar和zk版本兼容性) # 1.集群资源使用(实际测试情况CPU使用率比内存高,建议CPU设置大于内存,不同业务场景有差异) 三台主机centos7 16核16GB,每台挂载1TB机械硬盘(不…

Linux:进程终止和等待

一、进程终止 main函数的返回值也叫做进程的退出码,一般0表示成功,非零表示失败。我们也可以用不同的数字来表示不同失败的原因。 echo $?//打印最近一次进程执行的退出码 而作为程序猿,我们更需要知道的是错误码所代表的错误信息&#x…

MongoDB聚合运算符:$lte

文章目录 语法举例 $lte聚合运算符用于比较两个值&#xff0c;如果第一个小于等于第二个&#xff0c;返回true&#xff1b;如果第一个值大于第二个值&#xff0c;返回false。 语法 { $lte: [ <expression1>, <expression2> ] }$lte可以用来比较任何类型的值&…

嵌入式算法开发系列之卡尔曼滤波算法

卡尔曼滤波算法 文章目录 卡尔曼滤波算法前言一、卡尔曼滤波算法原理二、算法应用三、C语言实现总结 前言 在嵌入式系统中&#xff0c;传感器数据通常受到噪声、误差和不确定性的影响&#xff0c;因此需要一种有效的方法来估计系统的状态。卡尔曼滤波算法是一种基于概率理论的…

网络安全系统之——PKI体系

一、公钥基础设施 公钥基础设施 PKI&#xff08;Public Key Infrastructure&#xff09;是通过使用公钥技术和数据证书来提供信息系统安全服务&#xff0c;并负责验证数字证书持有者身份的一种体系。PKI 基础设施采用证书管理公钥&#xff0c;通过第三方可信任认证中心&#xf…

【信号与系统 - 2】傅里叶变换与反变换

1 傅里叶变换与频谱密度函数 非周期信号可以看成是 T → ∞ T\to{\infty} T→∞ 的周期信号 由于 w ↓ 2 π T ↑ w\downarrow\frac{2\pi}{T\uparrow} w↓T↑2π​&#xff0c; T T T 无限大&#xff0c;则基波频率 w w w 无限小&#xff0c;可以视为 d w dw dw 在频谱图…

RL — 强化学习算法概述

目录 一、说明二、无模型算法三、基于模型的 RL四、价值学习五、策略梯度5.1 强度:5.2 局限性5.3 蒙特卡洛政策梯度六、TRPO公司七、行动者兼评论家八、基于模型的 RL一、说明 我们在本系列中研究了许多强化学习 (RL) 算法,例如,用于 MoJoCo 任务的策略梯度方法、用于 At…

【亲测有效】Ubuntu系统下调整/home分区大小(无损扩容)

一、引言 当时给系统分区的时候&#xff0c;home和根分区都是100GB左右&#xff0c;突然发现home 分区不够用了&#xff0c;于是决定将根分区的部分空间挪移到home分区。 常用调整分区大小的工具有&#xff1a;GParted工具&#xff0c;DiskGenius工具。如果GParted工具无法调…

Linux文件权限管理详解——以CentOS为例

Linux文件权限管理详解——以CentOS为例 一、引言 在Linux系统中,文件权限管理是一项非常重要的任务。正确的文件权限设置能够保护系统的安全性,防止未授权访问和数据泄露。本文将详细介绍Linux文件权限管理的基本概念、常用命令以及如何在CentOS系统中进行实际操作。 二、…

电工技术学习笔记——直流电路及其分析方法

一、直流电路 电路的组成 1. 电压和电流的参考方向 电压&#xff08;Voltage&#xff09;&#xff1a;电压是电场力对电荷产生的作用&#xff0c;表示为电荷单位正电荷所具有的能量。在电路中&#xff0c;电压通常被定义为两点之间的电势差&#xff0c;具有方向性&#xff0c;…

HomePlug AV

目录 HomePlug AV的基本概念基本术语网络概念网络实例 HomePlug AV物理层&#xff08;PHY&#xff09;HomePlug AV OFDM收发器架构PHY的调制模式FC调制和ROBO调制物理层的特点OFDM频域/时域转换开窗/槽式OFDM信号和噪声PHY发送控制——信道自适应PHY帧格式&#xff08;Symbol&a…

中间件复习之-RPC框架

什么是RPC框架&#xff1f; RPC(Remote Procedure Call):远程过程调用。当多个应用部署在多个服务器上时&#xff0c;由于他们不在一个内存空间上&#xff0c;因此需要网络来进行通信&#xff0c;而RPC允许它像调用本地方法一样调用远程服务。 RPC原理 服务消费方通过RPC客户…

Unity类银河恶魔城学习记录12-3 p125 Limit Inventory Slots源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释&#xff0c;可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili Inventory.cs using Newtonsoft.Json.Linq; using System.Collections; us…

如何用python开发“跳一跳”游戏【附源码】

话不多说,直接上代码: import pygame import random # 游戏参数 WIDTH, HEIGHT = 600, 800 PLAYER_SIZE = 50 OBSTACLE_WIDTH = 100 OBSTACLE_HEIGHT = 20 OBSTACLE_GAP = 200 GRAVITY = 0.5 # 颜色 WHITE = (255, 255, 255) BLACK = (0, 0, 0) BLUE = (0, 0, 255) # 初始…

【面试八股总结】进程(一)

参考资料 &#xff1a;小林Coding、阿秀、代码随想录 一、什么是进程&#xff1f; 1. 基本概念 进程是具有独立功能的程序在一个数据集合上运行的过程&#xff0c;是系统进行资源分配和调度的一个独立单位。 2. 进程控制块 系统通过进程控制块PCB描述进程的进本情况…