日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

做个全国一等奖的小车,其实不难(F题:智能送药小车方案分享)

發布時間:2023/12/19 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 做个全国一等奖的小车,其实不难(F题:智能送药小车方案分享) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

01?

?

前 言

大家好,我是張巧龍,今天給大家帶來關于21年F題的分享:智能送藥小車,出了這個題目之后,咋一看,好像比較簡單。

不過大家慢慢做,越往后做越發現,坑越來越多。

第一個問題:數字識別率不高,我對識別率高低的看法:只要不到100%,哪怕出現1%的誤識別率,我認為都不行,為什么?

因為,題目明顯給出說明,每個項目只測試一次。也就是說,小車一旦出錯,就0分,沒有再測的機會。

第二個問題:小車巡線的問題,一談到巡線,大家想到的肯定是,循跡模塊(顏色識別傳感器),這個沒問題,可以用,也可以用攝像頭來尋跡。

不知道大家是否有發現過,車運動的軌跡都是直線,轉彎都是90度,循跡模塊或者攝像頭尋跡確實可以用。

但運動過程中,需要一直巡線,對攝像頭或者是循跡模塊的要求比較高,環境的光線要求比較穩定。

為了提高巡線的穩定性,我認為可以直接采用電機編碼器來寫閉環,將小車運動的路程直接固定死,每次都是走固定直線距離后再識別數字,拐彎也可以直接固定,畢竟都是90度。


當然,這個過程中,肯定需要顏色識別模塊或者攝像頭尋跡來做輔助。

來吧,看視頻展示,文字內容在后文。

【全國一等獎】F題:智能送藥小車

對了,由于是電機直接閉環,所以本視頻中小車的運動速度還可以繼續提升。

02

?

系統方案

2.0 摘要

以STM32單片機為核心、結合視覺識別技術,通過速度閉環來控制智能送藥小車,并實現雙車在預定軌道上送藥,取藥。

基本模塊主要包括主控、攝像頭、直流減速電機、驅動模塊,無線傳輸模塊,本設計主控選擇STM32F103RCT6。

在攝像頭識別中,采用雙攝像頭方案,K210用于識別數字和尋找對應數字并通過串口向主控發送識別信息,從而進入對應的病房,OpenMV用來尋跡,防止小車偏離預定軌道;

小車1,2通過ZiGBee來完成雙車通信,實現雙車協同運送的效果;通過電機編碼器反饋的信息設計小車的速度閉環控制系統,實現運輸距離的精準控制。

經過檢測發現,本設計具有識別速度快,識別精準度高,運輸穩定且效率高等優點。

2.1?方案設計

2.1.1 控制方案設計

根據題目要求,將小車系統分為4個基本模塊,包括主控模塊、電機驅動模塊、視覺檢測和識別模塊,無線通訊模塊,主控選擇STM32F103RCT6,通過速度閉環來實現電機驅動的精準控制。

視覺識別中,尋跡采用OpenMv攝像頭,數字識別采用K210攝像頭。

無線通信選擇ZIGBEE實現兩車之間的通訊,系統的總體設計框圖如圖1所示。

圖1 ?系統總體設計框圖

2.1.2?機械結構方案

由于題目要求小車的長寬高不能超過25cm*20cm*25cm,再加上賽道的寬度只有30cm,為了保證轉向的時候能夠避免碰到黑實線,我們采用雙驅動置于車身中間,車身前后分別裝置牛眼輪便于轉向。

根據設計要求和實際情況,兩個攝像頭安裝于車頭前端,OpenMv在下,K210在上,以便于識別和檢測。

由于識別數字時數字寬度較大,K210無法全部識別到數字,所以搭配舵機,實時調整攝像頭的位置來達到擴大視野范圍的目的。

2.2?數字識別方法

首先將1-8字模原比例打印出來,然后用K210進行模型訓練,模型訓練了幾千張模型,生成訓練樣本矩陣,一般樣本是以二維矩陣的方式存在文件當中,現在要將它們讀出來,進行適當的預處理,然后生成OpenCV能理解的數據結構。

其中包含了分別從不同的視角對圖像進行采集入庫,在通過NCC模板匹配訓練產生數字分類器,訓練樣本中的數字位置形態各異,因此讀入時需要進行規整化。

主要方法是先找到數字的邊界框,然后以寬和高中大的一邊為基準進行縮放和拉伸,從而使得其可以占滿整個表示單個樣本的矩陣。

再將其圖像二值化,進行腐蝕分割,前面通過學習產生了分類器,但我們輸入圖像中的數字并不能直接作為測試輸入。圖像中的數字筆畫有時并不規整,還可能相互重疊。

接下來,就可以對圖像進行分割了。由于我們的分類器只能對數字一個一個地識別,所以首先要把每個數字分割出來。分割完后就可以應用我們前面訓練好的分類器對分割結果進行識別。

2.3?自動尋徑方法

首先對圖像進行相關預處理,圖像采集和傳輸過程中可能產生噪點,通過圖像灰度化和圖像濾波減小對圖像處理的干擾。

其次攝像頭采集跑道上的紅線,通過硬件二值化處理,這里用到最大類間方差法(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提供反饋信息,控制電機進行自動尋徑。

2.4 小車電機運動閉環控制算法

依靠編碼器反饋數值,通過速度閉環解決對小車行駛距離的把控,本小車所采用的PID算法是閉環控制系統中常用的控制算法之一,其全稱為比例積分微分控制。

其傳遞函數如下:

再配合OpenMv二值化處理尋線輔助和K210數字識別并將相關數據通過串口反饋給主控板最終實現小車的精準控制。

通過配置串口的波特率便可以控制串口通訊的速率。

為保證數據接收正常,本設計通過對控制系統中的STM32F103RCT6單片機進行編寫通信協議程序,以防止無線接收模塊在受到干擾的情況下收到錯誤指令而使小車失控的情況發生。

03

?

程序設計

3.1??程序設計思路

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年電賽開賽前就說過,不知道大家還有沒有印象:

關于21年電賽,這些一定要熟悉!(點擊即可跳轉閱讀)

關于2021年電賽的一些想法,看到就是賺到!(點擊即可跳轉閱讀)

現在回過頭來看看,確實有一些參考價值。


由于篇幅有限,過多的細節在此不放了,有需要詳細設計報告以及代碼的,請加微信:great_xiaolong,加好友記得備注。

對了,近期會陸陸續續開源電賽所有題目的方案,有興趣的朋友們可以關注下。

當然,想來分享自己電賽心得體會的可以加我微信,進行投稿,一旦錄用,有稿費哦~


精彩推薦:點擊圖片即可跳轉閱讀

帶學生參加電賽,5個國一,2個國二!15個省獎!

【STM32入門】這個項目絕了,用手勢來產生波形!

電烙鐵焊錫到底有沒有毒?

近期會近期會開源電賽所有題目的方案,歡迎大家關注公眾號。

總結

以上是生活随笔為你收集整理的做个全国一等奖的小车,其实不难(F题:智能送药小车方案分享)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。