01
前 言
大家好,我是张巧龙,今天给大家带来关于21年F题的分享:智能送药小车,出了这个题目之后,咋一看,好像比较简单。
不过大家慢慢做,越往后做越发现,坑越来越多。
第一个问题:数字识别率不高,我对识别率高低的看法:只要不到100%,哪怕出现1%的误识别率,我认为都不行,为什么?
因为,题目明显给出说明,每个项目只测试一次。也就是说,小车一旦出错,就0分,没有再测的机会。
第二个问题:小车巡线的问题,一谈到巡线,大家想到的肯定是,循迹模块(颜色识别传感器),这个没问题,可以用,也可以用摄像头来寻迹。
不知道大家是否有发现过,车运动的轨迹都是直线,转弯都是90度,循迹模块或者摄像头寻迹确实可以用。
但运动过程中,需要一直巡线,对摄像头或者是循迹模块的要求比较高,环境的光线要求比较稳定。
为了提高巡线的稳定性,我认为可以直接采用电机编码器来写闭环,将小车运动的路程直接固定死,每次都是走固定直线距离后再识别数字,拐弯也可以直接固定,毕竟都是90度。
当然,这个过程中,肯定需要颜色识别模块或者摄像头寻迹来做辅助。
来吧,看视频展示,文字内容在后文。
【全国一等奖】F题:智能送药小车
对了,由于是电机直接闭环,所以本视频中小车的运动速度还可以继续提升。
02
系统方案
2.0 摘要
以STM32单片机为核心、结合视觉识别技术,通过速度闭环来控制智能送药小车,并实现双车在预定轨道上送药,取药。
基本模块主要包括主控、摄像头、直流减速电机、驱动模块,无线传输模块,本设计主控选择STM32F103RCT6。
在摄像头识别中,采用双摄像头方案,K210用于识别数字和寻找对应数字并通过串口向主控发送识别信息,从而进入对应的病房,OpenMV用来寻迹,防止小车偏离预定轨道;
小车1,2通过ZiGBee来完成双车通信,实现双车协同运送的效果;通过电机编码器反馈的信息设计小车的速度闭环控制系统,实现运输距离的精准控制。
经过检测发现,本设计具有识别速度快,识别精准度高,运输稳定且效率高等优点。

2.1 方案设计
根据题目要求,将小车系统分为4个基本模块,包括主控模块、电机驱动模块、视觉检测和识别模块,无线通讯模块,主控选择STM32F103RCT6,通过速度闭环来实现电机驱动的精准控制。
视觉识别中,寻迹采用OpenMv摄像头,数字识别采用K210摄像头。
无线通信选择ZIGBEE实现两车之间的通讯,系统的总体设计框图如图1所示。

图1 系统总体设计框图
由于题目要求小车的长宽高不能超过25cm*20cm*25cm,再加上赛道的宽度只有30cm,为了保证转向的时候能够避免碰到黑实线,我们采用双驱动置于车身中间,车身前后分别装置牛眼轮便于转向。
根据设计要求和实际情况,两个摄像头安装于车头前端,OpenMv在下,K210在上,以便于识别和检测。
由于识别数字时数字宽度较大,K210无法全部识别到数字,所以搭配舵机,实时调整摄像头的位置来达到扩大视野范围的目的。

2.2 数字识别方法
首先将1-8字模原比例打印出来,然后用K210进行模型训练,模型训练了几千张模型,生成训练样本矩阵,一般样本是以二维矩阵的方式存在文件当中,现在要将它们读出来,进行适当的预处理,然后生成OpenCV能理解的数据结构。
其中包含了分别从不同的视角对图像进行采集入库,在通过NCC模板匹配训练产生数字分类器,训练样本中的数字位置形态各异,因此读入时需要进行规整化。
主要方法是先找到数字的边界框,然后以宽和高中大的一边为基准进行缩放和拉伸,从而使得其可以占满整个表示单个样本的矩阵。
再将其图像二值化,进行腐蚀分割,前面通过学习产生了分类器,但我们输入图像中的数字并不能直接作为测试输入。图像中的数字笔画有时并不规整,还可能相互重叠。
接下来,就可以对图像进行分割了。由于我们的分类器只能对数字一个一个地识别,所以首先要把每个数字分割出来。分割完后就可以应用我们前面训练好的分类器对分割结果进行识别。
首先对图像进行相关预处理,图像采集和传输过程中可能产生噪点,通过图像灰度化和图像滤波减小对图像处理的干扰。
其次摄像头采集跑道上的红线,通过硬件二值化处理,这里用到最大类间方差法(Otsu)来实现图像二值化阈值选取:
Otsu算法的基本思想是用某一假定灰度值t将图像的灰度分成两组,当两组的类间方差最大时,此灰度值t就是图像二值化的最佳阈值。
设图像有L个灰度值,取值范围在0~L-1,在此范围内选取灰度值T,将图像分成两组G0和G1,GO包含的像素的灰度值在0~T,G1的灰度值在T+1~L-1,用N表示图像像素总数,n, 表示灰度值为i的像素的个数。
已知:
每一个灰度值i出现的概率为p=n/ N;假设GO和G1两组像素的个数在整体图像中所占百分比可得:


