購物小車設計
1. 總體設計思想
小車有乙個主控器,其餘部分包括有運動模組、機械臂模組、影象模式識別模組、尋跡導航模組及供電模組組成。由尋跡導航模組記錄小車的運動位置情況,當小車移動至指定位置時,採用攝像頭進行模式識別,若識別結果為預期值,則控制機械臂進行拾取目標物,之後再由循跡模組指引至預定地點進行卸貨。此種小車類似於乙個較為基礎的智慧型物流管理系統中的貨運機械人,兩者之間有著相似的功能模組。
2. 硬體設計
2.1步進電機[1]
步進電機是將電脈衝訊號轉變為角位移或線位移的開環控制電機,是現代數字程式控制系統中的主要執行元件,應用極為廣泛。在非超載的情況下,電機的轉速、停止的位置只取決於脈衝訊號的頻率和脈衝數,而不受負載變化的影響,當步進驅動器接收到乙個脈衝訊號,它就驅動步進電機按設定的方向轉動乙個固定的角度,稱為「步距角」,它的旋轉是以固定的角度一步一步執行的。可以通過控制脈衝個數來控制角位移量,從而達到準確定位的目的;同時可以通過控制脈衝頻率來控制電機轉動的速度和加速度,從而達到調速的目的。本設計採用42型步進電機,配有乙個tb6560步進電機驅動器。
2.2舵機[2]
舵機也叫伺服電機,最早用於船舶上實現其轉向功能,由於可以通過程式連續控制其轉角,因而被廣泛應用智慧型小車以實現轉向以及機械人各類關節運動中。舵機是小車轉向的控制機構,具有體積小、力矩大、外部機械設計簡單、穩定性高等特點,無論是在硬體設計還是軟體設計,舵機設計是小車控制部分重要的組成部分一般來講,舵機主要由以下幾個部分組成,舵盤、減速齒輪組、位置反饋電位計、直流電機、控制電路等。本設計採用mg996訊號舵機。
舵機的輸入線共有三條,如圖6所示,紅色中間,是電源線,一邊黑色的是地線,這輛根線給舵機提供最基本的能源保證,主要是電機的轉動消耗。電源有兩種規格,一是4.8v,一是6.0v,分別對應不同的轉矩標準,即輸出力矩不同,6.0v對應的要大一些,具體看應用條件;另外一根線是控制訊號線,一般為白色或者桔黃色,紅色為電源正極,黑色為地線,一般不會搞錯。
2.3紅外尋跡[3]
紅外尋跡模組的檢測原理概括講為利用是否接收到反射的紅外線來判斷小車車身位置是否在預定路線上。黑線的檢測原理是紅外發射管發射光線到路面,紅外光遇到白底則被反射,接收管接收到反射光,經施密特觸發器整形後輸出低電平;當紅外光遇到黑線時則被吸收,接收管沒有接收到反射光,經施密特觸發器整形後輸出高電平。通過判斷輸出的電平高低來判斷是否處於預定位置上。
2.4電源供電
本設計供電電池為聚合物組合電池,引數為標稱電壓24v、6000mah容量,實際輸出電壓在充滿電時可以達到25v左右,容量也超過6000mah。電池內裝有6串10a帶均衡充電功能保護板,電池適用於18v-25.2v電壓裝置,(功率120w左右或內)穩定直流供電裝置,輸出電壓約為18v-25v 要求電流/電壓過大的動力裝置(如:啟動瞬間電流過大超過10a,比如大電機,動力裝置如果啟動電流超過10a將不能正常工作)。因電池保護板是10a保護的,建議裝置長期(啟動電流除外)的使用電流在5a以內,稍微超過5a也可以。
2.5控制器供電
控制器採用飛思卡爾公司的stm32f103zet6晶元。該晶元外接晶振時最高工作頻率可以達到72mhz,處理器速度較快,滿足購物車的控制要求。晶元採用3.3v直流供電,由於聚合物電池輸出電壓為24v,所以採用ams1117-3.3晶元設計降壓電路對輸出電壓進行降壓至3.3v後用於控制器的供電。
3. 軟體設計
3.1步進電機控制
步進電機外接步進電機驅動器,每個步進電機配有乙個步進電機驅動器。本設計方案中步進電機採用24v供電,驅動器設有三個npn型三極體8050設計的導通電路。每個驅動器共有六根外接導線,其中三根需要接至24v電源,用於鏈結三極體的e極,其餘三根導線分別為脈衝訊號線、電機驅動方向控制線以及電機驅動使能訊號線。由於步進電機控制的特性,需要對其輸入脈衝訊號驅動步進電機的「步進」,設定stm32控制器的計數器來實現pwm波的輸出,進而控制步進電機的驅動。程式設計中pwm波的頻率可控、波形占空比可控,便於對步進電機進行各種驅動控制,使其更滿足機械人的控制需求。
3.2舵機控制
舵機採用5v直流電源供電,stm32微控制器輸出訊號為3.3v直流電壓,不能滿足舵機控制需要。因此需要將供電電源將壓至5v來給舵機供電,此處設計乙個24v-5v的降壓電路。降壓後的電壓輸出端接至三極體8050的e極,由三極體構成乙個導通電路,使得stm32微控制器輸出訊號可以實現對舵機的控制。
3.3紅外尋跡模組訊號接收
對紅外尋跡模組採用3.3v供電,使其輸出高低電平的訊號也為3.3v-0v,便於stm32微控制器的讀取控制。
3.4雙機串列埠通訊
影象模式識別模組採用膝上型電腦作為處理工具,採用python語言(語言為第三版),作業系統為linux作業系統,所以需要完成膝上型電腦與stm32控制器的雙機通訊。採用筆記本的串列埠輸出模式識別結果訊號,stm32控制器的串列埠通訊模組uart1接收筆記本輸出訊號。筆記本端需要接乙個usb轉串模組,也就是usb-ttl訊號線,通過該訊號線輸出的訊號可直接連線至stm32控制器,注意stm32控制器與筆記本端電源訊號的供地操作。此處訊號傳遞亦可改為無線傳輸模組,則是在電腦端採用藍芽主機來傳送訊號,stm32控制器端的uart1連線藍芽從機模組,進行基於藍芽的無線通訊,可以避免影象處理部分與stm32控制器的有線連線不方便。linux系統上需要編譯安裝pyserial函式庫,這是乙個專為串列埠設計的函式庫,呼叫其中函式可以使得呼叫串列埠的操作更加便捷。在python程式設計中,只要import該函式庫即可呼叫該函式庫中的函式,呼叫方便。
3.5模式識別演算法
基於linux ubuntu14.04作業系統進行影象處理演算法的實現。採用python 3語言編寫影象處理的演算法,演算法設計中呼叫了部分opencv2.4.9計算機視覺庫中的函式命令,使得演算法設計更加簡潔高效。當購物車移動至預定位置時,通過車載攝像頭對貨架上的商品進行影象採集,接著模式識別法處理影象資料對其進行判斷,識別出該貨架位置處的商品類別,接著通過串列埠輸出識別結果給stm32控制器。
4. 調校測試
完成各個功能模組的設計後,便是對模組的整合除錯使購物車完成自動移動、識別、取貨、運貨、卸貨操作。
第十六屆浙江省大學生程式設計競賽
目錄 e sequence in the pocket f abbreviation g lucky 7 in the pocket h singing everywhere i fibonacci in the pocket j welcome party k strings in the poc...
浙江省第十六屆大學生ACM程式設計競賽部分題解
sol 將陣列copy乙份,然後sort一下,找尋後面最多多少個元素在原陣列中保持有序,用總個數減去已經有序的就是我們需要移動的次數。sol 首字母不刪直接輸出,剩下的逐個判斷。注意一下 y 也是要刪的 sol 這題只要找7的倍數,所以可以直接暴力,如果是1e9 7這種比較大的數就不行了。既然可以暴...
2018 第十五屆浙江省大學生程式設計競賽總結
這一天過去了。上午出發到紫金港校區。吃完午飯短暫休息後就進場了。賽前又莫名的緊張 大概是因為第一次打省賽 好久沒打現場賽了 不得不說現場賽環境真的很嘈雜,可能是因為機房環境比較密閉。開場三人三題,然後zjh連過兩個簽到題。前乙個小時過了五題,已經有點落後了。我讀了下f感覺大概可以做,先上去寫了一會。...