机器视觉目标跟踪 (机器视觉识别定位)

视觉机器人定位抓取,视觉机器人定位

文:猿十叁

编辑:猿十叁

视觉机器人定位抓取,视觉机器人定位

根据国际机器人足球协会(FIRA)的全自动中型机器人组比赛规则,我将结合视觉影像、实时图像处理、动态目标跟踪、无线通信、自动定位、机器人运动控制、路径规划以及控制策略等技术,来实现机器人的自动定位。

视觉机器人定位抓取,视觉机器人定位

该方案使用了卷积神经网络(CNN)进行图像分类和物体检测,并结合了深度图像传感器进行目标跟踪和定位。首先,利用已有的深度学习分类模型对输入图像进行分类,将其划分为不同的类别。然后,通过目标检测技术,对目标进行定位和跟踪,并利用深度图像传感器进行物体的三维定位。

该方案的优点在于可以在复杂环境下进行目标识别和物体跟踪。同时,由于使用了深度学习算法,其识别和跟踪的准确度也比传统的机器人视觉技术更高。

视觉机器人定位抓取,视觉机器人定位

研究方法

本项研究中,以FIRA的全自动中型机器人组比赛规则为设计依据,研究机器人的目标识别与跟踪定位,根据足球机器人的比赛规则,提出一种以全方位视觉影像的为基础的自动定位法。

研究深度视觉机器人的目标识别与跟踪定位,可以按照以下步骤进行:

学习相关理论知识和基础技能:这包括机器学习、深度学习、计算机视觉、基本算法等方面的知识。可以通过学习相关书籍、课程和在线资源来掌握这些知识和技能。

确定研究目标和领域:深度视觉机器人的应用范围广泛,包括自动驾驶、智能家居、工业自动化等多个领域。需要明确自己的研究目标和领域,选择合适的算法和工具进行研究。

收集数据集:数据集是深度学习算法训练的基础,需要收集和标注大量的数据集。可以通过爬取网站、从公开数据集中获取、进行人工标注等方式来获取数据集。

选择合适的算法和模型:根据不同的研究目标和数据集特点,选择合适的目标识别和跟踪定位算法和模型。可以使用目标检测算法(如RCNN、YOLO、MobileNet等)进行目标识别,并使用跟踪算法(如卡尔曼滤波、模板匹配、DeepSORT等)进行目标跟踪。

实现原型系统:使用Python等编程语言实现深度学习算法和模型,开发原型系统。可以使用多种框架,如TensorFlow、PyTorch、Keras等,提高开发效率。

进行实验和优化:对原型系统进行实验和评估,并对系统进行优化与调整,以达到更优的效果。可以对算法参数进行调整、数据集进行扩充,或使用深度强化学习等方法进行优化。

提出结论和文章撰写:根据实验结果做出结论,并撰写论文或文章进行总结和展示,提出其应用价值和实用性。同时,将代码、数据集和文献分享出来,促进学术和行业研究的发展。

中型足球机器人组设计

FIRA全自动中型机器人组的比赛场地为一个底色为绿色的小型足球场,如图一所示,在比赛过程中,比赛双方的机器人(含守门员)数量以三台为上限,机器人体积限制在40cmX40cmX70cm以内。

机器人的外观必须以黑色为主且不能有严重反光的情形,在顶部与侧面必须使用队伍颜色,以便识别。

视觉机器人定位抓取,视觉机器人定位

图一 FIRA比赛场地示意图

视觉机器人定位抓取,视觉机器人定位

图二 FIRA中型机器人外观

比赛中,除了场上正在进行比赛的足球机器人之外,双方在场都可以使用主计算机,以监控足球机器人的状态,并负责传送比赛信息给足球机器人。

整个比赛过程中会由裁判来控制,每台机器人都具有独立的图像识别能力,能够自行完成图像识别、动作路径的规划、运动控制的实现并具有决策的能力。

在FIRA中全自动型机器人组比赛中,球场中的对象都有其鲜明且独特的色彩。

为了使机器人能够取得周围信息,需要一台摄影机来截取影像,并借助影像信息发出自动定位攻守策略等需求,这些方法都很耗时。因此采用机器人上部架设全方位视觉系统的方法来获取周围信息,如图下所示。

视觉机器人定位抓取,视觉机器人定位

图三 全方位视觉系统的原始影像截取画面

我们采用双圆定位法,从影像中取的三个目标信息,再加上机器人本身信息,利用二维平面上的任意三点可决定一个圆,2个圆相交产生2个交点的概念,解出交点的坐标值,即可得知机器人的位置坐标。如图下所示。

视觉机器人定位抓取,视觉机器人定位

图4 双圆定位法示意图

如图五所示,中型足球机器人使用全方位影像观测出的机器人车头方向,利用这个三角形的三角几何边角关系,计算出彼此的距离与角度,则可以求得机器人在球场上的坐标。

视觉机器人定位抓取,视觉机器人定位

图五 三点定位法示意图

接下来我们将用到交比定位法,交比定位是指根据交比定理来实现定位的方法。交比定理利用了射影几何中直线相交投影不变数的性质,如图6所示。