紧接着,运用计算机视觉的线性回归(Linear Classification)算法进行寻线,线性回归能找到视野中任何的线,但是处理速度就会很慢。
为了能更快的寻到我们想要的轨迹,把颜色调为灰度,不去处理追踪颜色,图像大小设成QQVGA,缩小图像面积,来增加速度。
最后向STM32提供反馈信息,控制电机进行自动寻径。
依靠编码器反馈数值,通过速度闭环解决对小车行驶距离的把控,本小车所采用的PID算法是闭环控制系统中常用的控制算法之一,其全称为比例积分微分控制。
其传递函数如下:

再配合OpenMv二值化处理寻线辅助和K210数字识别并将相关数据通过串口反馈给主控板最终实现小车的精准控制。
通过配置串口的波特率便可以控制串口通讯的速率。
为保证数据接收正常,本设计通过对控制系统中的STM32F103RCT6单片机进行编写通信协议程序,以防止无线接收模块在受到干扰的情况下收到错误指令而使小车失控的情况发生。
03
程序设计
3.1.1 小车1的程序设计思路
在识别目标病房号后,判断是否为近端,如果为近端则直接第一个十字路口转对应方向,否则直行至第二路口,判断是否为目标数字。
如果是,则转对应方向,否则直行至T型路口左转,判断判断是否为目标数字,如果否,则转至T型路口对面,识别目标数字方位并转弯。
识别虚线点后停车,发送位置信号给小车2,同时检测小车2回馈信号和药品是否卸载,在卸载药品完成条件下,如果检测到回馈信号则为双车模式,等待小车2,发送到达指定位置信号,则开始启动返回,否则为单车模式,直接按记忆路线返回。

图1 小车1程序设计流程图
3.1.2 小车2的程序设计思路
发送反馈信号给小车1,开始识别目标病房号,检测是否装药,如未装药且接收到小车1位置指令,则取药模式,运行到T型路口处小车1对面支路并识别是否为目标数字,如果否,则转至T型路口对面,识别目标数字方位并转弯,识别虚线点后停车。
如装药且接收到小车1位置指令,则送药模式,小车2运行到指定位置停车且发送反馈信号,当接收到小车1继续运行指令则倒车回十字路口识别目标数字方位并转弯,识别虚线点后停车。

图2 小车2程序设计流程图
04
总结
此方案,可行性较高,关键点有3个,分别是电机编码器位置闭环、K210训练识别数字、OPENMV巡线,其实这些内容我在21年电赛开赛前就说过,不知道大家还有没有印象:
关于2021年电赛的一些想法,看到就是赚到!(点击即可跳转阅读)
现在回过头来看看,确实有一些参考价值。
由于篇幅有限,过多的细节在此不放了,有需要详细设计报告以及代码的,请加微信:great_xiaolong,加好友记得备注。
对了,近期会陆陆续续开源电赛所有题目的方案,有兴趣的朋友们可以关注下。
当然,想来分享自己电赛心得体会的可以加我微信,进行投稿,一旦录用,有稿费哦~

