版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 學 生 畢 業(yè) 設 計(論 文)</p><p> 2014年5月28 日</p><p> 課題名稱基于GT2440的智能循跡小車的研究與設計</p><p> 姓 名</p><p> 學 號</p><p> 學 院信息科學與工程學院</p><p&g
2、t; 專 業(yè)計算機科學與技術</p><p> 指導教師</p><p><b> 目 錄</b></p><p><b> 摘 要 1</b></p><p><b> 關鍵詞1</b></p><p> Abstract.2<
3、;/p><p> Key Words2</p><p><b> 1 緒論3</b></p><p> 1.1 循跡控制發(fā)展現(xiàn)狀和趨勢3</p><p> 1.2 課題研究的意義3</p><p> 2 智能循跡的技術背景5</p><p> 2.1
4、 圖像預處理算法5</p><p> 2.2 設備驅動5</p><p> 2.3 ARM簡介6</p><p> 3 嵌入式Linux開發(fā)平臺的搭建7</p><p> 3.1 OpenCV在GT2440上的移植7</p><p> 3.1.1、GT2440開發(fā)平臺搭建7</p>
5、;<p> 3.1.2、移植OpenCV所需的資源包匯總8</p><p> 3.1.3、安裝交叉編譯器9</p><p> 3.1.4、交叉編譯OpenCV所需庫9</p><p> 4 智能循跡實現(xiàn)13</p><p> 4.1 二值化13</p><p> 4.2 邊緣檢測
6、14</p><p> 4.3 路徑提取16</p><p> 5 電機控制設計18</p><p> 5.1 電機驅動18</p><p> 5.1.1 電機驅動電路18</p><p> 5.1.2 驅動的編譯加載18</p><p> 5.1.3 直流電機驅動19
7、</p><p> 6 模塊聯(lián)合測試與總結21</p><p><b> 參考文獻22</b></p><p><b> 致 謝23</b></p><p> 基于GT2440的智能循跡小車的研究與設計</p><p> 摘 要: 本文是基于GT2440的智
8、能尋跡小車,通過攝像頭采集視頻數(shù)據(jù),OpenCV算法處理,將視頻幀里的軌跡路徑提取出來,實時的傳入相關控制程序,控制電機的轉向來尋跡,從而達到智能控制小車的目的。隨著時代的進步, 科技的發(fā)展,工業(yè)生產(chǎn)正在向著自動化, 智能化的階段進步以及對人性化的要求,對各種智能機器人的要求也越來越高。智能循跡小車技術可以應用于無人駕駛機動車,無人工廠、倉庫、服務機器人、未知路線探測和人類不能存在或長期存在等環(huán)境中;通過功能擴展,小車具有在復雜地形條件
9、下礦藏探測的功能。 循跡小車的研究重點是對軌跡的自動識別與自動校正,并在行進穩(wěn)定的情況下進行其他拓展功能,這對整個小車系統(tǒng)有很高的要求。</p><p> 關鍵詞: 智能循跡;OpenCV;電機</p><p> Based on the Research of Intelligent Tracking </p><p> GT2440 Car and Des
10、ign</p><p> Abstract: This thesis is based on GT2440 development board which is the mother board of the intelligent tracing car, and the video data is gathered through the camera, OpenCV algorithm processin
11、g, picking up the trajectory path in the video frames, the introduction of real-time relevant control program, turn to tracing control motor, so as to achieve the aim of the intelligent control of the car. With the devel
12、opment of science and technology, industrial production becomes automation, intelligen</p><p> Key Words: intelligent tracking;OpenCV;electrical machine</p><p><b> 1 緒論</b></p&g
13、t;<p> 1.1 循跡控制發(fā)展現(xiàn)狀和趨勢</p><p> 目前,在企業(yè)生產(chǎn)技術不斷提高、對自動化技術要求不斷加深的環(huán)境下,智能車輛以及在智能車輛基礎上開發(fā)出來的產(chǎn)品已成為自動化物流運輸、柔性生產(chǎn)組織等系統(tǒng)的關鍵設備。世界上許多國家都在積極進行智能車輛的研究和開發(fā)設計。移動機器人是機器人學中的一個重要分支,出現(xiàn)于20世紀06年代。當時斯坦福研究院(SRI)的Nils Nilssen和Cha
14、rles Rosen等人,在1966年至1972年中研制出了取名shakey的自主式移動機器人,目的是將人工智能技術應用在復雜環(huán)境下,完成機器人系統(tǒng)的自主推理、規(guī)劃和控制。從此,移動機器人從無到有,數(shù)量不斷增多,智能車輛作為移動機器人的一個重要分支也得到越來越多的關注智能小車,是一個集環(huán)境感知、規(guī)劃決策,自動行駛等功能于一體的綜合系統(tǒng),它集中地運用了計算機、傳感、信息、通信、導航及白動控制等技術,是典型的高新技術綜合體。</p&g
15、t;<p> 隨著時代的進步, 科技的發(fā)展, 工業(yè)生產(chǎn)正在向著自動化, 智能化的階段進步以及對人性化的要求, 對各種智能機器人的要求也越來越高. 智能循跡小車技術可以應用于無人駕駛機動車, 無人工廠、倉庫、服務機器人、未知路線探測和人類不能存在或長期存在等環(huán)境中; 通過功能擴展, 小車具有在復雜地形條件下礦藏探測的功能。</p><p> 1.2 課題研究的意義</p><
16、p> 本課題研究的是基于GT2440的智能循跡小車的研究,本課題的意義在于:</p><p> 智能化的階段進步以及對人性化的要求, 對各種智能機器人的要求也越來越高。 智能循跡小車技術可以應用于考古、機器人、醫(yī)療器械等許多方面。尤其是 在足球機器人研究方面具有很好的發(fā)展前景。無人駕駛機動車, 無人工廠、倉庫、服務機器人、未知路線探測和人類不能存在或長期存在等環(huán)境中;通過功能擴展, 小車具有在復雜地形條
17、件下礦藏探測的功能。</p><p> 1.3 課題研究的主要工作</p><p> 本課題的主要工作如下:</p><p> (1)OpenCV在GT2440上的移植;</p><p> ?。?)進行路徑識別;</p><p> ?。?)通過GPIO口驅動編程控制小車電機轉動。</p><
18、p> 2 智能循跡的技術背景</p><p> OpenCV于1999年由Intel建立,如今由Willow Garage提供支持。OpenCV是一個基于[1](開源)發(fā)行的跨平臺計算機視覺庫,可以運行在Linux、Windows和Mac OS操作系統(tǒng)上。它輕量級而且高效——由一系列 C 函數(shù)和少量 C++ 類構成,同時提供了Python、Ruby、MATLAB等語言的接口,實現(xiàn)了圖像處理和計算機視覺方
19、面的很多通用算法。[2]最新版本是2.4.7。</p><p> OpenCV 擁有包括 500 多個C函數(shù)的跨平臺的中、高層 API。它不依賴于其它的外部庫——盡管也可以使用某些外部庫。</p><p> OpenCV 為Intel® Integrated Performance Primitives (IPP) 提供了透明接口。 這意味著如果有為特定處理器優(yōu)化的的 IPP
20、 庫, OpenCV 將在運行時自動加載這些庫。</p><p> 2.1 圖像預處理算法</p><p><b> 膨脹腐蝕算法</b></p><p> 腐蝕和膨脹是最基本的形態(tài)學運算。腐蝕是消除物體圖像無用點的一種過程,其結果是使剩下的物體沿周邊比處理前小幾個像素的面積,能有效地去除二值圖像中小且無意義的圖像元素集合,可應用于二值
21、圖的去噪處理;膨脹是將與物體接觸的所有點合并到該物體的過程,其結果是使物體的面積增大了相應數(shù)量的像素點,能有效地填補分割后物體中的空洞及合并相隔較少像素的兩個區(qū)域。本文中先后多次應用腐蝕、膨脹算法對待測圖像進行預處理并取得了較好的效果。</p><p><b> (2)邊緣檢測算法</b></p><p> 函數(shù) cvCanny 采用 CANNY 算法發(fā)現(xiàn)輸入圖像
22、的邊緣而且在輸出圖像中標識這些邊緣。threshold1和threshold2 當中的小閾值用來控制邊緣連接,大的閾值用來控制強邊緣的初始分割。 </p><p><b> 2.2 設備驅動</b></p><p> 設備驅動程序是介于硬件和Linux內(nèi)核之間的軟件接口,是一種低級的、專用于某一硬件的軟件組件。Linux有兩種方式使用設備驅動程序
23、:直接編澤到內(nèi)核中;在運行時加載(也就是內(nèi)核模塊)。Linux下的設備驅動程序[7]是一些用于完成不同任務的函數(shù)的集合,通過這些函數(shù)使得Linux下的設備猶如普通文件一般。因此對于應用程序來說設備只是一個普通的文件,應用程序可以像操作普通文件一樣對硬件設備進行打開、關閉、讀、寫、IO控制等操作。</p><p> 2.3 ARM簡介</p><p> ARM(Advanced RIS
24、C Machines),既可以認為是一個公司的名字,也可以認為是對一類微處理器的通稱,還可以認為是一種技術的名字。1991年ARM公司成立于英國劍橋,主要出售芯片設計技術的授權。目前,采用ARM技術知識產(chǎn)權(P)核的微處理器,即我們通常所說的ARM微處理器,已遍及工業(yè)控制、消費類電子產(chǎn)品、通信系統(tǒng)、網(wǎng)絡系統(tǒng)、無線系統(tǒng)等各類產(chǎn)品市場,基于ARM技術的微處理器應用約占據(jù)了32位RISC微處理器75%以上的市場份額,ARM技術正在逐步滲入到我
25、們生活的各個方面。</p><p> 3 嵌入式Linux開發(fā)平臺的搭建</p><p> 本章詳述了嵌入式Linux開發(fā)平臺的搭建,包括內(nèi)核移植,根文件系統(tǒng)制作等。主要是為本系統(tǒng)開發(fā)搭建軟件平臺,對于嵌入式項目開發(fā)這是尤為關鍵的一步,需要充分考慮到后續(xù)應用程序設計開發(fā)中需要使用的資源。例如,本設計在內(nèi)核版本的選擇上,即充分考慮到對USB攝像頭的驅動支持。</p>&l
26、t;p> 3.1 OpenCV在GT2440上的移植</p><p> 3.1.1 GT2440開發(fā)平臺搭建</p><p> Xshell軟件在Windows系統(tǒng)下安裝后,新建會話是將設置如下:</p><p> a)會話基本屬性設置</p><p><b> b)串口設置</b></p>
27、<p> 圖3.1 Xshell會話設置</p><p> 會話設置成功后,鏈接串口線,并將串口設置為與目標板相同的波特率115200。開啟目標板電源就可以對GT2440目標板進行操作,如下圖所示:</p><p> 圖3.2 Xshell連接GT2440</p><p> 3.1.2 移植OpenCV所需的資源包匯總</p>&l
28、t;p> ----jpegsrc.v6b.tar.gz(jpeg函數(shù)庫)</p><p> ----libpng-1.2.18.tar.gz(png函數(shù)庫)</p><p> ----zlib-1.2.3.tar.gz(z函數(shù)庫)</p><p> ----x264-snapshot-20100410-2245.t
29、ar.bz2(x264函數(shù)庫)</p><p> ----yasm-0.7.2.tar.gz(匯編編譯器,編譯x264時需要用到)</p><p> ----xvidcore-1.3.2.tar.gz(xvid函數(shù)庫)</p><p> ----ffmpeg-0.5.3.tar.bz2(ffmpeg源碼包)</p&g
30、t;<p> ----OpenCV-2.0.0.tar.bz2(OpenCV源碼包)</p><p> ----(arm-linux-gcc-4.3.2.tgz (交叉編譯工具鏈)</p><p> 說明:(1)以上資源包中ffmpeg是為了OpenCV能夠處理視頻,而ffmpeg依賴于x264和xvid兩個庫,而交叉編譯libx264時需要
31、用到匯編編譯器yasm。</p><p> 3.1.3 安裝交叉編譯器</p><p> #tar -zvxf arm-linux-gcc-4.3.2.tgz -C /root/</p><p><b> 添加環(huán)境變量</b></p><p> #vim /etc/environment</p&g
32、t;<p> 在路徑中添加/root/arm/4.3.2/bin</p><p><b> 刷新環(huán)境變量:</b></p><p> #source /etc/enviroment</p><p> 3.1.4 交叉編譯OpenCV所需庫</p><p> #tar -zvxf zlib-1.
33、2.3.tar.gz</p><p> #cd zlib-1.2.3</p><p> #CC=arm-linux-gcc ./configure --prefix=/root/arm/4.3.2/arm-none-linux-gnueabi --shared</p><p><b> #make</b></p>&
34、lt;p> #make install</p><p> 交叉編譯libjpeg</p><p> #tar –zvxf jpegsrc.v6b.tar.gz</p><p> #cd jpeg-6b</p><p> # ./configure --prefix=/root/arm/4.3.2/arm-none-lin
35、ux-gnueabi --enable-shared --enable-static</p><p> 修改生成的Makefile文件:</p><p> CC=gcc改為CC=arm-linux-gcc</p><p> AR=ar rc改為AR=arm-linux-ar rc</p><p> AR2=ranlib改為AR2=
36、arm-linux-ranlib</p><p><b> #make</b></p><p> 需在/root/arm/4.3.2/arm-none-linux-gnueabi目錄下創(chuàng)建/man/man1目錄,才能執(zhí)行安裝命令。</p><p> #cd /root/arm/4.3.2/arm-none-linux-gnueabi&l
37、t;/p><p> #mkdir man</p><p> #mkdir man/man1</p><p> #cd /root/need_to_cross_compile_version2/libjpeg-6b</p><p> #make install</p><p> 交叉編譯libpng</p&g
38、t;<p> #tar –zvxf libpng-1.2.18.tar.gz</p><p> #cd libpng-1.2.18</p><p> #./configure --prefix=/root/arm/4.3.2/arm-none-linux-gnueabi --enable-shared --enable-static --host=arm-linux&l
39、t;/p><p><b> #make</b></p><p> #make install</p><p><b> 交叉編譯yasm</b></p><p> #tar –zvxf yasm-0.7.2.tar.gz</p><p> #cd yasm-0.7.2&
40、lt;/p><p> #./configure --prefix=/root/arm/4.3.2/arm-none-linux-gnueabi --enable-shared --enable-static --host=arm-linux#make#make install</p><p> 交叉編譯libx264</p><p> #tar –jvxf x
41、264-snapshot-20100410-2245.tar.bz2</p><p> #cd x264-snapshot-20100410-2245</p><p> #CC=arm-linux-gcc ./configure --enable-shared --host=arm-linux --disable-asm --prefix=/root/arm/4.3.2/arm-non
42、e-linux-gnueabi#make#make install</p><p> 交叉編譯libxvid</p><p> #tar –zvxf xvidcore-1.3.2.tar.gz</p><p> #cd xvidcore-1.3.2</p><p> #./configure --host=arm-linux
43、60; --disable-assembly --prefix=/root/arm/4.3.2/arm-none-linux-gnueabi#make#make install</p><p> 交叉編譯ffmpeg</p><p> #tar –jxvf ffmpeg-0.5.3.tar.bz2</p><p> #cd ffmpeg-0.5.3<
44、;/p><p> #./configure --prefix=/root/arm/4.3.2/arm-none-linux-gnueabi --enable-shared --disable-static --enable-gpl --enable-cross-compile --arch=arm --disable-stripping --target-os=linux --disable-ffserver --
45、enable-libx264 --enable-libxvid --cc=arm-linux-gcc --enable-swscale</p><p> 此處將會檢測libx264 libxvid安裝是否正確,以及版本是否是ffmpeg支持的,配置無誤則編譯:</p><p><b> #make</b></p><p> #make i
46、nstall</p><p> 交叉編譯OpenCV</p><p> #tar –jxvf OpenCV-2.0.0.tar.bz2</p><p> #cd OpenCV-2.0.0</p><p> #vim configure</p><p> 定位到大概18182行的位置,在“FFMPEGLIBS=
47、"-lavcodec -lavformat” 后添加 “-lswscale”, 修改之后變?yōu)椋骸癋FMPEGLIBS="-lavcodec -lavformat -lswscale $FFMPEG_SWSCALE_LIBS"”,然后保存退出。</p><p> 若不修改此信息,OpenCV將不支持libswscale,即無法進行圖像格式轉換。</p><p>
48、; # ./configure --host=arm-none-linux-gnueabi --without-gtk --without-carbon --without-quicktime --without-1394libs --with-ffmpeg --without-python --without-swig --enable-static --enable-shared --disable-apps CXX=arm-l
49、inux-g++ CPPFLAGS=-I/root/arm/4.3.2/arm-none-linux-gnueabi/include/ LDFLAGS=-L/root/arm/4.3.2/arm-none-linux-gnueabi/lib --with-v4l --prefix=/root/arm/4.3.2/arm-none-linux-gnueabi CXXFLAGS=-O2</p><p> 確認所需
50、庫都支持,則進行編譯,安裝:</p><p><b> #make</b></p><p> #make install</p><p> 將交叉編譯好的庫文件拷貝到開發(fā)板</p><p> 通過Xshell將/root/arm/4.3.2/arm-none-linux-gnueabi/lib目錄下生成的所有庫文
51、件拷貝到開發(fā)板的/lib目錄下,若拷貝至其他目錄則需指定LD-LIBRARY-PATH,/lib目錄則可避免此問題。具體操作如下:</p><p> #cp /root/arm/4.3.2/arm-none-linux-gnueabi/lib/lib* /root/worknfs/arm-opencv-2.0</p><p><b> 執(zhí)行如下操作:</b><
52、;/p><p> #cp /mnt/arm-opencv-2.0/lib* /lib</p><p> 至此OpenCV2.0及其依賴庫已成功移植到GT2440開發(fā)板。</p><p><b> 4 智能循跡實現(xiàn)</b></p><p> 通過對圖像進行處理,找到圖像中的障礙物,并把其邊緣坐標提取出來,根據(jù)坐標確定
53、障礙物位置與所占最大矩形面積,并根據(jù)上述信息規(guī)劃路線,圖像處理流程如圖4.1:</p><p><b> 圖4.1</b></p><p><b> 4.1 二值化</b></p><p> 一幅圖像包括目標物體、背景還有噪聲,要想從多值的數(shù)字圖像中直接提取出目標物體,最常用的方法就是設定一個全局的閾值T,用T將圖
54、像的數(shù)據(jù)分成兩部分:大于T的像素群和小于T的像素群。將大于T的像素群的像素值設定為白色(或者黑色),小于T的像素群的像素值設定為黑色(或者白色)。下面為二值化的實現(xiàn)代碼:</p><p> void Gray2Binary(IplImage *In_img,unsigned char threshold)</p><p> { CvScalar s;</p><
55、p><b> int x,y;</b></p><p> unsigned char Binary;</p><p> for(y=0;y<In_img->height;y++)</p><p> for(x=0;x<In_img->width;x++)</p><p><b&
56、gt; {</b></p><p> s=cvGet2D(In_img,y,x);</p><p> if(s.val[0]>threshold)</p><p><b> Binary=0;</b></p><p> else Binary=255;</p><p&
57、gt; s.val[0]=(double)Binary;</p><p> cvSet2D(In_img,y,x,s);</p><p><b> }</b></p><p><b> }</b></p><p><b> 4.2 邊緣檢測</b></p>
58、<p> 邊緣(edge)是指圖像局部強度變化最顯著的部分。主要存在于目標與目標、目標與背景、區(qū)域與區(qū)域(包括不同色彩)之間,是圖像分割、紋理特征和形狀特征等圖像分析的重要基礎。圖像強度的顯著變化可分為:階躍變化函數(shù),即圖像強度在不連續(xù)處的兩邊的像素灰度值有著顯著的差異;線條變化函數(shù),即圖像強度突然從一個值變化到另一個值,保持一較小行程后又回到原來的值。圖像的邊緣有方向和幅度兩個屬性,沿邊緣方向像素變化平緩,垂直于邊緣方
59、向像素變化劇烈.邊緣上的這種變化可以用微分算子檢測出來,通常用一階或二階導數(shù)來檢測邊緣。</p><p> 本程序通過邊緣檢測,從而找到圖像中的有具體輪廓的物體,根據(jù)存有邊緣信息的數(shù)組,我們可以得到邊緣的長度,邊緣所包括的面積,邊緣線上各點的坐標,我們就可根據(jù)這些信息得到將阻礙小車運行的障礙物的具體位置和所在矩形的最大面積。</p><p> char* filename = argc
60、 == 2 ? argv[1] : (char*)"fruits.jpg";</p><p> if( (image = cvLoadImage( filename, 1)) == 0 )return -1;</p><p> cedge = cvCreateImage(cvSize(image->width,image->height), IP
61、L_DEPTH_8U, 3);gray = cvCreateImage(cvSize(image->width,image->height), IPL_DEPTH_8U, 1);edge = cvCreateImage(cvSize(image->width,image->height), IPL_DEPTH_8U, 1);cvCvtColor(image, gray, CV_BGR2GRAY);
62、</p><p> cvNamedWindow(wndname, 1);cvCreateTrackbar(tbarname, wndname, &edge_thresh, 100, on_trackbar);</p><p><b> a)源圖像</b></p><p> b)二值化圖像
63、 c)邊緣檢測效果圖</p><p><b> 圖4.2</b></p><p><b> 4.3 路徑提取</b></p><p> 通過對視頻幀的處理,將每幀圖像進行二值化、膨脹腐蝕等操作將障礙物的輪廓提取出來,并獲得輪廓的最大和最小的X坐標和Y坐標,將障礙物設定為一個矩形,并通過坐標值來確定
64、小車行進路徑。流程圖如圖4.3所示(tnum為障礙物個數(shù)、Fx和Fy為車頭中心位置的x和y坐標、csize為小車寬度、keep、left、right分別為控制小車的3個狀態(tài)):</p><p><b> 圖4.3</b></p><p><b> 5 電機控制設計</b></p><p><b> 5.1
65、電機驅動</b></p><p> 設備驅動程序是介于硬件和Linux內(nèi)核之間的軟件接口,是一種低級的、專用于某一硬件的軟件組件。Linux有兩種方式使用設備驅動程序:直接編澤到內(nèi)核中;在運行時加載(也就是內(nèi)核模塊)。Linux下的設備驅動程序[7]是一些用于完成不同任務的函數(shù)的集合,通過這些函數(shù)使得Linux下的設備猶如普通文件一般。因此對于應用程序來說設備只是一個普通的文件,應用程序可以像操作普
66、通文件一樣對硬件設備進行打開、關閉、讀、寫、IO控制等操作。</p><p> 5.1.1 電機驅動電路</p><p> L298N是SGS公司的產(chǎn)品,其內(nèi)部包含4通道邏輯驅動電路,即內(nèi)含兩個H的高電壓大電流雙全橋式驅動器,接受標準TTL邏輯電平信號,可驅動46V、2A以下的電機。由L298N構成的PWM功率放大器的工作形式為單級可逆變模式、2個H橋的下側橋晶體管發(fā)射極在一起,其芯片
67、引腳排列如圖3.1所示,1腳和15腳客單獨引出連接電流采樣電阻器,形成電流傳感信號。L298N可驅動兩個直流電機,OUT1、OUT2和OUT3、OUT4之間分別接2個直流電機。5、7、10、12腳接入控制電平,可控制電機的正反轉,ENA、ENB接控制使能端,控制電機的停轉。</p><p> 5.1.2 驅動的編譯加載</p><p> Linux下的驅動主要分為字符設備驅動、塊設備驅
68、動和流設備驅動三類。字符設備是指設備發(fā)送和接收數(shù)據(jù)以字符的形式進行;塊設備以整個數(shù)據(jù)緩沖區(qū)為發(fā)送和接收的對象;流設備主要應用于網(wǎng)絡通信方面。</p><p> Linux設備驅動屬于內(nèi)核的一部分,我們可以通過兩種方式對其進行編譯和加載:</p><p> 1. 與內(nèi)核一同編譯,使其隨linux的啟動而自動加載。</p><p> 2. 編譯成一個可加載和刪除的
69、模塊,在linux運行過程中使用命令對其進行動態(tài)的加載和卸載。</p><p> Linux驅動編寫的最小框架如下所示:</p><p> MODULE_LICENSE(“GPL”);</p><p> static int__init name_init(void)</p><p><b> {</b><
70、/p><p> 模塊加載時執(zhí)行的相關操作</p><p><b> return 0;</b></p><p><b> }</b></p><p> static void__exit name_exit(void)</p><p><b> {</b
71、></p><p> 模塊卸載時執(zhí)行的相關操作</p><p><b> }</b></p><p> 從上面可以看出,一個linux最小驅動模塊所必需的組成部分為模塊初始化函數(shù)和模塊卸載函數(shù),其中MODULE_LICENSE(“GPL”)用來聲明一個模塊的許可證。</p><p> 當內(nèi)核模塊(驅動程序)
72、編譯成功后,可使用命令“insmod模塊文件名稱”加載驅動程序。當內(nèi)核模塊不再需要時,可使用“rmmod模塊名稱”卸載驅動程序。注意:這兩條命令參數(shù)是不同的?!澳K文件名稱”是可修改的,而“模塊名稱”是編譯時由源代碼確定的。用戶還可使用命令“l(fā)srmod”查看當前加載了哪些驅動程序。</p><p> 5.1.3 直流電機驅動</p><p> 小車驅動部分采用直流電機作為動力驅動,通
73、過擴展ARM開發(fā)板GPIO口實現(xiàn)對小車的運動控制,采用PWM波實現(xiàn)小車的速度控制,擴展電路圖如圖5.1:</p><p> 圖5.1 GT2440擴展電路接口</p><p> 本程序對電機控制只有3個狀態(tài)(keep 保持當前方向前進、left 左轉90°、right 右轉90°)</p><p> 6 模塊聯(lián)合測試與總結</p>
74、;<p> 本課題主要有路徑識別模塊、電機控制模塊。路徑識別定位在經(jīng)過前期的OpenCV的圖像處理過程,通過對攝像頭攝入圖像的處理,根據(jù)所獲得的障礙物的位置規(guī)劃小車行駛路徑,最終實現(xiàn)智能循跡。</p><p> 由于車載攝像頭無法拍攝俯視圖,若非俯拍則循跡時的路徑規(guī)劃就必須考慮拍攝角度問題,根據(jù)現(xiàn)實應用考慮,若在小范圍的循跡,可采取攝像頭與小車分離,攝像頭端固定在高處俯拍地面情況,圖片通過ARM
75、板傳至小車,再通過小車使用OpenCV處理規(guī)劃路徑循跡。</p><p> 參考文獻[1] 陳賾,秦貴中,徐華中,王磊.ARM9嵌入式技術及Linux高級試驗教程 [M].北京:北京航空航天大學出版社,2005.121-166.</p><p> [2] 徐虹,何嘉.操作系統(tǒng)試驗指導——基于Linux內(nèi)核 [M].北京:清華大學出版社,2004.122-135.</p>
76、<p> [3] 譚浩強.C程序設計[M].北京:清華大學出版社,2005.212-235.</p><p> [4] 華清遠見嵌入式培訓中心.嵌入式Linux C語言應用程序設計.北京:人民郵電出版社,2007.123-145.</p><p> [5] 冼進,許振山,劉崢嶸.嵌入式Linux應用開發(fā)詳解 [M].北京:電子工業(yè)出版社,2007.56-115.</
77、p><p> [6] GaryBradsik Adrainkaeherl著,于仕琪 劉瑞錚譯.學習Opencv [M].北京:清華大學出版社,2007.92-135.</p><p> [7] 葉學義,莊鎮(zhèn)泉,張云超等 一種新穎快速的虹膜定位算法[J] 計算機工程與應用,2003,,39(30):54-56</p><p> [8] 孫紀坤.嵌入式Linux系統(tǒng)開
78、發(fā)技術詳解——基于ARM [M].北京:人民郵電出版社,2006:89-156.</p><p><b> 致 謝:</b></p><p> 本課題之所以能夠順利完成,首先我要感謝我的指導老師**老師。*老師他嚴肅的科學態(tài)度,嚴謹?shù)闹螌W精神,精益求精的工作作風,深深地感染和激勵著我。從課題的選擇到項目的最終完成,何老師都始終給予我細心的指導和不懈的支持。四年的大
79、學時光稍縱即逝,最終將以畢業(yè)設計這最后一次考核而結束。此次畢業(yè)設計課題的研究以及論文的撰寫是在我的指導老師**老師的悉心耐心的指導下得以完成的。所以要深深感謝**老師在畢業(yè)設計期間對我無微不至的指導關懷和幫助。何老師嚴謹?shù)闹螌W態(tài)度、淵博的知識、對工作孜孜不倦的敬業(yè)精神,都讓我非常的崇。他是一個嚴格要求學生的老師,又似一個關愛學生的兄長。他在我感到迷茫的時候給我指明了方向,在我畏懼難題不敢向前時給了我動力,使我在這段時間里獲益匪淺,老師您
80、辛苦了。在此特向**老師表示誠摯的敬意,忠誠的感謝。</p><p> 在此,我還要感謝在一起愉快的度過大學生活的402班同學們,還有我們一直堅持走下來的項目小組成員,正是由于你們的幫助和支持,我才能克服一個一個的困難和疑惑,直至本文的順利完成。 </p><p> 最后當然要感謝在大學四年學習和生活中關心幫助我的所有老師和同學,感謝學校給了我快樂的時光和美好的回憶。</p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于gt2440的智能循跡小車的研究與設計
- 智能循跡小車設計【畢業(yè)論文】
- 蔽障循跡智能小車畢業(yè)論文
- 基于單片機的智能循跡小車設計畢業(yè)論文
- 循跡小車的設計畢業(yè)論文
- 畢業(yè)論文---智能循跡避障小車
- 智能循跡避障小車畢業(yè)論文
- 測控技術與儀器畢業(yè)論文基于單片機的智能循跡小車設計
- 畢業(yè)論文-開題報告-文獻綜述智能循跡小車設計
- 畢業(yè)論文-開題報告-文獻綜述智能循跡小車設計
- 畢業(yè)設計論文基于單片機的智能循跡小車
- 基于單片機的循跡小車的設計【畢業(yè)論文】
- 智能循跡小車論文
- arduino循跡小車畢業(yè)論文
- 自動循跡小車-畢業(yè)論文
- 基于單片機的智能循跡小車的控制畢業(yè)設計論文
- 基于單片機的智能循跡小車的控制畢業(yè)設計論文
- 智能循跡小車-職業(yè)學院畢業(yè)論文開題報告
- 基于單片機的智能循跡小車的控制畢業(yè)設計論文
- 智能循跡澆水小車論文
評論
0/150
提交評論