Robomaster凌云战队-视觉组
随着2019第一届江苏省robomaster校际联盟赛已经结束好多个月了,保持着开源的态度,将凌云战队第一个版本(即省赛视觉程序)的视觉程序作了整理和分析
相机介绍
采用了海康威视 30万像素USB3.0彩色工业相机MV-CA003-21UC 。分辨率 为640×480,最的大帧率 814 fps,曝光时间 40 μs ~ 10 sec。之所以考虑使用这款相机,是因为他的高帧率,视觉讲求定位的准确性和速度,由于这款相机帧率高的特性才造就了本程序能在10毫秒以内做完一帧图像处理。
展示一下相机的强大拍摄效果
先来一张装甲板原图
再上我们相机拍出来的效果
视觉处理设备
视觉处理设备采用Intel的nuc小型主机,采用8代i5低压处理器,之所以采用nuc主要还是因为资金问题,放弃Nviaia的妙算采用经济型的nuc小主机,这也导致后续的识别程序只能采用cpu来运行,而选择了opencv来做本程序。
来一张nuc特写
程序关键点介绍
开发环境采用 ubuntu16.04系统,opencv-python3.4.2.16,采用python开发语言。
程序分析
1、调用海康的相机sdk获取到图像
2、将rgb图像转换成hsv,hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)通过cvtColor函数将图像转化成hsv图像,mask = cv2.inRange(hsv, lowerb=lower_hsv, upperb=upper_hsv)通过imRange函数和最低阈值和最高阈值过滤掉己方的颜色找到对方颜色。当己方是蓝色对方是红色时做完hsv处理后的图像如下图
3、将图像做提取,dilation, contours, hierarchy = cv2.findContours(img, cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)通过findContours找轮廓和坐标。通过图像的长和宽做面积计算,通过提取到的图像的长宽做外接矩形的面积计算,通过面积的比例关系做优化打击计算,通过面积的比例可算出距离的远近用于距离的判断,优先打击距离近的目标。通过两个灯柱左上角的坐标值找到相机视野中的装甲板的中心坐标。
4、传值,将计算出来的坐标值通过串口传给a板。发射管的准星调整到相机的视野中心,a板获取值后将准星移到计算的坐标点上完成瞄准任务。附一张A板图片
关键点介绍完成附一个程序地址
github代码仓库地址
来一张我们步兵的帅照
放一下步兵自瞄的视频
步兵自瞄视频.MP4
最后放几张比赛的照片凑个牌面