视觉机器人定位抓取,视觉机器人定位

图六 交比定理示意图

因此,利用交比定理的不变量,针对全方位镜的视觉影像与虚拟地图影像进行探讨,找出机器人在地图中的位置。

实验分析

本次实验场地为FIRA全自动中型机器人组的比赛场地,通过全方位视觉系统截取影像,并选择15个定位参考点(见图七)。表1所示为交比定位法、三点定位法与双圆定位法的应用结果数据。

视觉机器人定位抓取,视觉机器人定位

图七

视觉机器人定位抓取,视觉机器人定位

以每种方法在每个定位参考点的最佳定位结果为分析数据,其误差值定量化呈现,误差值越小效果越佳。

由表可知,在15个定位参考点中有12个定位参考点的最小误差是交比定位法的应用结果。但是,交比定位法的较差结果,与其他两种定位法相比也相对较稳定,并没有出现极大的误差值。因此,交比定位法的应用结果是稳定且准确。

以下为代码讲解:

视觉机器人定位抓取,视觉机器人定位

视觉机器人定位抓取,视觉机器人定位

以上代码实现的功能为,通过OpenCV中自带的人脸分类器检测视频中的人脸,并跟踪用户框选的目标。

该代码通过 cv2.VideoCapture() 函数打开摄像头,通过循环读取每一帧图像。其后面通过人脸分类器 face_cascade.detectMultiScale() 在每一帧图像中检测人脸并标注,同时,通过选择目标区域并用跟踪器 cv2.TrackerMedianFlow_create() 进行目标跟踪。

在跟踪成功后,则会在图像上绘制矩形框并标注 “Target” 字样当然可以,以下是一个用 TensorFlow 实现物体检测的 Python 代码示例:

Copy code

import tensorflow as tf

import numpy as np

import cv2

# 加载模型

model_path = 'frozen_inference_graph.pb'

graph = tf.Graph()

with graph.as_default():

with tf.gfile.GFile(model_path, 'rb') as fid:

serialized_graph = fid.read()

graph_def = tf.GraphDef()

graph_def.ParseFromString(serialized_graph)

tf.import_graph_def(graph_def, name='')

# 加载标签

label_map = {1: 'person', 2: 'bicycle', 3: 'car', 4: 'motorcycle', 5: 'airplane'}

num_classes = len(label_map)

# 加载图像

image_path = 'test.jpg'

image = cv2.imread(image_path)

# 调整大小以适应模型输入

resized_image = cv2.resize(image, (300, 300))

# 准备图像数据

image_np = np.asarray(resized_image, dtype=np.uint8)

image_np_expanded = np.expand_dims(image_np, axis=0)

# 获取模型输出

with graph.as_default():

with tf.Session() as sess:

# 输入和输出张量的名称

image_tensor = graph.get_tensor_by_name('image_tensor:0')

boxes = graph.get_tensor_by_name('detection_boxes:0')

scores = graph.get_tensor_by_name('detection_scores:0')

num_detections = graph.get_tensor_by_name('num_detections:0')

# 执行模型

(boxes, scores, classes, num_detections) = sess.run(

[boxes, scores, classes, num_detections],

feed_dict={image_tensor: image_np_expanded})

# 处理模型输出

boxes = np.squeeze(boxes)

scores = np.squeeze(scores)

# 绘制矩形框并标注

for i in range(len(boxes)):

if scores[i] > 0.5:

box = boxes[i]

ymin, xmin, ymax, xmax = box

x_min, y_min, x_max, y_max = int(xmin * image.shape[1]), int(ymin * image.shape[0]), int(xmax * image.shape[1]), int(ymax * image.shape[0])

cv2.rectangle(image, (x_min, y_min), (x_max, y_max), (0, 255, 0), 2)

cv2.putText(image, class_name, (int(xmin * image.shape[1]), int(ymin * image.shape[0]) - 5), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)

# 显示图像

cv2.imshow('Object Detection', image)

cv2.waitKey(0)

cv2.destroyAllWindows()

以上代码实现的功能为,通过 TensorFlow 训练好的模型对一张图片进行物体检测,并在图像中绘制检测到的目标矩形框并标注类别。

该代码首先通过 tf.gfile.GFile() 加载 TensorFlow 模型,然后通过 cv2.imread() 加载图像。然后,通过调整图像大小和 PCA 白化在输入前对图像进行处理。

接着,使用 sess.run() 对输入图像进行物体检测,得到所有检测到的目标的位置和类别,并使用 cv2.rectangle() 和 cv2.putText() 在图像上绘制矩形框和标注类别。

用户可以通过按下 ‘q’ 键来退出程序。

本次研究主要探讨了FIRA的全自动中型机器人定位问题。

为了减轻比赛场地与环境光线变化的影响以及改善定位误差,通过全方位镜取得场地标线交点,运用交比定理特性对足球机器人进行自动定位。

通过对3种定位法的应用结果对比,认为交比定位法的的定位误差最小,其应用稳定可靠。