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

     

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

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

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

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

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 module
            if cmd_msg[-4:] == b'\xee\xff\xee\xff':
                self.control_center_socket.send(cmd_msg)
            # send the sonar parameters cmd to the sonar module
            elif 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 launch
    if recvmsg[0:4] == self.start_yolo_msg[0:4]:
        # yolo is running, continue
        if self.yolo_running:
            print("yolo is running...")
            # callback the cmd
            self.send_cmd(self.yolo_is_running)
        # no yolo is running, start yolo
        else:
            print("start yolo...")
            self.yolo_subprocess = subprocess.Popen(self.start_yolo_cmd, shell=True, executable="/bin/bash")
            self.yolo_running = True
            self.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.mfbz.cn/a/514439.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【管理咨询宝藏48】AA银行信息科技提升分析报告

本报告首发于公号“管理咨询宝藏”,如需阅读完整版报告内容,请查阅公号“管理咨询宝藏”。 【管理咨询宝藏48】AA银行信息科技提升分析报告 【格式】PPT版本,可编辑 【关键词】战略规划、商业分析、管理咨询 【强烈推荐】这是一套市面上非常…

Spark-Scala语言实战(11)

在之前的文章中,我们学习了如何在spark中使用RDD中的cartesian,subtract最终两种方法。想了解的朋友可以查看这篇文章。同时,希望我的文章能帮助到你,如果觉得我的文章写的不错,请留下你宝贵的点赞,谢谢。 Spark-Scal…

Prisma ORM 5.12 发布,支持 Cloudflare D1 数据库

昨晚,Prisma ORM 发布了 5.12.0 稳定版本,在此版本中 Prisma ORM 新增了对 Cloudflare D1 的预览支持,现在我们可以选择将本地的 SQLite 数据库逐步迁移到 Cloudflare 上面,从而实现无需额外成本即可构建处理大量用户的应用程序。…

UE4_自定义反射和折射和法线图

UE4 自定义反射和折射和法线图 2020-05-22 09:36 将ReflectionVector和反射图像进行ViewAlignedReflection,输出的textrue和相机位置CameraPosition的onePlus进行Dot点乘之后乘以一个float系数反射度,输出给固有色,就有反射效果了。球型反射。 折射&…

进制转换器(C语言)

目录 1问题: 输入任意进制的数值,可以转换成任意进制的数值(2到36进制); 2思路: 3代码:(需要运用到数据结构栈的知识) 4运行结果: 1问题: 输入任意进制的数…

跨域问题解决方案之CORS

跨域问题解决方案之CORS 文章目录 跨域问题解决方案之CORS概述浏览器的同源策略同源的判定规则目的同源策略的限制范围 浏览器的同源策略为什么会引发跨域问题?CORS规则CORS解决方案CORS方案将请求分为两类举例简单请求预检请求总结学以致用 概述 浏览器安全的基石…

文件操作详解(二)

