全国一等奖,F题:智能送药小车。
大家好,我是張巧龍,今天給大家繼續(xù)帶來電賽F題的分享:智能送藥小車。
今天這個(gè)車也獲得了全國(guó)一等獎(jiǎng),這次獲獎(jiǎng)隊(duì)伍和上次獲獎(jiǎng)隊(duì)伍,都是我賽前指導(dǎo)的學(xué)生做的。
上次的文章鏈接:做個(gè)全國(guó)一等獎(jiǎng)的小車,其實(shí)不難(F題:智能送藥小車方案分享)
賽前我?guī)Я吮容^多學(xué)生專門做控制題,我?guī)У膶W(xué)生還有2組獲得了全國(guó)二等獎(jiǎng),由于獲獎(jiǎng)規(guī)則的名額限制,每個(gè)學(xué)校最多2個(gè)國(guó)一,2個(gè)國(guó)二。
我們學(xué)校今年在F題取得了滿額指標(biāo),其實(shí)我覺得2個(gè)國(guó)二獲獎(jiǎng)隊(duì)伍也可以拿國(guó)一,奈何規(guī)則限制。
當(dāng)然,組委會(huì)定的規(guī)則非常合理,必須讓更多學(xué)校參與并獲獎(jiǎng)。
閑話不多說,先看展示視頻:
01?
?方案設(shè)計(jì)
通過分析賽題可知,單個(gè)智能送藥小車首先在藥房處識(shí)別病房號(hào),等待裝載藥品后,開始自動(dòng)運(yùn)送。
在運(yùn)送過程中,通過識(shí)別地面上的紅實(shí)線和病房號(hào),實(shí)現(xiàn)自動(dòng)尋徑,將藥品送到指定病房,并能夠自動(dòng)返回到藥房。兩車協(xié)同送藥需要兩車相互配合完成運(yùn)送。
經(jīng)過上述分析,將系統(tǒng)分為4個(gè)基本部分,包括單片機(jī)、攝像頭處理模塊、載物檢測(cè)模塊和無線通信模塊,系統(tǒng)總體設(shè)計(jì)框圖如圖所示。
STM32F103RCT6單片來做控制,OpenMV來做巡線,K210用來識(shí)別數(shù)字,選擇ZigBee模塊做雙車通信。
圖1? 整體設(shè)計(jì)結(jié)構(gòu)圖
02?
?理論分析與計(jì)算
2.1? 數(shù)字識(shí)別算法
數(shù)字識(shí)別算法通過K210的模型訓(xùn)練來實(shí)現(xiàn),模型訓(xùn)練過程如圖3-1所示。準(zhǔn)備好需要訓(xùn)練的數(shù)據(jù)集后,只需上傳到Maixhub即可快速訓(xùn)練出模型。
本作品采用目標(biāo)檢測(cè)方法和Mx-yolov3模型訓(xùn)練,首先使用K210采集數(shù)字照片,按照數(shù)字“1”到“8”進(jìn)行數(shù)據(jù)集標(biāo)注和打包后,上傳數(shù)據(jù)集并創(chuàng)建訓(xùn)練任務(wù)。
訓(xùn)練結(jié)束后,將訓(xùn)練結(jié)果文件拷貝至SD卡,插入開發(fā)板后上電即可運(yùn)行。
K210識(shí)別數(shù)字卡片的結(jié)果通過串口發(fā)送給單片機(jī),單片機(jī)接收并執(zhí)行相應(yīng)操作。
圖2?模型訓(xùn)練過程
2.2? 自動(dòng)尋徑算法
自動(dòng)尋徑算法通過OpenMV的像素顏色統(tǒng)計(jì)來實(shí)現(xiàn),尋徑示意圖如圖2所示。
首先從OpenMV的視野中劃分出七個(gè)相連的矩形區(qū)域,然后在這七個(gè)區(qū)域內(nèi)依次進(jìn)行顏色統(tǒng)計(jì),如果某個(gè)區(qū)域內(nèi)的顏色閾值在紅色閾值范圍內(nèi),則認(rèn)為該區(qū)域內(nèi)包含紅實(shí)線。
將包含紅實(shí)線的區(qū)域標(biāo)記為“1”,其余標(biāo)記為“0”,以二進(jìn)制數(shù)的方式記錄數(shù)值并通過串口發(fā)送給單片機(jī)。
單片機(jī)通過標(biāo)記信息判斷小車相對(duì)于紅實(shí)線的偏移程度,并利用PID算法精確控制小車的轉(zhuǎn)向角,及時(shí)調(diào)整小車的前進(jìn)方向,即可完成自動(dòng)尋徑。
圖2? ?尋徑示意圖(OpenMV視野)
單片機(jī)通過紅實(shí)線的標(biāo)記信息對(duì)小車的轉(zhuǎn)向進(jìn)行調(diào)整的具體操作如下:
(1)若第一個(gè)區(qū)域標(biāo)記了“1”,則控制小車左轉(zhuǎn)0.5度;
(2)若第二個(gè)區(qū)域標(biāo)記了“1”,則控制小車左轉(zhuǎn)0.4度;
(3)若第三個(gè)區(qū)域標(biāo)記了“1”,則控制小車左轉(zhuǎn)0.3度;
(4)若第五個(gè)區(qū)域標(biāo)記了“1”,則控制小車右轉(zhuǎn)0.3度;
(5)若第六個(gè)區(qū)域標(biāo)記了“1”,則控制小車右轉(zhuǎn)0.4度;
(6)若第七個(gè)區(qū)域標(biāo)記了“1”,則控制小車右轉(zhuǎn)0.5度。
(7)若第二、第五兩個(gè)區(qū)域,或第二、第六兩個(gè)區(qū)域,或第三、第五兩個(gè)區(qū)域,或第三、第六兩個(gè)區(qū)域同時(shí)標(biāo)記了“1”,則認(rèn)為小車到達(dá)十字路口,控制小車左轉(zhuǎn)或右轉(zhuǎn)90度。
2.3? PID算法
小車的速度和轉(zhuǎn)向控制采用PID算法。PID算法是按照系統(tǒng)偏差的比例(P)、積分(I)和微分(D)進(jìn)行控制的一種閉環(huán)控制算法,它具有原理簡(jiǎn)單,易于實(shí)現(xiàn)和適用面廣等優(yōu)點(diǎn)。PID算法原理如圖3所示。
圖3? ?PID算法框圖
在實(shí)際的軟件控制中,使用的是離散化的PID算法表達(dá)式:
在不同的運(yùn)用場(chǎng)景中,只需對(duì)式(1)選擇相應(yīng)的組合并對(duì)、和三個(gè)系數(shù)進(jìn)行調(diào)節(jié)即可實(shí)現(xiàn)相應(yīng)的PID控制。
在智能送藥小車系統(tǒng)的PID控制中:
(1)小車的速度控制使用PI控制,其入口參數(shù)為電機(jī)編碼器脈沖數(shù)測(cè)量值和電機(jī)編碼器脈沖數(shù)理論值;
(2)小車的轉(zhuǎn)向角控制使用PD控制,其入口參數(shù)為小車轉(zhuǎn)向角測(cè)量值和小車轉(zhuǎn)向角理論值。
03?
?電路與程序設(shè)計(jì)
3.1 電路方案設(shè)計(jì)
根據(jù)題目要求,設(shè)計(jì)了系統(tǒng)控制板,主要包括STM32F103RCT6單片機(jī)、電源、降壓模塊、ZigBee、OLED、MPU6050模塊、紅外傳感器、電機(jī)驅(qū)動(dòng)、編碼器、舵機(jī)、OpenMV、K210等模塊的接線端口。
實(shí)現(xiàn)了用STM32F103RCT6單片機(jī)控制各個(gè)模塊運(yùn)行的功能,電路方案設(shè)計(jì)框圖如圖4所示。
圖4?電路結(jié)構(gòu)圖
3.2 程序設(shè)計(jì)
小車1需完成單個(gè)小車運(yùn)送藥品和兩車協(xié)同運(yùn)送藥品的任務(wù),程序設(shè)計(jì)流程圖見:
圖5? 小車1程序設(shè)計(jì)流程圖
4.2? 小車2的程序設(shè)計(jì)
小車2需完成兩車協(xié)同運(yùn)送藥品中送藥到同一中部病房和去不同遠(yuǎn)端病房取藥的任務(wù),程序設(shè)計(jì)流程圖見:
圖6? 小車2程序設(shè)計(jì)流程圖
05?
?最后
由于篇幅有限,過多的細(xì)節(jié)在此不放了,本篇F題的設(shè)計(jì)報(bào)告以及代碼,都已經(jīng)放到知識(shí)星球了,星球的朋友們可以直接獲取下載鏈接。
未加入星球的同學(xué)也可以獲取部分代碼和設(shè)計(jì)報(bào)告,可以添加微信:
還沒加入星球的同學(xué)可以加入,第一期開放100人,現(xiàn)在已經(jīng)有50人加入。
順帶著推薦下知識(shí)星球,之前發(fā)了朋友圈想做個(gè)付費(fèi)平臺(tái),至于為什么要做?
1. 答疑。
很多朋友都在微信上給我留言咨詢一些問題,一般我都會(huì)回復(fù),但看到一些朋友提問表達(dá)的方式:
我想學(xué)單片機(jī)該從哪里下手?
我想?yún)⒓颖荣?#xff0c;該如何學(xué)習(xí)?
我想轉(zhuǎn)行硬件,但軟件也不想丟,該咋辦?
這些問題太大了,真的無法回答。
其次,很多都是重復(fù)性的問題,反復(fù)回答,真的累死人。
大家可能不知道我微信總共加了多少人,三個(gè)微信號(hào),共1.7w人。可想而知,光回答問題我每天的工作量都很大了。
這也就導(dǎo)致為什么很多消息回復(fù)不及時(shí),我也有自己的工作,不可能時(shí)時(shí)刻刻守著微信給大家回消息。
也正因?yàn)榛貜?fù)消息不及時(shí),許多朋友會(huì)覺得我不禮貌,直接就刪除好友,我也哭笑不得。
這就可以引出第二點(diǎn):沉淀知識(shí)。
2. 知識(shí)星球是什么?
知識(shí)星球是一個(gè)付費(fèi)加入的社群,可以直接用小程序查看,也可以下載APP,有問答、打卡、作業(yè)、文件、圖片等功能。容易用來做知識(shí)沉淀,
3. 為什么不做微信群,QQ群?
微信群的缺點(diǎn)大家都知道,信息容易遺漏、分享的文件容易失效,無法積累。知識(shí)星球則彌補(bǔ)了這些缺點(diǎn)。而且微信群、QQ群加入的人形形色色,發(fā)廣告的,閑聊的,亂七八糟的一大堆。
知識(shí)星球?qū)Ρ任⑿派缛旱暮锰幨?#xff0c;它更像一個(gè)社區(qū),每天更新的內(nèi)容更容易沉淀且搜索,且價(jià)值度更高。
。。。。。。
4. 搭建一個(gè)圈子。
想做一個(gè)電子相關(guān)的圈子,付費(fèi)加入的朋友,肯定都是想來提升自己,付費(fèi)之后肯定會(huì)更珍惜,并且更注重知識(shí)方便的學(xué)習(xí)。
希望能在圈子里讓更多的球友建立聯(lián)系,內(nèi)推、招聘、工作經(jīng)驗(yàn)分享,對(duì)于學(xué)生,學(xué)校保研、比賽、等等。
同時(shí)也會(huì)邀請(qǐng)一些大廠的工程師、高校老師、優(yōu)秀的學(xué)長(zhǎng)學(xué)姐加入星球。
。。。
星球剛上線,現(xiàn)在價(jià)格199元/年,未畢業(yè)的學(xué)生,提供學(xué)信網(wǎng)截圖,99元/年,因?yàn)榫τ邢?#xff0c;可以維護(hù)的人數(shù)也是有限的,所以不會(huì)開放太多人。
價(jià)格貴?也就一兩毛一天。
不貴?也需要199塊錢。
第一期開放100人,現(xiàn)在已經(jīng)有50人加入。
就看大家如何去看待。
5. 知識(shí)星球介紹
想要加入的同學(xué),可以加微信:great_xiaolong,私聊,備注【知識(shí)星球】
總結(jié)
以上是生活随笔為你收集整理的全国一等奖,F题:智能送药小车。的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SQL 连接查询语法及使用(server
- 下一篇: 见识可能比聪明更重要!