当前位置:   article > 正文

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

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

     

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

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

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

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

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

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

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

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

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

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

1、client_test.py

python3 clien_test.py 1 1

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

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

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

2、auv_server.py

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

直接将指令转发至center_server

3、center_sever.py

  1. # send the control_center cmd from auv to the control_center module on nx
  2. def recv_control_center_msg(self):
  3. while True:
  4. cmd_msg = self.nx_client.recv(1024)
  5. if len(cmd_msg) > 3:
  6. # send the control_center cmd to the control_center module
  7. if cmd_msg[-4:] == b'\xee\xff\xee\xff':
  8. self.control_center_socket.send(cmd_msg)
  9. # send the sonar parameters cmd to the sonar module
  10. elif cmd_msg[-4:] == b'\xee\xaa\xee\xff':
  11. self.sonar_param_socket.send(cmd_msg)
  12. else:
  13. print("cmd from auv error, no such cmd...")

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

4、control_center.py

  1. def rcev_cmd(self):
  2. ...
  3. # start yolov5_ros ros2 launch
  4. if recvmsg[0:4] == self.start_yolo_msg[0:4]:
  5. # yolo is running, continue
  6. if self.yolo_running:
  7. print("yolo is running...")
  8. # callback the cmd
  9. self.send_cmd(self.yolo_is_running)
  10. # no yolo is running, start yolo
  11. else:
  12. print("start yolo...")
  13. self.yolo_subprocess = subprocess.Popen(self.start_yolo_cmd, shell=True, executable="/bin/bash")
  14. self.yolo_running = True
  15. self.send_cmd(self.start_yolo_msg)
  16. ....

根据”\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

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/363965
推荐阅读
相关标签
  

闽ICP备14008679号