目录 一.文件的顺序读写1.顺序读写函数(适合于所有的流)1.1 fgetc(读字符)1.2 fputc(写字符)1.3 fgets(读字符串)1.4 fput(写字符串)1.5 fscanf(格式化地读)1.6 fprintf(格式化地写) 2.顺序读写函数(只适用于文件流)2.1 fread(二进…

jupyter Notebook 默认路径修改

1. anaconda prompt 中运行 jupyter notebook --generate-config 命令,将在 C:\Users\Think\.jupyter文件下生成 jupyter_notebook_config.py 文件。 2.在jupyter_notebook_config.py 文件中,找c.NotebookApp.notebook_dir 这个变量, (1)若…

2012年认证杯SPSSPRO杯数学建模A题(第二阶段)蜘蛛网全过程文档及程序

2012年认证杯SPSSPRO杯数学建模 A题 蜘蛛网 原题再现: 第二阶段问题   现在我们假设一个具体的环境。假设有一个凸多边形的区域,蜘蛛准备在这个区域(或其一部分)上结一张网。   问题一: 在区域的边界上安置有若干…

区间概率预测python|QR-CNN-BiLSTM+KDE分位数-卷积-双向长短期记忆神经网络-时间序列区间概率预测+核密度估计

区间预测python|QR-CNN-BiLSTMKDE分位数-卷积-双向长短期记忆神经网络-核密度估计-回归时间序列区间预测 模型输出展示: (图中是只设置了20次迭代的预测结果,宽度较宽,可自行修改迭代参数,获取更窄的预测区间) 注&am…

【chrome扩展】简 Tab (SimpTab)‘每日一句名言’样式

背景:最初参考“每日诗词”发现总是那几句,可以更换API接口完成“每日一句名言” 声明:本人不会ajax及ccs样式,非专业人士,借助CHATGPT代码生成完成。请友善交流。 每一句名言API: "https://api.xygeng.cn/open…

焦糖布丁理论:从用户任务角度重新审视产品价值

一、引言: 在竞争激烈的市场环境中,我们经常会遇到这样的困惑:为什么一款自认为极具创新和品质的产品,却未能获得市场的青睐和认可?焦糖布丁理论为我们提供了一个全新的视角,即”客户并非在购买产品本身&a…

gitlab代码迁移,包含历史提交记录、标签、分支

1、克隆现有的GitLab仓库(http://localhost:8888/aa/bb/cc.git)到本地,包括所有分支和标签 git clone --bare http://localhost:8888/aa/bb/cc.git 2、在gitlab上创建一个空的仓库(http://localhost:7777/aa/bb/cc.git&#xff…

CAD Plant3D 2023 下载地址及安装教程

CAD Plant3D是一款专业的三维工厂设计软件,用于在工业设备和管道设计领域进行建模和绘图。它是Autodesk公司旗下的AutoCAD系列产品之一,专门针对工艺、石油、化工、电力等行业的设计和工程项目。 CAD Plant3D提供了一套丰富的工具和功能,帮助…

Spring Cloud微服务入门(一)

微服务的演变过程 //controller 视图交互层 前端数据处理传给service //1.DAO RequestBody userDAO String id;String type; {"id":"lcs", "type":"lcs"} //2.GET请求 findUserById?id1&typelcsRequestParam String …

电商大数据采集|电商API接口|自动化采集|人工采集

大数据采集是指从海量、异构、分散、动态的网络环境中收集、提取和存储数据的过程。大数据采集主要分为两种方式:自动化采集和人工采集。 1.自动化采集 电商API自动化采集是利用爬虫技术和API等方式,通过编写程序实现对网站或者应用程序中的数据进行自…

用户认证安全性测试

用户认证安全性测试 认证与会话管理认证--Authentication01 常见认证方式02 session认证Session Fixation攻击Session保持攻击 03 Token认证多因素认证session和token区别 04 暴力破解密码的那些事密码设置推荐策略 会话--Authorization 权限控制权限管理方式垂直权限管理水平权…

5.3.2 实验2:配置交换机端口安全

1、实验目的 通过本实验可以掌握: 交换机管理地址配置及接口配置。查看交换机的MAC地址表。配置静态端口安全、动态端口安全和粘滞端口安全的方法。 2、实验拓扑 配置交换机端口安全的实验拓扑如图所示。 配置交换机端口安全的实验拓扑 3、实验步骤 &#xff…

界面控件DevExtreme JS ASP.NET Core 2024年度产品规划预览(一)

在本文中我们将介绍今年即将发布的v24.1附带的主要特性,这些特性既适用于DevExtreme JavaScript (Angular、React、Vue、jQuery),也适用于基于DevExtreme的ASP.NET MVC/Core控件。 注意:本文中列出的功能和特性说明官方当前/预计的发展计划&a…

Jenkins--任务详解

一、任务类型 Jenkins的主要功能的实现是由执行任务去完成的,常用的任务类型主要有以下三种: 自由风格任务(Free Style Project): 这是Jenkins中最常用的任务类型,允许你自定义各种构建步骤和配置选项,如源码管理、构建触发器、…