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