|-- CMakeLists.txt
|-- GxCamera # 大恒相机驱动
| |-- GxCamera.cpp
| |-- GxCamera.h
| |-- include
| |-- DxImageProc.h
| |-- GxIAPI.h
|-- Serial # 串口通信
| |-- Serial.cpp
| |-- Serial.h
|-- stone.cpp # 检测源文件
|-- stone.h # 检测头文件
|-- stone_detect.cpp # 检测入口
|-- README.md
操作系统 | 运算平台 | 相机型号 |
---|---|---|
Ubuntu 18.04 | Jeston Nano b02 | 大恒相机 |
代码可在分辨率为640*480帧率达到60fps
工程车主要负责兑换弹丸与救援,在比赛中,工程机器人需要到达矿石掉落点夹取矿石,前往兑换点使其条码面朝下通过扫面并推入兑换仓库即兑换成功,此代码为夹取矿石的视觉辅助对正,并在比赛中取得不错的效果。
矿石为正方体,且每一面都有明显的视觉标签,根据这四个视觉标签即可很方便的确定矿石的方向
先将采集到的图转到HSV,由此根据阈值找出矿石疑似区域,之后根据面积,宽高比等判断条件找出矿石近似区域,并以此区域作为ROI用于后续的检测,在此区域进行视觉标签的检测,经过一系列图像处理与阈值判断识别出左标签,右标签与全黑标签,根据此位置一一对应关系判断矿石的朝向是否正确,根据标签之间的像素距离与实际距离计算出相机与矿石中心的偏移距离,利用小孔成像原理计算出相机与矿石的垂直距离。
流程图:
graph TD
入口-->传入检测模式-->转HSV-->|金矿|筛选矿石区域-->视觉标签检测-->获得完整矿石-->计算左右偏差与前后距离-->数据传送至下位机
转HSV-->|银矿| 筛选矿石区域
- 串口通信在nano下为阻塞模式,极大影响帧率
- 在光照不同的条件下,矿石区域的识别会受到很大影响,需在赛场根据实际情况调整对应阈值
- 必须要求车与矿石平行,且无法对不规则掉落矿石进行识别