精彩推荐:点击图片即可跳转阅读
近期会近期会开源电赛所有题目的方案,欢迎大家关注公众号。
前面一篇关于智能合约翻译文讲到了,是一种计算机程序,既然是程序,那就可以使用程序语言去编写智能合约了。而若想玩区块链上的项目,大部分区块链项目都是开源的,能看得懂智能合约代码,或找出其中的漏洞,那么,学习Solidity这门高级的智能合约语言是有必要的,当然,这都得在公链``````以太坊上,毕竟国内的联盟链有些是不兼容Solidity。Solidity是一种面向对象的高级语言,用于实现智能合约。智能合约是管理以太坊状态下的账户行为的程序。Solidity是运行在以太坊(Ethereum)虚拟机(EVM)上,其语法受到了c++、python、javascript影响。Solidity是静态类型
2022年底,OpenAI的预训练模型ChatGPT给人工智能领域的爱好者和研究人员留下了深刻的印象和启发,他展现的惊人能力将人工智能的研究和应用热度推向高潮,网上也充斥着和ChatGPT的各种聊天,他可以作诗、写小说、写代码、讨论疫情问题等。下面就是一些他的神回复:人命关天的坑: 写歌,留给词作者的机会不多了。。。 回答人类怎么样面对人工智能: 什么是ChatGPT?借用网上的一段介绍,ChatGPT是由人工智能研究实验室OpenAI在2022年11月30日发布的全新聊天机器人模型,一款人工智能技术驱动的自然语言处理工具。它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动
摘要本论文主要论述了如何使用Python技术开发一个短视频智能推荐,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作者将论述短视频智能推荐的当前背景以及系统开发的目的,后续章节将严格按照软件开发流程,对系统进行各个阶段分析设计。 短视频智能推荐的主要使用者分为管理员和用户,实现功能包括管理员:首页、个人中心、用户管理、热门视频管理、用户上传管理、系统管理,用户:首页、个人中心、用户上传管理、我的收藏管理,前台首页;首页、热门视频、用户上传、公告信息、个人中心、后台管理等功能。由于本网站的功能模块设计比较全面,所以使得整个短视频智能推荐信
文章目录1简介2绪论2.1课题背景与目的3系统设计详细设计描述3.2硬件部分温度测量电路其他电路部分3.3软件部分主程序子系统程序温湿度程序流程键盘显示子程序3.4实现效果3.5部分相关代码4最后1简介Hi,大家好,这里是丹成学长,今天向大家介绍一个单片机项目基于单片机的智能温控农业大棚系统大家可用于课程设计或毕业设计单片机-嵌入式毕设选题大全及项目分享:https://blog.csdn.net/m0_71572576/article/details/1254090522绪论2.1课题背景与目的近年来我国的温室控制取得了长足的进步,首先在温室群控制方面,进行了初步的探索和理论研究,其次在温室
BigData/CloudComputing:基于阿里云技术产品的人工智能与大数据/云计算/分布式引擎的综合应用案例目录来理解技术交互流程目录一、云计算网站建设:部署与发布网站建设:简单动态网站搭建云服务器管理维护云数据库管理与数据迁移云存储:对象存储管理与安全超大流量网站的负载均衡二、大数据MOOC网站日志分析搭建企业级数据分析平台基于LBS的热点店铺搜索基于机器学习PAI实现精细化营销基于机器学习的客户流失预警分析使用DataV制作实时销售数据可视化大屏使用MaxCompute进行数据质量核查使用Quick BI制作图形化报表使用时间序列分解模型预测商品销量三、云安全云平台使用安全云上服务
中国民用飞机制造行业市场现状规模及发展战略规划报告2021-2027年详情内容请咨询鸿晟信合研究院!【全新修订】:2022年2月【撰写单位】:鸿晟信合研究研究【报告目录】第1章:中国民用飞机制造行业发展综述1.1民用飞机制造行业概述1.1.1民用飞机的概念1.1.2飞机制造的概念1.1.3民用飞机的分类1.2民机制造行业周期特性1.2.1影响行业周期的因素(1)GDP增速分析(2)运量增量分析(3)飞机更替分析(4)航空公司获利水平1.2.2行业现阶段周期分析1.2.3行业现阶段景气分析1.3民机制造信息化分析1.3.1信息化技术应用状况分析(1)MDO技术应用分析(2)供应链协同研发分析(3
如何从智能合约中删除数据有了以太坊,我们可以创建一个有状态的系统,我们可以从存储在智能联系人中的数据中添加和删除数据。这是一个有状态的系统,我们可以改变智能联系人的状态,但这需要向矿工支付一些费用。但是我们如何删除数据呢?这里有一个智能合约,用于向myArray中添加和移除字符串:pragmasolidity^0.4.18;contractExampleApp{string[]myArray;functionadd(stringx)public{myArray.push(x);}functiondel(stringx)public{for(uintj=0;jadd()函数相当简单,我们基本上只
我正在使用RubyonRails3.2.2和Ruby1.9.2。给定以下多维数组:[["value1","value1_other"],["value2","value2_other"],["value3","value3_other"]]我想得到(注意:我想只“提取”所有“嵌套”数组的第一个值):["value1","value2","value3"]我怎样才能以聪明的方式做到这一点? 最佳答案 您可以使用Array#collect为外部数组的每个元素执行一个block。要获取第一个元素,请传递一个索引数组的block。arr.c
目前数字钱包存在的三个问题Web3.0大规模普及,需要解决一些关键问题,包括钱包私钥带来的一个用户体验问题与两个安全问题。1.一个用户体验问题:助记词与私钥难记、难保存,导致用户使用门槛过高2.两个安全问题:助记词和私钥的泄露,导致资产被盗。助记词和私钥的丢失,导致资产丢失。数字钱包为什么只能通过私钥的方式进行验证为什么只能通过私钥的方式进行验证?为了回答这个问题,我们需要了一些背景知识和概念。首先是以太坊上的账户类型。以太坊一共有两种账户:外部账户(EOA)和合约账户(CA)。合约账户就是智能合约,其代码由以太坊虚拟机来运行。外部账户就是我们平常用来发起交易的钱包账户,它之所以被称为“外部“
Solidity概述Solidity是一种智能合约高级语言,运行在Ethereum虚拟机(EVM)上,Solidity是面向对象的高级语言,用于实现智能合约。智能合约是管理以太坊状态内的账户行为的程序。BitPen认为,作为Web3的链上玩家,那么能够看懂Solidity代码将会是一项必备的技能,因为大多区块链项目都是在GitHub开源,如果你能看懂甚至编写Solidity代码,那么你在链上项目游玩的技能将大大提升,可以避免很多恶意合约以及有漏洞的Rug项目。开发工具:RemixRemix网址:remix.ethereum.orgRemix作为以太坊官方推荐的智能合约开发IDE,