创新实训工作记录十(自动巡航2)

先贴上上次没说完的主要代码:

    def lane_base(self, speed, end_fuction, stop=STOP_PARAM):
        while True:
            if self._stop_flag:
                return
            image = self.cap_front.read()
            error_y, error_angle = self.crusie(image)
            y_speed, angle_speed = self.lane_pid.get_out(-error_y, -error_angle)
            # speed_dy, angle_speed = process(image)
            self.mecanum_wheel(speed, y_speed, angle_speed)
            if end_fuction():
                break
        if stop:
            self.stop()

对其中的:

            error_y, error_angle = self.crusie(image)

crusie方法:

    def paddle_infer_init(self):
        self.crusie = ClintInterface('lane')
        # 前置左右方向识别
        self.front_det = ClintInterface('front')
        # 任务识别
        self.task_det = ClintInterface('task')
        # 人体跟踪
        self.mot_hum = ClintInterface('mot')
        # 人体属性
        self.attr_hum = ClintInterface('humattr')
        # ocr识别
        self.ocr_rec = ClintInterface('ocr')
        # 识别为None
        self.last_det = None

查看对应的ClintInterface:

class ClintInterface:
    configs = [
            {'name':'lane', 'infer_type': 'LaneInfer', 'params': [], 'port':5001, 'img_size':[128, 128]}
            ]
    
    def __init__(self, name):
        logger.info("{}连接服务器...".format(name))
        model_cfg = self.get_config(name)
        self.img_size = model_cfg['img_size']
        self.client = self.get_zmp_client(model_cfg['port'])
        
        infer_back_end_file = "infer_back_end.py"
        # 检查后台程序是否运行, 如果未开启, 则开启
        self.check_back_python(infer_back_end_file)

        flag = False
        while True:
            if self.get_state():
                if flag:
                    logger.info("")
                break
            # 输出一个提示信息,不换行
            print('.', end='', flush=True)
            # logger.info(".")
            time.sleep(1)
            flag = True
        # print(self.client)
        # print("连接服务器成功")
        logger.info("{}连接服务器成功".format(name))
  1. 日志记录开始连接:使用 logger.info 打印信息,告知正在尝试连接名为 name 的服务器。

  2. 获取配置model_cfg = self.get_config(name):调用 get_config 方法(尽管在这段代码中未显示定义,但显然这个方法用于从 configs 中获取匹配 name 的配置)。

  3. 设置图像尺寸self.img_size = model_cfg['img_size']:根据获取的配置设置图像尺寸。

  4. 创建客户端连接self.client = self.get_zmp_client(model_cfg['port']):调用 get_zmp_client 方法(同样未在代码中定义),该方法根据配置的端口号创建客户端连接。

  5. 检查后台服务self.check_back_python(infer_back_end_file):检查后台推理服务是否正在运行,如果未运行,则启动它。这个过程使用 infer_back_end_file 文件路径进行操作。

  6. 等待服务器响应:循环检查服务器状态,直到连接成功。通过调用 get_state() 方法(未在代码段中定义)来检测服务状态。如果 get_state() 返回 True,即服务已经成功响应,退出循环。循环中使用 print('.', end='', flush=True) 打印连接进度,提供了一个简单的视觉反馈,显示正在尝试连接。

  7. 连接成功日志:一旦连接成功,记录日志信息,确认已成功连接到服务器。

连接后通过对应的zeroMQ即可进行模型之间的通信。模型是其他组员训练的,此处不再说明。只需要记住使用的是模型返回的参数:y,θ和对应的位置关系。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值