下载
中文
注册

锁定追踪部分

机械狗的锁定追踪部分的时序图如图1图2图3所示:

图1 机械狗锁定追踪时序图1
图2 机械狗锁定追踪时序图2
图3 机械狗锁定追踪时序图3
  1. 在启动主程序后,首先进行摄像头和共享内存的初始化,拉流后在运动控制器端初始化,获取STM32和ESP32的端口信息。
  2. 其中,外设的连接端口号ttyUSB*中具体的号码是由拔插的先后顺序决定的,所以需要提前查询端口信息并返回到主程序中。而后在追踪任务的进程中初始化,再开启两个手势识别和人体检测的模型进程,分别进行初始化,然后在控制端下位机设置舵机的角度,调整到方便机械狗追踪的角度,将识别锁定追踪目标的状态初始化为解锁,锁定计数归零。
  3. 在拉流分发的进程中开启循环获取frame并放入共享内存中,然后再启动循环并开始并行的手势识别和人体识别的推理进程。此处使用两个消息队列来防止手势识别和人体识别出现异帧不同步的情况,将两个过程同步之后返回两个bboxes,分别是手势和人体的识别框存储数据,再利用如下公式来判断锁定的目标框:
    1. 在出现比值大于0.9的帧时,计数器值加1,在连续五帧都超过这个比值后,将锁定目标的FLAG置为True,然后设置舵机的信息,进行目标的锁定追踪;若在已经锁定目标的状态下就需要锁定到该框并且使用卡尔曼滤波的方式进行目标框的匹配,进而推算出要追随的目标,即使在有多人存在的场景仍然可以准确追踪到目标。
    2. 在超过20帧没有识别到目标之后以及出现解锁的手势超过5帧之后就会将机械狗的下位机中的运动FLAG设定为停止,然后上位机上的解锁标志回归为解锁,并且下发动作,然后等待下一个锁定的手势出现,继续追踪新的目标。