目录

文章目录

前言

一、识别整体思路

二、识别停车线

三、识别内外圈


前言

这次电赛是我第一次参加省级以上的比赛,作为一名即将大三的学生来说有些晚了,况且由于学业紧张,openmv只学习了短短一个多星期左右就赶鸭子上架地上场比赛了。因此这篇文章也来记录一下我在比赛过程中识别方面的思路,控制方面这次比赛只写了一部分代码,可能过段时间整理完后也会写一篇心得体会。

一、识别整体思路

此次C题整体识别的任务主要集中在巡线和分辨停车线,岔道口等等,一开始我巡线采用比赛前就写好并测试过的二值化代码,但后来发现二值化的确可以非常准确的识别,但是这个函数的返回值太少了,不像find_blob可以返回色块面积,甚至是密度等等参数,因而后面改为用识别色块的方法巡线,我在一开始使用了灰度进行判断,刚开始的想法只是灰度比RGB的帧率高一些,避免脱机时引起问题,后面发现其他组同学用的RGB会在阴影比较大的时候产生很多误识别问题,灰度反而能稍微避免一些这个问题,也算是误打误撞了。主要思路是摄像头判断黑线色块的中心点坐标,比如说QQVGA的分辨率是160*120,那么黑线的中点就应该在80的位置(前提是摄像头位置正确且x,y轴正确)这时候将当前识别到的中心点x坐标数据发送给单片机,由单片机PID进行控制(PID的desired就是80,算出error即可)。这样就完成了基本的巡线。

sensor.reset()                        ##初始化
sensor.set_pixformat(sensor.GRAYSCALE)##选择灰度模式
sensor.set_framesize(sensor.QQVGA)    ##选择分辨率(分辨率越高帧率可能越低)

二、识别停车线

为了保险起见,我在识别停车线时采用了两个条件同时满足的办法来防止误识别,采用面积和中心点坐标判断。停车线作为一个面积比正常线大的多的色块是可以很轻松地识别出来的,而在摄像头识别到停车线时,其中心点坐标依旧保持基本不变,这样就防止了碰到不规则阴影或者岔路口面积发生改变时误停车的情况。

if((largest_blob.cy() >= 50 and largest_blob.cy() <= 70) and Area >= 12000):  ##判断停车线(两重判断)data = bytearray([0xAA, largest_blob.cy(), 1, 0XBB]) uart.write(data)

我的代码部分 ps:我的摄像头架的方向不一样,根据方向,我的摄像头上面的y轴是实际方向的x轴,因此返回的是y轴坐标。这个摄像头问题确实恶心了我四天,但一开始搭车的时候已经架好了就不麻烦队友了。。。

三、识别内外圈

我的思路可能稍微麻烦一些,通过单片机判断这圈是内圈还是外圈,并发送数据给openmv,由此我根据数据选择外圈的函数还是内圈的函数。

在判断内外圈分界线方面我一样用了面积和中心点坐标的办法,在我测试过程中,停车线面积和分界线差别还是很大的,因此这个就可以很准确的判断出来了。但当识别出现意外时还是需要一个保底的办法。也就是中心点坐标判断。当识别到分界线时,由于有一条向内的黑线,此时得到的黑色色块的中心点坐标会发生偏移,偏移到内圈的方向去一些,因此可以根据这个来区分停车线。(极端情况:两个面积大小差不多时这个办法很有用)

当单片机发送此圈为内圈的信息且内外圈判断完成后,我使用了分割roi来使摄像头只能识别到内圈的黑线。这个就需要根据赛道进行判断,其实roi如果带上一些外圈的黑线也不要紧,我在find_blob函数中将比较小的黑色色块过滤掉了,就不会产生一些意外的小色块出现导致识别错误的情况。

 if(Area>=8000 and largest_blob.cy()<=50):            ##内外圈岔道口判断blobs2 = img.find_blobs(GRAYSCALE_THRESHOLD,roi=(53,0,107,65),merge=True)if blobs2:largest_blob = max(blobs2, key=lambda b: b.pixels())data = bytearray([0xAA, largest_blob.cy(),0,0XBB])uart.write(data)

识别岔道

ROIS = [(0, 0, 160, 30, 0.7),(0, 30, 160, 60, 0.3),(0, 90, 160, 30, 0.1)]                              ##选择ROI感兴趣区,将视野进行分割

我的roi感兴趣区


总结

这次电赛是我第一次参加这种规模比较大的比赛,可能思路和代码有很多问题,希望大家多多包涵。但是在封箱前的测试中我的识别是没有什么问题的(虽然线下展示的时候因为光线的问题还是识别出了问题。。。最后只拿了一个省二,在这个问题上我肯定有很大的责任)之后的比赛和科研中我也会继续学习、记录,希望未来我的专业技术能够有所增长。

完全代码链接:https://download.csdn.net/download/qzh020312/86394697

