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

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

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

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

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

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

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

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

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

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

修改声呐参数,以将声呐量程修改为10m为例,其余参数修改可参照协议文件。

1、client_test.py

python3 clien_test.py 13 10

python 复制代码
elif cmd == str(13):
    print("set sonar range: " + str(value))
    arrBuff = b'\xee\xbb\xee\x03'
    arrBuff += struct.pack('i', int(value))
    arrBuff += b'\xee\xaa\xee\xff'

在协议文件中,修改声呐量程的协议为:

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

2、auv_server.py

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

直接将指令转发至center_server

3、center_sever.py

python 复制代码
# send the control_center cmd from auv to the control_center module on nx
def recv_control_center_msg(self):
    #self.sonar_param_socket, self.sonar_param_addr = self.sonar_param_server.accept()  
    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\aa\ee\ff'判断为带参数的指令,转sonar_node

4、sonar_node(此处以ros1版本中的驱动代码举例)

python 复制代码
# receive tcp cmd msg from center server, set the sonar parameter
def recv_tcp_cmd(self):
...
# set the sonar_range, 1~120
elif sonar_msg[0:4] == b'\xee\xbb\xee\x03':
    sonar_range = struct.unpack('i', sonar_msg[4:8])[0]
    sonar_range_cmd = 'rosrun dynamic_reconfigure dynparam set sonar_imager range_m ' + str(sonar_range)
    sonar_subprocess = subprocess.Popen(sonar_range_cmd, shell=True, executable="/bin/bash")

完成设置

数据包通过网口传输至声呐,声呐解码后进行参数调整。

相关推荐
迪菲赫尔曼12 小时前
【基础篇 11】把官方源码放到服务器:版本、解压层级和安装位置,一次弄清楚
运维·服务器·开发语言·人工智能·python·yolo·目标检测
迪菲赫尔曼14 小时前
【基础篇 12】把环境与源码接起来:检查 GPU,再安装服务器上的项目
运维·服务器·开发语言·人工智能·python·yolo·目标检测
陈嘿萌16 小时前
ACM MM 2026|告别密集交互!ProtoHGF-Net:基于原型超图的RGBT目标检测新范式
图像处理·人工智能·深度学习·目标检测·计算机视觉·学术研究与理论基础
pjj1985419 小时前
YOLO 目标检测算法系列梳理:从 V1 到 V5 的原理演进
算法·yolo·目标检测
微尘hjx1 天前
【ByteTrack 04】多轨迹算法ByteTrack改进点
算法·yolo·目标检测·目标跟踪·bytetrack·ultralytics·车跟踪
宿州派大星2 天前
目标检测:YOLOv1架构原理与损失函数全解析
人工智能·yolo·目标检测
荆棘鸟智能2 天前
河道采砂船识别与轨迹追踪怎么做?检测、跟踪与电子围栏实战思路
人工智能·算法·目标检测
神仙别闹2 天前
基于Python Yolo实现绝缘子目标检测程序
python·yolo·目标检测
迪菲赫尔曼3 天前
【基础篇 04】第一次使用终端:命令在哪里输入,电脑现在又“站”在哪里?
python·yolo·目标检测
Carl_奕然3 天前
【机器视觉】最强算法之:3D高斯泼溅(3D Gaussian Splatting)
人工智能·python·算法·目标检测·计算机视觉·3d