《物流搬運小車系統(tǒng)軟件設(shè)計》5800字(論文)_第1頁
《物流搬運小車系統(tǒng)軟件設(shè)計》5800字(論文)_第2頁
《物流搬運小車系統(tǒng)軟件設(shè)計》5800字(論文)_第3頁
《物流搬運小車系統(tǒng)軟件設(shè)計》5800字(論文)_第4頁
《物流搬運小車系統(tǒng)軟件設(shè)計》5800字(論文)_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

付費下載

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

物流搬運小車系統(tǒng)軟件設(shè)計目錄TOC\o"1-2"\h\u11959物流搬運小車系統(tǒng)軟件設(shè)計 1200431.1物流搬運小車整體功能流程設(shè)計 1297061.1.1物流搬運小車整體功能流程 1252861.1.2物流搬運小車整體功能優(yōu)缺點 2282451.2物流搬運小車傳感器模塊軟件設(shè)計 375091.3物流搬運小車通信接口模塊軟件設(shè)計 3206101.3.1通信接口模塊軟件方案設(shè)計 358581.3.2通信接口模塊軟件設(shè)計 46971.4物流搬運小車LCD顯示模塊軟件設(shè)計 697881.5物流搬運小車功率驅(qū)動模塊軟件設(shè)計 6232441.5.1功率驅(qū)動模塊軟件方案設(shè)計 690221.5.2功率驅(qū)動模塊軟件設(shè)計 833791.6物流搬運小車AprilTAG識別程序軟件設(shè)計 9256991.6.1對AprilTAG識別原理 9171101.6.2物流搬運小車AprilTAG識別程序設(shè)計 101.1物流搬運小車整體功能流程設(shè)計1.1.1物流搬運小車整體功能流程本次物流搬運小車其整體功能流程圖如下圖1.1所示。圖1.1物流搬運小車整體功能流程圖本物流搬運小車在上電初始化后,調(diào)用攝像頭模塊對AprilTAG進行檢測,如果沒有檢測到AprilTAG,攝像頭會繼續(xù)檢測,如果檢測到了會對AprilTAG進行識別并將識別的結(jié)果發(fā)送至串行終端,并且會通過串口通信的方式發(fā)送給我們的物流搬運小車的主控芯片,讓主控芯片做出對應(yīng)的處理,在對獲得的識別結(jié)果進行LCD屏幕顯示的同時,主控芯片發(fā)送PWM信號通過驅(qū)動芯片到達電機,從而小車做出對應(yīng)的動作。1.1.2物流搬運小車整體功能優(yōu)缺點本次物流搬運小車的設(shè)計,是基于AprilTAG識別的,屬于機器視覺,比那些基于磁導(dǎo)航的物流搬運小車定位更為精確,這樣的導(dǎo)航方式使得本次設(shè)計的物流搬運小車具有結(jié)構(gòu)小巧靈活,對物流搬運小車鋪設(shè)路徑以及改變物流搬運小車的路徑比較方便等特點,而且在物流搬運小車運行過程中,對聲光沒有干擾,不會影響到別的依靠聲光而工作的倉庫機器人。本次基于AprilTAG的物流搬運小車,對于其路徑的問題可能需要定期的維護,防止AprilTAG被磨壞,而且可能會對倉庫的場地平整程度有很高的要求,如果場地不平整,AprilTAG可能不會被容易地檢測出來,從而導(dǎo)致小車的路徑出錯。1.2物流搬運小車傳感器模塊軟件設(shè)計本物流搬運小車的傳感器模塊的軟件設(shè)計主要是打開調(diào)試攝像頭,其流程圖如下圖1.2所示。圖1.2物流搬運小車傳感器模塊軟件設(shè)計流程圖通過import導(dǎo)入攝像頭對象sensor,通過調(diào)用攝像頭對象sensor的reset方法將攝像頭進行初始化配置,通過調(diào)用set_pixformat方法對攝像頭進行設(shè)置像素格式,在設(shè)置像素格式這個方法內(nèi),可以設(shè)置成GRAYSCAL灰度圖像和RGB565彩色圖像,彩色圖像的處理速度要比灰色圖像慢。然后通過調(diào)用set_framesize方法設(shè)置每幀的大小,在本程序中設(shè)置為QQVGA模式即160*120圖像尺寸。再之后是設(shè)置skip_frames方法讓攝像頭在等待時間后變得穩(wěn)定。用相機拍攝一張照片的方法是snapshot,通過它返回image對象,然后可讓LCD屏顯示。1.3物流搬運小車通信接口模塊軟件設(shè)計1.3.1通信接口模塊軟件方案設(shè)計在stm32最小系統(tǒng)板這部分,單片機接收數(shù)據(jù)的方式有中斷和查詢兩種方式,所謂的查詢方式就是在物流搬運小車的程序主循環(huán)當(dāng)中,不斷地去循環(huán)檢查標(biāo)志位、去接收數(shù)據(jù),如果標(biāo)志位檢測為1就說明我們接收到了串口數(shù)據(jù),然后再去對串口接收的數(shù)據(jù)進行處理,這樣做的好處是在編程上比較簡單,并且物流搬運小車主程序不會被中斷,當(dāng)我們需要接收串口數(shù)據(jù)的時候再去接收查詢,不需要接收數(shù)據(jù)的時候甚至可以不去管它,但是查詢方式有一個很致命的缺點,就是失去了實時性。因為在我們的編程當(dāng)中,查詢程序只能作為整個主程序其中的一小部分,我們還會有其他的程序功能需要處理實現(xiàn),假設(shè)我們在做一個項目的時候,串口接收到的數(shù)據(jù)必須要求馬上去處理,這種時候如果是等待主函數(shù)查詢到串口的標(biāo)志位,那么時間上可能已經(jīng)過去了很久,而本次物流搬運小車系統(tǒng)中,必須解決對實時性及時處理的要求,所以在stm32最小系統(tǒng)板的通信接口模塊軟件設(shè)計中我選用了串口中斷的方式去接收PYAI-K210開發(fā)板發(fā)來的數(shù)據(jù)。1.3.2通信接口模塊軟件設(shè)計物流搬運小車的通信接口模塊分為PYAI-K210開發(fā)板和stm32最小系統(tǒng)板,其中PYAI-K210開發(fā)板通信接口模塊的軟件流程圖如下圖1.3所示。圖1.3PYAI-K210開發(fā)板通信接口模塊軟件設(shè)計流程圖在PYAI-K210開發(fā)板的通信接口模塊軟件設(shè)計中,首先通過import導(dǎo)入串口模塊,然后配置串口的引腳IO6和IO7,之后調(diào)用machine.UART方法創(chuàng)建了UART對象,配置了其串口編號、波特率、數(shù)據(jù)位、校驗位、停止位、串口接收超時的時間和串口接收緩沖的大小。然后調(diào)用UART.read方法可以讀取串口中緩沖的數(shù)據(jù),調(diào)用UART.write可以通過串口發(fā)送數(shù)據(jù)。stm32最小系統(tǒng)板的通信接口模塊的軟件流程圖如下圖1.4所示。圖1.4stm32最小系統(tǒng)板通信接口模塊軟件設(shè)計流程圖在stm32最小系統(tǒng)板的通信接口模塊軟件設(shè)計中首先進行了其端口、系統(tǒng)時鐘的初始化,之后配置了中斷模式,最后對其串口進行了配置和初始化,設(shè)置了其波特率,數(shù)據(jù)格式的字長,配置其停止位、校驗位,然后對其初始化,選用ENABLE開啟串口中斷。在main函數(shù)里調(diào)用了這四個初始化配置,當(dāng)檢測到指定的USART發(fā)來數(shù)據(jù)時,程序就會發(fā)生串口中斷,去執(zhí)行串口中斷的服務(wù)程序,檢測標(biāo)志位并去接收PYAI-K210開發(fā)板發(fā)來的數(shù)據(jù)。使用這種方式進行處理,每次串口在收到數(shù)據(jù)之后,都會自動地中斷主函數(shù)中的程序,直接跳轉(zhuǎn)到中斷服務(wù)的程序,執(zhí)行接收后,再跳回到主函數(shù)內(nèi)容中。這種使用中斷的方式,能夠保證串口在收到數(shù)據(jù)的一瞬間,馬上跳轉(zhuǎn)到中斷服務(wù)程序,來做及時的處理,不會有任何時間上的耽擱,對我們本次物流搬運小車的系統(tǒng)來說,是非常合適的。而在物流搬運小車系統(tǒng)的中斷服務(wù)函數(shù)當(dāng)中,加入了一條判斷語句,if(USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET),在這條判斷語句中加入了一個函數(shù)USART_GetITStatus,它的功能是檢查指定的USART中斷是否發(fā)生,在這里函數(shù)里我們處理的是USART_IT_RXNE接收中斷,因為有很多種方式都能夠發(fā)生中斷進入中斷服務(wù)函數(shù),比如發(fā)送中斷、溢出錯誤中斷等等,所以必須確保我們處理到的中斷是接收中斷才可以。所以在中斷服務(wù)函數(shù)中,只有我們的串口接收到數(shù)據(jù),才會進入到中斷服務(wù)函數(shù)。如果我們需要接收多個數(shù)據(jù),可以創(chuàng)建一個數(shù)組用來接收多個數(shù)據(jù)信息。1.4物流搬運小車LCD顯示模塊軟件設(shè)計本次物流搬運小車的LCD顯示模塊選用了LCD9648液晶屏,其軟件設(shè)計流程圖如下圖1.5所示。圖1.5物流搬運小車LCD顯示模塊軟件設(shè)計流程圖在程序的開始時導(dǎo)入了LCD9648模塊即LCD9648.h文件,在LCD9648.h文件中我們共用到了三個被定義好的函數(shù),初始化函數(shù)、界面清空函數(shù)、顯示數(shù)字函數(shù)。在本次物流搬運小車的設(shè)計中,我根據(jù)小車獲取到的AprilTAG結(jié)果不同,總共設(shè)置了5個檔位,其中在0號檔位的時候是小車的初始檔位,在該檔位下表示小車已經(jīng)啟動,準(zhǔn)備工作。在1號檔位的時候表示是剎車擋位,當(dāng)小車在工作的時候掃描獲得了1號檔位就要進行剎車停止,等待工人們給小車裝貨或者卸貨。在2號檔位的時候表示是小車的直線運行擋位,小車會沿著直線一直行走直到掃描獲得別的檔位。在3號檔位的時候是小車的左轉(zhuǎn)檔位,當(dāng)小車掃描到3號檔位的信息時候,會進行左轉(zhuǎn)向,如果小車在直線行駛而顯示3號檔位則表示小車剛經(jīng)過左轉(zhuǎn)而運行過來,也便于工人們判斷小車來時的方向。同理在4號檔位的時候是右轉(zhuǎn)檔位,小車在掃描到信息后會進行右轉(zhuǎn)向。而程序中LCD主要的功能就是去顯示小車的這五個檔位。1.5物流搬運小車功率驅(qū)動模塊軟件設(shè)計1.5.1功率驅(qū)動模塊軟件方案設(shè)計本次物流搬運小車通過驅(qū)動芯片去控制小車的電機運作,在控制方法上有兩種選擇,首先第一種控制方法是在程序中調(diào)用延時函數(shù)來控制物流搬運小車的電機運作,程序調(diào)用延時函數(shù)產(chǎn)生一段時間高電平,再調(diào)用延時函數(shù)產(chǎn)生一段時間互補的低電平,即通過在一段時間內(nèi)延時高低電平時間來模擬PWM輸出。因為調(diào)用延時函數(shù)所采用的是stm32單片機內(nèi)部自帶的滴答定時器,所以精度方面會很高,能夠達到控制物流搬運小車電機的精度要求。但是如果本次物流搬運小車的系統(tǒng)選擇調(diào)用延時函數(shù)來控制小車的電機工作,會導(dǎo)致STM32F103C8T6該芯片的工作效率低,因為在主循環(huán)中調(diào)用延時函數(shù)是需要占用芯片的工作時間,我們利用stm32最小系統(tǒng)板控制物流搬運小車電機的時候,就不能實時性很高地去處理其他工作。所以在本次物流搬運小車的系統(tǒng)中我并沒有選擇延時函數(shù)來控制電機,而是采用了第二種控制方法,選用stm32單片機內(nèi)部配置的專用PWM脈寬調(diào)制器,通過PWM脈寬調(diào)制器來產(chǎn)生能夠控制物流搬運小車電機工作的高低電平。本系統(tǒng)中選用PWM來控制電機,物流搬運小車的芯片就不需要參與物流搬運小車電機的控制工作,物流搬運小車的芯片可以去控制其他的任務(wù),在很大的程度上提高了本次物流搬運小車的系統(tǒng)內(nèi)部工作效率。PWM即脈沖寬度調(diào)制,它可以簡單的稱作為脈寬調(diào)制,也就是我們常說的占空比。它是利用單片機的數(shù)字輸出部分也就是高低電平的輸出,來對模擬電路來進行有效控制的一種很有效的方式,這也是PWM最為核心的應(yīng)用,其應(yīng)用廣泛,在測量、通信和功率控制等領(lǐng)域應(yīng)用頗多。在本次物流搬運小車的系統(tǒng)中利用PWM信號來控制小車電機進行運作,實際上就是利用高低電平所占用的時間長度來決定物流搬運小車電機轉(zhuǎn)動速度的快慢,其本質(zhì)上是一種模擬控制。PWM的特性是每個PWM的周期它的長度固定不變的,PWM多個周期不斷地輸出就產(chǎn)生了PWM的頻率。也就是說,在脈寬調(diào)制中其頻率是固定不變的,唯一變化的是PWM信號中高電平和低電平時間長短的關(guān)系。高電平的長度短一點其對應(yīng)的低電平就要長一點,所以PWM所需要調(diào)制的最本質(zhì)最核心的東西就是高低電平比例的變化,通過不同的高低電平比例,來達到不同的控制效果,這也就是PWM脈寬調(diào)制的最基本原理。在單片機的內(nèi)部,本身是沒有時間這個概念的,其內(nèi)部時間的產(chǎn)生本質(zhì)是通過計數(shù)來實現(xiàn)的,定時器實際上就是以一個時鐘周期為單位,以單片機其主頻晶振的頻率為基準(zhǔn)。每過一個時鐘周期單片機就會計一位,計數(shù)器可以從0開始累加,也可以從設(shè)定的值開始遞減,每隔一個機械周期即一個主晶振頻率的周期,計數(shù)器就會加一或者減一,當(dāng)加到或者減到頭的時候,產(chǎn)生溢出信號,將計數(shù)器清零重新開始。在stm32中脈寬調(diào)制就是由定時器產(chǎn)生,其包括了一個高級定時器TIM1,外加三個普通的定時器TIM2、3、4。其中TIM2、3、4它們?nèi)齻€定時器是通用的標(biāo)準(zhǔn)定時器,其三個可以同步運行,且它們?nèi)齻€每個都擁有一個16位的預(yù)分頻器和16位的自動加載遞加或者遞減的計數(shù)器,擁有四個相互獨立的可以用于PWM輸出的通道,也就是說這三個通用的標(biāo)準(zhǔn)定時器可以實現(xiàn)這四個功能其中就有我們需要的PWM。在本次物流搬運小車的系統(tǒng)中,我選用了TIM3、4兩個定時器來控制小車的兩個電機。1.5.2功率驅(qū)動模塊軟件設(shè)計本次物流搬運小車功率驅(qū)動模塊的軟件設(shè)計流程圖如下圖1.6所示。如圖在物流搬運小車功率驅(qū)動模塊的軟件設(shè)計程序中,在程序開始的時候?qū)肓薖WM.h文件,這是使用PWM功能來控制電機的相關(guān)驅(qū)動。在主程序里面調(diào)用了TIM3_CH1_PWM_Init與TIM4_CH2_PWM_Init這兩個函數(shù),這兩個函數(shù)就是定時器的初始化函數(shù),它們負責(zé)初始化定時器三的通道1和定時器四的通道2。這兩個函數(shù)有兩個參數(shù),其第一個參數(shù)是定時器的溢出值A(chǔ)RR,當(dāng)定時器計數(shù)到與ARR相等的數(shù)值時,定時器會產(chǎn)生溢出的信號,并清零。其第二個參數(shù)是分頻系數(shù),它的功能是對定時器的時鐘來源進行分頻,如定時器所使用的定時器使用的時鐘是72MHz,則可通過第二個參數(shù)對時鐘頻率進行分頻,分頻之后所輸入的時鐘頻率變小,定時器的計數(shù)時間會變長,相當(dāng)于計時時間變慢,這樣能夠達到更長時間的計時效果,通過加大分頻系數(shù),可以達到更長時間的定時效果。然后調(diào)用TIM_SetCompare這個函數(shù)對定時器的CCR值進行設(shè)置,CCR即PWM占空比,其共有兩個參數(shù),第一個參數(shù)是定時器的名字,選擇需要設(shè)置的定時器。其二個參數(shù)是CCR值,也就是對其高低電平比例進行設(shè)置,在本代碼中ARR值為499,當(dāng)我們CCR值設(shè)置為499時,全為低電平,小車停止。在小車運動過程中為了防止其速度過快而帶來的各種安全隱患,所以設(shè)置了其運動時CCR值為300。在主程序中對兩個定時器3、4進行初始化,設(shè)置了其CCR初始值為499也就是小車處于第0號檔位,停止等待的階段。之后如果接收到了來自PYAI-K210開發(fā)板傳來的數(shù)據(jù),那么就會進入串口中斷函數(shù),當(dāng)接收到2號檔位的信息時,定時器3、4的CCR值全部設(shè)置為300,讓它不至于過快的進行直線行駛。當(dāng)接收到1號檔位的信息時,兩個定時器的CC值變?yōu)?99,進行剎車操作,等待工人對物流搬運小車進行裝卸貨物。當(dāng)接收到3號4號檔位的信息時,就會讓其中一個定時器的CCR值為300,另一個CCR值為499,并且延時一小段時間,這段時間就是小車進行轉(zhuǎn)向的時間,過了這段時間之后再次讓兩個定時器CCR值變?yōu)?00,讓小車再轉(zhuǎn)向后繼續(xù)前進。圖1.6物流搬運小車功率驅(qū)動模塊軟件設(shè)計流程圖1.6物流搬運小車AprilTAG識別程序軟件設(shè)計1.6.1對AprilTAG識別原理AprilTAG是一種基準(zhǔn)標(biāo)志,它與二維碼非常的相似,但是與二維碼的復(fù)雜程度比起來還是簡單了不少,并且能夠滿足實時性的要求,AprilTAG標(biāo)記在機器視覺這個領(lǐng)域內(nèi)要比二維碼更有用處,因為可以通過AprilTAG計算出位置、方向等許多信息來完成各種任務(wù)。通過識別AprilTAG可以獲得大致兩種信息:其id信息與其3d位置,而在本次物流搬運小車的設(shè)計中,我們選擇將AprilTAG貼在地面上,以便小車上鏡頭朝下的攝像頭可以檢測識別的瞬間進行線路的調(diào)整,所以在本次AprilTAG的識別程序中,我只針對了AprilTAG的id進行了識別,這樣既可以模擬物流小車在倉庫情境下的工作情況,也會讓小車在針對AprilTAG識別結(jié)果做出反應(yīng)的代碼中變得不那么復(fù)雜。AprilTAG有許多的種類,在本次設(shè)計中選用MaixPy自帶的AprilTAG生成器所推薦的TAG36H11這個種類。AprilTAG的識別過程流程圖如下圖1.7所示。圖1.7AprilTAG識別過程流程圖AprilTAG的識別過程大致可以分為三個步驟。第一個步驟是尋找一個圖像,并檢測出這個圖像的邊緣。而第二步則就是根據(jù)檢測出來的這個圖像的邊緣進行算法篩選,在這個過程中會運用一種叫邊緣結(jié)構(gòu)分析的算法,用該算法首先會對獲得的邊緣進行剔除,剔除的主要是那些不是直線邊緣的圖像,然后在直線的邊

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論