前视声呐目标识别定位(一)-基础知识
前视声呐目标识别定位(二)-目标识别定位模块
前视声呐目标识别定位(三)-部署至机器人
前视声呐目标识别定位(四)-代码解析之启动识别模块
前视声呐目标识别定位(五)-代码解析之修改声呐参数
前视声呐目标识别定位(六)-代码解析之目标截图并传输
前视声呐目标识别定位(七)-代码解析之录制数据包
前视声呐目标识别定位(八)-代码解析之各模块通信
前视声呐目标识别定位(九)-声呐驱动
以启动识别模块为例,其余关闭识别模块,启动和关闭声呐模块,启动和关闭离线数据播放同理。
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判断为识别程序成功启动信息