2022电赛省赛C题-小车跟随行驶系统—视觉篇(openmv)心得体会相关推荐

  1. 广西大学电赛 C题-小车跟随行驶系统-系统方案设计

    广西大学电赛 C题-小车跟随行驶系统-系统方案设计 1. 题目 今天看看电赛题,个人觉得C题比较容易,其他题目对于学生来说比较复杂不好拿奖 先看看题目要求: 分析实现: 1)内圈外圈等停标志,线识别 ...

  2. 2022电赛小车跟随行驶系统(C题)复盘

    此次的电赛感觉结束的挺突然的,在找到方向准备细化地进行调试的时候却是没有足够时间来完成代码上的完善.想着此次遗憾,写一篇博客来记录一下自己的经历吧,总结总结此次的电赛时光. 电赛题目 首先便是题目的选 ...

  3. 【Gazebo/ROS】阿克曼小车仿真环境设置中的心得体会

    最近科研需要在gazebo中做一个阿克曼小车的仿真,要求小车运动能够通过话题来控制,小车上要安装激光雷达.imu.相机等传感器用于SLAM定位建图.由于是第一次接触gazebo仿真,所以分享一下学习心 ...

  4. 2022电赛省一-小车跟随行驶系统(C题)

    ⏩ 大家好哇!我是小光,嵌入式爱好者,一个想要成为系统架构师的大二学生. ⏩前段时间参加了电赛的校赛.七校联赛和省赛,校赛和七校联赛都获得了三等奖,省赛上也是获得了一等奖的好成绩

  5. 2022电赛C题:小车跟踪(方案1+核心代码)

    目录 前言 一.题目 二.方案1 1.材料清单 2.说明 三.核心代码 四.工程获取 前言 针对2022年电赛C题小车跟踪,本团队一共是做了两种方案:       第一种主要以摄像头(openmv)为 ...

  6. 2022年电设省赛碎碎念【C题小车题省一】

    一些备赛的时间轴 碎碎念 前期准备 为期20天的培训 图形获取和指示系统 智能小车 自动行驶小车 省赛 写在最后 碎碎念 电赛准备主要集中在七月份,前前后后做了三道题就直接比赛了.我们的准备确实很充分 ...

  7. 2022电赛F题思路

    2022电赛到现在为止已经出了结果.这是我第一次参加电赛,以前也没有相关的比赛经历,在这四天三夜的时间里能够和队友完成这样一项完整的作品,对我们来说都具有很大的意义.虽然最后还是有一些细节上的问题,不 ...

  8. 2020电赛经验总结+E题解题思路

    2020电赛经验总结+E题解题思路 取得的成果和经验 四川省2020年电子设计竞赛已经落下帷幕,第一次参加电赛,无论从知识还是经验上都有所获得.虽然只取得省三的成绩,但整个比赛过程为明年备战国赛具有指 ...

  9. 2022电赛声源定位(基础篇)

    对于需要2022电赛题目的同学点击这个链接:https://pan.baidu.com/s/1zyC8MbgenAAQ_ZVmvFyZvg 提取码:g6kd 对于这个2022电赛E题声源定位的音频点击 ...

  10. 都2021年了,你还在考虑电赛飞行器赛题,备赛是否有必要用基于TI处理芯片的飞控问题?

    无名创新售后群问题节选 @无名小哥 能问下今年国赛会不会指定某一款飞控呀? 答:都2021年了,你还在考虑电赛飞行器赛题备赛是否有必要用基于TI处理芯片的飞控问题? 暂不论官方是否会限定TI芯片的飞控 ...

最新文章

  1. QOS是什么?(Quality of Service,服务质量)
  2. linux ubuntu下ffmpeg的安装
  3. Qt Creator添加3D视图
  4. 1 数列分块入门_线性代数入门——利用分块矩阵简化矩阵乘法运算
  5. MySQL的binlog
  6. 《哪吒之魔童降世》观影人次突破1亿大关 为动画电影之最!
  7. error: failed to push some refs to ‘......‘解决方案
  8. html去除radio的样式,【HTML+CSS】纯CSS设置checkbox大小和样式 附Radio的去除默认样式和自定义样式...
  9. ans函数python_#12 Python函数
  10. 把Unity的jdk环境添加到环境变量
  11. python3实现的rtsp客户端脚本
  12. Pytorch运行错误:CUDA out of memory处理过程
  13. wordpress外贸建站四大步骤,适合新手
  14. 【深度学习】梯度消失与梯度爆炸的原因分析与解决策略
  15. 计算机cims的英语全称是什么,计算机集成制造系统(CIMS),computer integrated manufacturing system,音标,读音,翻译,英文例句,英语词典...
  16. 360随身wifi搭建无线热点
  17. javase(8)_集合框架_List、Set、Map
  18. Android 第三方 ROM
  19. 正规蓝牙耳机一般多少钱?音质好又便宜的蓝牙耳机
  20. Tesseract图文识别--简单

热门文章

  1. HIMA F7131中央处理器模块卡件
  2. Tokyo Cabinet和Tokyo Tyrant简介
  3. wav音乐格式转换器有哪些?分享几个好用免费的给大家~
  4. 易企cms调用标签整理
  5. Day 02 python学习笔记
  6. 2021.1.17寒假打卡Day13
  7. 使用PHP开发网站的批量打印快递单功能
  8. Hotspot JVM manageable 参数列表
  9. C#实战小技巧(十一):获取网站图标
  10. 软考_软件设计师(中级)