版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 本科畢業(yè)論文</b></p><p> 論文題目 基于ARM技術(shù)的遠程機器人控制通信系</p><p> 統(tǒng)設(shè)計 </p><p> 專 業(yè) 電子信息工程 </p><p&
2、gt; 班 級 08電子信息工程(嵌入式軟件開發(fā)) </p><p> 姓 名 *** </p><p> 學(xué) 號 </p><p> 指導(dǎo)教師 ***
3、 </p><p> 2012年 4 月</p><p> 摘要 隨著現(xiàn)代信息技術(shù)的發(fā)展,遠程機器人在實際生活和科研中都發(fā)揮著越來越重要的作用。而對遠程機器人來說,一個安全可靠的控制通信協(xié)議,是保證遠程機器人能正常和安全地被操作的重要因素之一。本文以ARM硬件平臺和嵌入
4、式Linux操作系統(tǒng)為基礎(chǔ),設(shè)計了一個可以在無線網(wǎng)絡(luò)中實現(xiàn)遠程操控的機器人控制系統(tǒng)。首先闡述了機器人的軟硬件設(shè)計和手持控制終端軟件的設(shè)計,重點提出并設(shè)計了一個基于TCP網(wǎng)絡(luò)傳輸協(xié)議的新型控制和通信系統(tǒng),增強了機器人在遠程控制方面的安全性。</p><p> 關(guān)鍵詞 機器人;控制;通信;Linux</p><p> ABSTRACT Along with the developmen
5、t of the modern information technology, remote robot plays a more and more important role in real life and scientific research. And for the remote robot, a safe and reliable protocol of control and communication, was one
6、 of the important factors which is to ensure that the remote robot can be operated normally and safety. Based on the ARM hardware platform and embedded Linux operating system, a remote robot control system which can oper
7、ate by remote control in </p><p> KEY WORDS Robot; Control; Communication; Linux</p><p><b> 目 錄</b></p><p><b> 1 前 言1</b></p><p> 1.1 研究背景
8、和意義1</p><p> 1.2 機器人發(fā)展歷史1</p><p> 1.3 當前國內(nèi)外研究動態(tài)2</p><p> 1.4 本論文的主要研究內(nèi)容3</p><p> 2 機器人總體設(shè)計4</p><p> 2.1 嵌入式系統(tǒng)概述4</p><p> 2.2 ARM微處
9、理器4</p><p> 2.2.1 ARM微處理器概述4</p><p> 2.2.2 ARM微處理器的特點5</p><p> 2.2.3 ARM微處理器系列5</p><p> 2.3 嵌入式操作系統(tǒng)5</p><p> 2.3.1 嵌入式系統(tǒng)軟件結(jié)構(gòu)體系5</p><p
10、> 2.3.2 嵌入式操作系統(tǒng)簡介6</p><p> 2.3.3 嵌入式Linux操作系統(tǒng)簡介6</p><p> 2.4 機器人總體設(shè)計方案6</p><p> 3 機器人嵌入式硬件平臺設(shè)計8</p><p> 3.1 嵌入式系統(tǒng)硬件結(jié)構(gòu)8</p><p> 3.2 三星S3C2440A
11、微處理器9</p><p> 3.3 Mini2440開發(fā)板9</p><p> 3.4 機器人嵌入式硬件系統(tǒng)設(shè)計方案10</p><p> 3.4.1 機器人嵌入式硬件系統(tǒng)設(shè)計總述10</p><p> 3.4.2 傳感器系統(tǒng)電路設(shè)計11</p><p> 3.4.3 動力系統(tǒng)電路設(shè)計12<
12、;/p><p> 3.4.4 無線通信系統(tǒng)電路設(shè)計12</p><p> 4 機器人嵌入式系統(tǒng)平臺搭建14</p><p> 4.1 構(gòu)建交叉編譯工具鏈14</p><p> 4.1.1 交叉編譯工具鏈簡介14</p><p> 4.1.2 用Crosstool-ng構(gòu)建交叉編譯工具鏈14</p&
13、gt;<p> 4.2 Bootloader移植15</p><p> 4.2.1 Bootloader簡介15</p><p> 4.2.2 Uboot移植15</p><p> 4.3 Linux Kernel移植17</p><p> 4.3.1 獲取內(nèi)核源碼17</p><p>
14、; 4.3.2 配置內(nèi)核17</p><p> 4.3.3 編譯18</p><p> 4.4 文件系統(tǒng)構(gòu)建19</p><p> 4.4.1 Yaffs2文件系統(tǒng)簡介19</p><p> 4.4.2 Yaffs2文件系統(tǒng)移植19</p><p> 5 機器人嵌入式中控系統(tǒng)軟件和手持控制終端軟件
15、設(shè)計20</p><p> 5.1 機器人中控系統(tǒng)軟件設(shè)計20</p><p> 5.1.1 機器人中控系統(tǒng)軟件設(shè)計總述20</p><p> 5.1.2 機器人中控系統(tǒng)軟件整體程序設(shè)計20</p><p> 5.1.3 傳感器驅(qū)動軟件模塊設(shè)計21</p><p> 5.1.3.1 USB攝像頭驅(qū)動
16、和圖像采集功能實現(xiàn)21</p><p> 5.1.3.2 GPS數(shù)據(jù)采集22</p><p> 5.1.3.3 電子羅盤數(shù)據(jù)采集22</p><p> 5.1.4 機器人運動控制模塊設(shè)計22</p><p> 5.1.5 機器人網(wǎng)絡(luò)通信模塊設(shè)計23</p><p> 5.1.5.1 TCP協(xié)議簡介
17、23</p><p> 5.1.5.2 Socket編程簡介23</p><p> 5.1.5.3 機器人網(wǎng)絡(luò)編程模塊程序設(shè)計24</p><p> 5.2 機器人手持控制終端軟件設(shè)計25</p><p> 5.2.1 機器人手持控制終端軟件設(shè)計總述25</p><p> 5.2.2 機器人手持控制終
18、端軟件設(shè)計程序整體設(shè)計25</p><p> 5.2.3 基于QT for Android的UI模塊設(shè)計26</p><p> 5.2.4 控制通信模塊設(shè)計27</p><p> 6 機器人控制通信系統(tǒng)協(xié)議及其實現(xiàn)分析28</p><p> 6.1 機器人控制通信系統(tǒng)總述28</p><p> 6.
19、2 機器人控制通信系統(tǒng)通信機制29</p><p> 6.2.1 網(wǎng)絡(luò)通信線程29</p><p> 6.2.2 消息包定義29</p><p> 6.2.3 數(shù)據(jù)封包和解包機制29</p><p> 6.2.4 消息包序列化機制30</p><p> 6.2.5 登陸和退出機制30</p&
20、gt;<p> 6.2.6 通信應(yīng)答機制31</p><p> 6.2.7 數(shù)據(jù)加密機制31</p><p> 6.2.8 心跳檢測機制32</p><p> 6.3 機器人控制通信系統(tǒng)控制機制33</p><p> 6.3.1 消息注冊機制33</p><p> 6.3.2 消息接
21、收機制34</p><p> 6.3.3 消息派發(fā)機制34</p><p> 7 系統(tǒng)分析和總結(jié)36</p><p> 7.1 系統(tǒng)分析36</p><p> 7.1.1 系統(tǒng)分析方法簡述36</p><p> 7.1.2 壓力通信測試36</p><p> 7.1.3
22、斷網(wǎng)測試36</p><p> 7.2 測試結(jié)論37</p><p><b> 8 總 結(jié)38</b></p><p><b> 參考文獻40</b></p><p><b> 附 錄41</b></p><p><b>
23、致 謝42</b></p><p><b> 前 言</b></p><p><b> 研究背景和意義</b></p><p> 根據(jù)聯(lián)合國標準化組織采納的美國機器人協(xié)會給機器人下的定義,機器人是一種可編程和多功能的,用來搬運材料、零件、工具的操作機;或是為了執(zhí)行不同的任務(wù)而具有可改變和可編程動作的專門
24、系統(tǒng)。</p><p> 機器人技術(shù)是一門綜合了計算機、電子、通信、信息、傳感器技術(shù)和人工智能等技術(shù)的體現(xiàn)一個國家現(xiàn)代工業(yè)自動化、國家現(xiàn)代科學(xué)技術(shù)水平和經(jīng)濟實力的重要標志的技術(shù),是當今時代世界各國高度重視的研究技術(shù),其應(yīng)用領(lǐng)域也日益廣泛。而作為機器人學(xué)科重要組成部分的遠程機器人,具備執(zhí)行目前人類尚無法執(zhí)行或者難以執(zhí)行的諸如太空探索、探險、救災(zāi)、搜救和大規(guī)模工業(yè)自動化生產(chǎn)等方面的任務(wù)。在目前人工智能技術(shù)尚未成熟的
25、情況下,借助于現(xiàn)代通信技術(shù)和傳感器技術(shù),遠程機器人具備了感知外部世界和與外部交流的能力。并且在人類的遠程操控下,遠程機器人也同樣變得越來越智能。在諸如2011年3月日本福島發(fā)生的核輻射危機處理和火星探索等任務(wù)中,遠程機器人都是重要的執(zhí)行力量。</p><p> 開展遠程機器人的研究,對國家在太空探索、探險、救災(zāi)、搜救和工業(yè)自動化生產(chǎn)等方面都有著重要的意義。</p><p><b&g
26、t; 機器人發(fā)展歷史</b></p><p> 隨著現(xiàn)代計算機技術(shù)和電子技術(shù)的迅速發(fā)展,人類科學(xué)技術(shù)水平每一次的重大變革都意味著不斷有新發(fā)明的機器代替人類從事某些工作。18世紀60年代開始的第一次工業(yè)革命,出現(xiàn)了諸如“蒸汽機”、“珍妮機”等機器取代人力,人類開始運用這些機器開始大規(guī)模地開展工業(yè)化并開始逐步取代手工勞動。此后在1946年2月14日,人類歷史上第一臺計算機——ENIAC在美國賓夕法尼亞
27、大學(xué)誕生,這標志著人類使用人工智能成為可能。機器與人工智能的結(jié)合使得機器人在人類歷史上出現(xiàn)了。</p><p> 1920年,捷克斯洛伐克作家卡雷爾·恰佩克在他的科幻小說《羅薩姆的機器人萬能公司》中首次提出了“機器人”這一詞語。1959年恩格爾伯格建立的Unimation公司研制出了世界上第一臺工業(yè)機器人——“護士助手”機器人。</p><p> 機器人的第二個重大變革是與傳
28、感器的結(jié)合。由于傳感器的應(yīng)用提高了機器人的可操作性,人們試著在機器人上安裝各種各樣的傳感器,包括1961年恩斯特采用的觸覺傳感器,托莫維奇和博尼1962年在世界上最早的“靈巧手”上用到了壓力傳感器,而麥卡錫1963年則開始在機器人中加入視覺傳感系統(tǒng),并在1965年,幫助MIT推出了世界上第一個帶有視覺傳感器,能識別并定位積木的機器人系統(tǒng)。</p><p> 此后,隨著現(xiàn)代通信技術(shù)的出現(xiàn),無線通信技術(shù)成為推動機器
29、人發(fā)展的重要力量。1997年7月4日,美國火星車-索杰納號機器人抵達火星代替人類進行考察,從而開啟了人類利用遠程機器人在火星探索的歷史。隨后的勇氣號、好奇號等火星車也相應(yīng)地抵達火星,它們的出現(xiàn)給人類在太空探索方面帶來了巨大的幫助。2011年3月,日本也利用了遠程遙控機器人參與福島核泄漏事件的救災(zāi)中。</p><p><b> 當前國內(nèi)外研究動態(tài)</b></p><p&g
30、t; 在國內(nèi),20世紀90年代末,我國建立了9個機器人產(chǎn)業(yè)化基地和7個科研基地。產(chǎn)業(yè)化基地的建設(shè),為發(fā)展我國機器人產(chǎn)業(yè)奠定了基礎(chǔ)。目前,我國已經(jīng)能夠生產(chǎn)具有國際先進水平的平面關(guān)節(jié)型裝配機器人、直角坐標機器人、弧焊機器人、點焊機器人、搬運碼垛機器人等一系列產(chǎn)品,不少品種已經(jīng)實現(xiàn)了小批量生產(chǎn)。盡管機器人產(chǎn)業(yè)化已呈星火燎原之勢,但仍舊存在著諸多問題。除了眾多歷史原因造成制造業(yè)水平低下的原因外,更多的是對工業(yè)機器人產(chǎn)業(yè)的認識和定位上存在著不同
31、的觀點。為了推動機器人技術(shù)的研究和發(fā)展,國內(nèi)一直重視對學(xué)生開展機器人研究,為了培養(yǎng)青少年在尖端科學(xué)技術(shù)方面的興趣,舉辦了諸如面向大學(xué)生的探索科技、創(chuàng)新思維與實際行動結(jié)合的全國范圍的全國大學(xué)生機器人電視大賽、中國科學(xué)技術(shù)協(xié)會主辦的包括機器人工程設(shè)計展評、機器人足球比賽、VEX機器人工程挑戰(zhàn)賽、機器人單項競技比賽、FLL機器人挑戰(zhàn)賽、機器人擂臺賽等比賽項目的中國青少年機器人競賽。此外,在軍事和民用方面,國內(nèi)企業(yè)注重研究用于開展探險、救災(zāi)的機
32、器人,其機器人產(chǎn)品已經(jīng)廣泛應(yīng)用于玉樹抗震救災(zāi)、廣州亞運安保等任務(wù)。</p><p> 在國外,為了使機器人能更好的應(yīng)用于工業(yè),各工業(yè)發(fā)達國家的大學(xué)、研究機構(gòu)和大工業(yè)企業(yè)對機器人系統(tǒng)開發(fā)投入了大量的人力財力。在美國和加拿大,各主要大學(xué)都設(shè)有機器人研究室,麻省理工學(xué)院側(cè)重于制造過程機器人系統(tǒng)的研究,卡耐基—梅隆機器人研究所側(cè)重于挖掘機器人系統(tǒng)的研究,而斯坦福大學(xué)則著重于系統(tǒng)應(yīng)用軟件的開發(fā)。德國正研究開發(fā)“MOVE
33、AND PLAY”機器人系統(tǒng),使機器人操作就像人們操作錄像機、開汽車一樣。</p><p> 本論文的主要研究內(nèi)容</p><p> 本論文是以ARM9為硬件平臺并搭載嵌入式Linux操作系統(tǒng)為基礎(chǔ)的研究手持式可視化遠程機器人控制系統(tǒng)的控制通信系統(tǒng)方面的問題。所做工作主要包括以下幾個方面:</p><p> ?。?)根據(jù)系統(tǒng)需求分析建立基于ARM9微處理器的遠程
34、機器人的硬件平臺及基于嵌入式Linux操作系統(tǒng)的軟件平臺的遠程機器人嵌入式系統(tǒng)平臺。</p><p> (2)構(gòu)建了以ARM9為微處理器和機器人使用的傳感器為硬件基礎(chǔ)的機器人端硬件平臺。</p><p> (3)搭建了機器人端硬件平臺的嵌入式Linux操作系統(tǒng)平臺,在機器人端實現(xiàn)了Uboot、內(nèi)核和文件系統(tǒng)的移植。</p><p> ?。?)對機器人端的控制方式
35、進行研究,實現(xiàn)了對外圍器件的控制。</p><p> ?。?)基于QT圖形系統(tǒng)設(shè)計了一個手持控制終端程序,對機器人進行手持式可視化遠程控制。</p><p> ?。?)基于嵌入式Linux平臺,設(shè)計了一個高效可靠的基于TCP傳輸協(xié)議的機器人控制和通信系統(tǒng)。</p><p><b> 機器人系統(tǒng)總體設(shè)計</b></p><p
36、><b> 嵌入式系統(tǒng)概述</b></p><p> 根據(jù)IEEE的定義,嵌入式系統(tǒng)是“控制、監(jiān)視或者輔助裝置、機器和設(shè)備運行的裝置”。而國內(nèi)普遍認同的一種的說法是,嵌入式系統(tǒng)是以應(yīng)用為中心,以計算機技術(shù)為基礎(chǔ),軟硬件可裁剪,適用于應(yīng)用系統(tǒng)對功能,對可靠性、成本、體積、功耗有嚴格要求的專用計算機系統(tǒng)。嵌入式系統(tǒng)是把計算機直接嵌入到應(yīng)用系統(tǒng)中,它融合了計算機軟/硬件技術(shù)、通信技術(shù)和微
37、電子技術(shù)。對嵌入式系統(tǒng)而言,它也是一個計算機系統(tǒng),其構(gòu)架與計算機系統(tǒng)相似,可以分成四個部分:處理器、存儲器、輸入輸出(I/O)和軟件系統(tǒng)。但與計算機系統(tǒng)不同的是,嵌入式系統(tǒng)具有系統(tǒng)內(nèi)核小而精簡、專用性強、高實時性或者分時性和高穩(wěn)定性等特點。</p><p><b> ARM微處理器</b></p><p><b> ARM微處理器概述</b>
38、</p><p> ARM(Advanced RISC Machines),既可認為是一個公司的名字,也可認為是對一類微處理器的統(tǒng)稱。ARM(Advanced RISC Machines)處理器是Acorn計算機有限公司面向低預(yù)算市場設(shè)計的RISC微處理器。更早稱作Acorn RISC Machine。ARM處理器本身是32位設(shè)計,但也配備16位指令集。一般來講比等價32位代碼節(jié)省達35%,卻能保留32位系統(tǒng)的
39、所有優(yōu)勢。基于ARM技術(shù)的微處理器應(yīng)用約占據(jù)了32位RISC微處理器75%以上的市場份額,ARM技術(shù)正在逐步滲入到人們生活的各個方面。到目前為止,ARM微處理器及技術(shù)已經(jīng)廣泛應(yīng)用到各個領(lǐng)域,包括工業(yè)控制領(lǐng)域、網(wǎng)絡(luò)應(yīng)用、消費類電子產(chǎn)品、成像和安全產(chǎn)品等。</p><p> ARM微處理器的特點</p><p> ARM處理器的三大特點是:耗電少功能強、16位/32位雙指令集和合作伙伴眾多
40、。</p><p> ?。?)體積小、低功耗、低成本、高性能。</p><p> ?。?)支持Thumb(16位)/ARM(32位)雙指令集,能很好的兼容8位/16位器件。</p><p> (3)大量使用寄存器,指令執(zhí)行速度更快。</p><p> ?。?)大多數(shù)數(shù)據(jù)操作都在寄存器中完成。</p><p> ?。?
41、)尋址方式靈活簡單,執(zhí)行效率高。</p><p> ?。?)指令長度固定。</p><p><b> ARM微處理器系列</b></p><p> 目前,ARM推出的處理器內(nèi)核主要包括:ARM7、ARM9、ARM9E、ARM10E、ARM11、Cortex和SecurCore等。其合作公司根據(jù)ARM公司的處理器內(nèi)核設(shè)計出自己的處理器,例如:
42、德州儀器的Omap和飛思卡爾的iMX等系列處理器。每個系列都是針對不同的應(yīng)用場合的,其擁有不同的特性。</p><p><b> 嵌入式操作系統(tǒng)</b></p><p> 嵌入式系統(tǒng)軟件結(jié)構(gòu)體系</p><p> 嵌入式系統(tǒng)軟件結(jié)構(gòu)主要可以分為設(shè)備驅(qū)動、操作系統(tǒng)、應(yīng)用程序開發(fā)庫和應(yīng)用程序等四個層次,如圖 2-1所示。</p>
43、<p> 圖 2-1 嵌入式系統(tǒng)軟件結(jié)構(gòu)圖</p><p><b> 嵌入式操作系統(tǒng)簡介</b></p><p> 嵌入式操作系統(tǒng)是一種用途廣泛的系統(tǒng)軟件,其主要負責嵌入系統(tǒng)的全部軟、硬件資源的分配、調(diào)度工作,控制協(xié)調(diào)并發(fā)活動;它必須體現(xiàn)其所在系統(tǒng)的特征,能夠通過裝卸某些模塊來達到系統(tǒng)所要求的功能。嵌入式操作系統(tǒng)在系統(tǒng)實時高效性、硬件的相關(guān)依賴性、軟
44、件固態(tài)化以及應(yīng)用的專用性等方面具有較為突出的特點。嵌入式操作系統(tǒng)與普通的計算機操作系統(tǒng)相比,除具備了一般操作系統(tǒng)最基本的功能,如任務(wù)調(diào)度、同步機制、中斷處理、文件功能等,還有系統(tǒng)功能可裁剪、代碼通常固化在ROM里面以及與嵌入式微處理器緊密集合等特點。</p><p> 常見的嵌入式操作系統(tǒng)有:Linux、uClinux、WinCE、Android、PalmOS、Symbian、eCos、uCOS-II、VxWo
45、rks和iOS等。</p><p> 嵌入式Linux操作系統(tǒng)簡介</p><p> 嵌入式Linux是在Linux操作系統(tǒng)的基礎(chǔ)上,為了能使其在嵌入式計算機系統(tǒng)上運行而進行裁剪修改的一種操作系統(tǒng)。由于Linux操作系統(tǒng)是一個開源的操作系統(tǒng),其特點是免費,資源多,開發(fā)成本低。嵌入式Linux既繼承了這一開源的特性,又具有嵌入式操作系統(tǒng)的高效精簡的特性。</p><p
46、> Linux應(yīng)用領(lǐng)域非常廣泛,主要的有信息家電、PDA、機頂盒、數(shù)據(jù)網(wǎng)絡(luò)、遠程通信、醫(yī)療電子、交通運輸計算機外設(shè)、工業(yè)控制、航空航天領(lǐng)域等。</p><p><b> 機器人總體設(shè)計方案</b></p><p> 本文設(shè)計的遠程機器人控制系統(tǒng),是基于ARM9嵌入式微處理器和嵌入式Linux操作系統(tǒng)的嵌入式系統(tǒng)平臺上實現(xiàn)的一個遠程機器人控制系統(tǒng)設(shè)計方案,如
47、圖 2-2所示。該機器人依靠ARM微處理器和嵌入式Linux操作系統(tǒng)作為中控系統(tǒng),同時結(jié)合攝像頭、電子羅盤、GPS等傳感器感知周圍環(huán)境,通過對無線網(wǎng)卡的操作,實現(xiàn)對外界的信息交互,從而實現(xiàn)上位機對整個機器人的遠程控制以及機器人對周圍環(huán)境信息進行采集和處理的功能。</p><p> 圖 2-2 機器人總體設(shè)計框架圖</p><p> 在整個設(shè)計方案中,遠程機器人硬件系統(tǒng)共分為兩部分:機器
48、人端和嵌入式手持控制終端(也可用PC終端替代)。對于機器人端,整個嵌入式中控系統(tǒng)負責控制所有的傳感器和動力驅(qū)動器以及無線網(wǎng)絡(luò)設(shè)備,其與外界通信的唯一通道為無線網(wǎng)絡(luò)。對于嵌入式手持終端,本設(shè)計是采用了一臺基于TI Omap3630嵌入式微處理器的Android平板電腦。在軟件設(shè)計方面,嵌入式手持終端,只需開發(fā)一個上位機控制程序即可。而對機器人而言,需要為其構(gòu)建一個嵌入式Linux操作系統(tǒng),并在該系統(tǒng)平臺上開發(fā)一個嵌入式中控系統(tǒng)軟件來全面控
49、制機器人。</p><p> 機器人嵌入式硬件平臺設(shè)計</p><p><b> 嵌入式系統(tǒng)硬件結(jié)構(gòu)</b></p><p> 嵌入式系統(tǒng)的硬件部分可以分為三層:核心處理器、外圍電路和外圍設(shè)備,如圖 3-1所示。</p><p> 圖 3-1 嵌入式系統(tǒng)硬件結(jié)構(gòu)圖</p><p> 核心
50、處理器是嵌入式系統(tǒng)的核心部件,負責控制整個嵌入式系統(tǒng)的運作。</p><p> 外圍電路包括嵌入式系統(tǒng)的內(nèi)存、I/O端口、復(fù)位和電源電路、對外設(shè)的接口電路等。隨著微電子技術(shù)的發(fā)展,許多常用的接口電路已經(jīng)被集成到核心處理器中。</p><p> 外部設(shè)備:嵌入式系統(tǒng)與真實環(huán)境交互的各種設(shè)備,包括存儲設(shè)備(如SD CARD)、I/O設(shè)備(如鍵盤、鼠標、LCD等)和打印設(shè)備(打印機、掃描儀等
51、)。</p><p> 實際中,嵌入式設(shè)備的硬件配置非常靈活。除了CPU和基本的外圍電路,其余部分都可以根據(jù)不同應(yīng)用進行裁剪。</p><p> 三星S3C2440A微處理器</p><p> S3C2440A是基于ARM920T核的16/32位RISC微處理器,運行頻率高達400MHz,主要面向手持設(shè)備以及高性價比、低功耗的應(yīng)用,適用于開發(fā)各類高端手持、小型
52、終端以及網(wǎng)絡(luò)應(yīng)用產(chǎn)品,具有非常豐富的片上資源,比如LCD、SDRAM、NAND FLASH、DMA等接口。</p><p> S3C2440A集成如下片上功能:</p><p> (1)1.2V內(nèi)核,1.8V/2.5V/3.3V儲存器,3.3V擴展I/O,16KB指令Cache(I-Cache)/16KB數(shù)據(jù)Cache(D-Cache)</p><p> (2
53、)外部儲存控制器(SDRAM控制盒片選邏輯)</p><p> (3)集成LCD專用DMA的LCD控制器(支持最大4K色STN和256K色TFT)</p><p> ?。?)4路擁有外部請求引腳的DMA控制器</p><p> (5)3路URAT(IrDA1.0,64-Byte Tx FIFO,64Byte Rx FIFO)</p><p&g
54、t;<b> (6)2路SPI</b></p><p> ?。?)IIC總線接口(多主支持)</p><p> ?。?)IIS音頻編解碼器接口</p><p> ?。?)AC`97編解碼器接口</p><p> (10)1.0版SD主接口,兼容2.11版MMC接口</p><p> (11)
55、2路USB主機控制/1路USB期間控制(ver1.1)</p><p> ?。?2)4路PWM定時器/1路內(nèi)部定時器/看門狗定時器</p><p> ?。?3)8路10位ADC和觸摸屏接口</p><p> ?。?4)具有日歷功能的RTC</p><p> ?。?5)攝像頭接口(支持最大4096x4096的輸入,2048x2048縮放輸入)&
56、lt;/p><p> ?。?6)130個通用I/O,24個外部中斷源</p><p> ?。?7)電源控制:正常,慢速,空閑,睡眠模式</p><p> ?。?8)帶PLL的片上時鐘發(fā)生器</p><p> Mini2440開發(fā)板</p><p> 為了使本設(shè)計更加專注于機器人控制通信系統(tǒng)部分的設(shè)計,本設(shè)計硬件系統(tǒng)主要
57、采用了具備整個嵌入式硬件系統(tǒng)功能的Mini2440開發(fā)板。Mini2440開發(fā)板是由廣州友善之臂計算機科技有限公司開發(fā)的一款基于三星S3C2440A微處理器的開發(fā)板。它具有最基本的系統(tǒng)配置如下:</p><p> ?。?)CPU:Samsung S3C2440A,主頻400MHz,最高533Mhz 。</p><p> (2)SDRAM:板載數(shù)據(jù)總線為32bit的64M SDRAM,SD
58、RAM 時鐘頻率高達100MHz。</p><p> ?。?)Flash Memory:板載256M Nand Flash,掉電非易失。板載2M Nor Flash,掉電非易失。</p><p> ?。?)主要接口和資源:</p><p> ?。ˋ)板上集成4線電阻式觸摸屏接口,可以直接連接四線電阻觸摸屏。</p><p> ?。˙)1個主U
59、SB接口,1個從USB接口。</p><p> (C)1路立體聲音頻輸出接口(標準3.5mm接口),1路麥克風接口。</p><p> ?。―)1個100M以太網(wǎng)RJ-45口(采用DM9000網(wǎng)卡)。</p><p> ?。‥)1個SD/MMC卡存儲接口。</p><p> ?。‵)攝像頭(Cemera) 引出CPU內(nèi)部全部攝像頭信號引腳。
60、</p><p> ?。℅)3個串行口。COM0為RS232 DB9接口(亦引出TTL接口),COM2和COM3為2.0mm間距。</p><p> ?。℉)1個PWM控制蜂鳴器。</p><p> ?。↖)1個34pin 2.0mmGPIO接口。</p><p> ?。↗)1個40pin 2.0mm系統(tǒng)總線接口系統(tǒng)時鐘源和RTC :12M無
61、源晶振,內(nèi)部實時時鐘。</p><p> 機器人嵌入式硬件系統(tǒng)設(shè)計方案</p><p> 機器人嵌入式硬件系統(tǒng)設(shè)計總述</p><p> 整個機器人就是一個典型的嵌入式系統(tǒng),其硬件的設(shè)計就是一個嵌入式硬件系統(tǒng)。在這個嵌入式硬件系統(tǒng)中,具備三個最重要的組成部分:電源及復(fù)位系統(tǒng)、最小系統(tǒng)和外設(shè)。而本設(shè)計采用了廣州友善之臂計算機科技有限公司的Mini2440開發(fā)板,
62、其具備了基礎(chǔ)的電源及復(fù)位最小系統(tǒng),同時也是本設(shè)計提出的嵌入式中控計算機硬件系統(tǒng)核心部分。本設(shè)計需要完善的電路設(shè)計就是適應(yīng)機器人功能的外圍電路。</p><p> 本設(shè)計的機器人,主要需要設(shè)計的外圍電路主要是傳感器系統(tǒng)電路設(shè)計、動力系統(tǒng)電路設(shè)計和無線通信系統(tǒng)電路設(shè)計。這三部分的電路設(shè)計與Mini2440的接口都是通過直接和三星S3C2440A的GPIO相連而實現(xiàn)的。整個機器人的硬件總體設(shè)計如圖 3-2所示。<
63、;/p><p> 圖 3-2 機器人硬件設(shè)計總體設(shè)計圖</p><p><b> 傳感器系統(tǒng)電路設(shè)計</b></p><p> 傳感器系統(tǒng)是機器人的感官系統(tǒng),如人體的眼睛和耳朵等器官,具備感知外部世界的能力。在本設(shè)計的遠程機器人中,操作人員無法直接感知機器人所在地方的環(huán)境信息,這對于機器人來說,必須要求其具備一個對周圍環(huán)境信息采集的傳感器系統(tǒng)
64、。在本設(shè)計中,機器人的傳感器系統(tǒng)實現(xiàn)的功能包括采集圖像、所在經(jīng)緯度和運動方向信息等功能。故該傳感器系統(tǒng)包括以下三個組件:攝像頭、GPS和電子羅盤。由于攝像頭是采用USB接口,GPS和電子羅盤都是采用串口接口,而Mini2440已經(jīng)具備了USB和串口接口,故以上三個器件只需將其與Mini2440相應(yīng)的接口連接起來就可以了。具體連接圖如圖 3-3所示。</p><p> 圖 3-3 傳感器系統(tǒng)電路設(shè)計圖</p
65、><p><b> 動力系統(tǒng)電路設(shè)計</b></p><p> 機器人的動力系統(tǒng)是機器人的最基本部件,是驅(qū)動機器人運動的重要保障。常見的機器人運動方式有輪式移動、仿人二足移動、仿人多足移動和飛行移動等方式。仿人二足移動、仿人多足移動和飛行移動等方式對成本、體積和穩(wěn)定性要求都非常高,在電路設(shè)計和程序控制方面同樣是非常復(fù)雜。在目前的實際應(yīng)用中,相當多的機器人都是采用輪式移
66、動的方式,如火星車等機器人。對于本設(shè)計而言,整個機器人采用履帶輪式移動的方式。整個動力系統(tǒng)電路設(shè)計包含三個部件:兩個直流電機和一個L298N電機驅(qū)動器。</p><p> L298N是ST公司生產(chǎn)的一種高電壓、大電流電機驅(qū)動芯片。該芯片采用15腳封裝。主要特點是:工作電壓高,最高工作電壓可達46V;輸出電流大,瞬間峰值電流可達4A,持續(xù)工作電流為2A;額定功率25W。內(nèi)含兩個H橋的高電壓大電流全橋式驅(qū)動器,可以
67、用來驅(qū)動直流電動機和步進電動機、繼電器線圈等感性負載;采用標準邏輯電平信號控制;具有兩個使能控制端,在不受輸入信號影響的情況下允許或禁止器件工作有一個邏輯電源輸入端,使內(nèi)部邏輯電路部分在低電壓下工作;可以外接檢測電阻,將變化量反饋給控制電路。使用L298N芯片驅(qū)動電機,該芯片可以驅(qū)動一臺兩相步進電機或四相步進電機,也可以驅(qū)動兩臺直流電機。</p><p> 該動力系統(tǒng)與Mini2440的連接方式采用直接GPIO
68、控制,如圖 3-4所示。</p><p> 圖 3-4 機器人動力系統(tǒng)電路設(shè)計圖</p><p> 無線通信系統(tǒng)電路設(shè)計</p><p> 機器人要與外部世界通信,必須具備一個通信系統(tǒng)。隨著現(xiàn)代通信技術(shù)的發(fā)展,WIFI、2G和3G等現(xiàn)代通信技術(shù)都非常成熟,已經(jīng)廣泛應(yīng)用于各行各業(yè)。本設(shè)計采用了目前成本比較低的WIFI方案,該方案有效通信距離可達300米左右,并且
69、可以頻道無需付費使用,滿足驗證本設(shè)計的實驗條件。由于Mini2440具備了USB接口,對于本設(shè)計而已,只需要連接一個USB無線網(wǎng)卡即可。故機器人采用了TP-LINK WN721無線網(wǎng)卡,連接圖如圖 3-5所示。</p><p> 圖 3-5 無線通信系統(tǒng)連接圖</p><p> 機器人嵌入式系統(tǒng)平臺搭建</p><p><b> 構(gòu)建交叉編譯工具鏈&
70、lt;/b></p><p><b> 交叉編譯工具鏈簡介</b></p><p> 嵌入式開發(fā)一般都要使用交叉編譯環(huán)境。所謂交叉編譯就是在一臺機器上編譯軟件,其生成的軟件在另一臺不同類型處理器的機器上運行。對于ARM處理器平臺來說,其處理器性能一般不足以支撐編譯適合自身架構(gòu)運行的軟件。這就需要在X86機器上編譯生成適合ARM機器上運行的軟件,在X86上編譯
71、的ARM架構(gòu)代碼的編譯器就是交叉編譯器。通常,對于不同的處理器,需要制作特定的交叉編譯工具鏈。</p><p> 用Crosstool-ng構(gòu)建交叉編譯工具鏈</p><p> Crosstool是由美國人Dan Kegel開發(fā)的一套可以自動編譯不同匹配版本的gcc和glibc,并作測試的腳本程序。它是一個開源項目,但由于其近年來停止更新,最高只支持gcc 4.1.1和glibc 2.
72、3.6的版本,并且在編譯超過Linux 2.6.9以上的內(nèi)核時,會出現(xiàn)錯誤。而crosstool-ng則一直保持更新,現(xiàn)在最新能夠建立gcc 4.5.3版本及glibc 2.9版本,在編譯高版本的Linux內(nèi)核時也不會產(chǎn)生錯誤,因此一般采用crosstool-ng來代替crosstool。</p><p> 使用crosstool-ng構(gòu)建交叉編譯工具鏈的主要步驟如下:</p><p>
73、 下載crosstool-ng源碼:</p><p><b> 執(zhí)行命令:</b></p><p> # hg clone http://crosstool-ng.org/hg/crosstool-ng</p><p> (B)然后更新到最新的版本:</p><p><b> # hg pull<
74、;/b></p><p> 通過執(zhí)行上述兩個命令,已經(jīng)得到了最新版本的crosstool-ng源碼了。</p><p> 修改交叉編譯器針對的構(gòu)架:</p><p> ?。ˋ)解壓源碼后,使用圖形化工具配置crosstool-ng:</p><p> # make menuconfig</p><p>
75、(B)在出現(xiàn)的圖形界面中修改交叉編譯器選項以針對的ARM9構(gòu)架:</p><p> Target options ---></p><p> *** Target optimisations ***</p><p> (armv4t) Architecture level </p><p> (arm9tdmi) Emit a
76、ssembly for CPU </p><p> (arm920t) Tune for CPU</p><p><b> 編譯工具鏈:</b></p><p> 配置完后,在crosstool-ng編譯目錄下執(zhí)行命令:</p><p> # ct-ng build.4。</p><p&
77、gt; crosstool-ng就會自動從網(wǎng)上下載相應(yīng)的源碼包通過編譯,制作出ARM9平臺的交叉編譯工具鏈。得到的交叉編譯工具鏈將用來編譯Bootload、Linux kernel、文件系統(tǒng)和應(yīng)用程序。</p><p> Bootloader移植</p><p> Bootloader簡介</p><p> Bootloader類似PC的BIOS與硬盤MBR
78、中的引導(dǎo)程序,是操作系統(tǒng)啟動時第一個運行的程序。其作用就是在操作系統(tǒng)加載內(nèi)核運行之前,完成對硬件的初始化。Bootloader與交叉編譯工具鏈一樣,對于不同的處理器架構(gòu)和硬件設(shè)計,其實現(xiàn)也是不相同。Bootloader的工作一般分為兩個階段:Stage1是使用匯編語言實現(xiàn)對硬件相關(guān)部分的支持,如硬件初始化,設(shè)置CPU時鐘等。Stage2是用C語言實現(xiàn)的與硬件不相關(guān)的部分工作,包括檢測系統(tǒng)內(nèi)存映射,將Linux Kernel和文件系統(tǒng)映像
79、從Flash加載到RAM空間中等工作。</p><p><b> Uboot移植</b></p><p> Uboot是一個著名常用的開源Bootloader程序,支持X86、ARM、MIPS和PowerPC等架構(gòu)的處理器。由于移植Uboot到三星S3C2440A微處理器上的過程過于繁瑣和復(fù)雜,本文僅對移植關(guān)鍵部分作出說明。</p><p>
80、; 獲取Uboot源碼:</p><p> ?。ˋ)克隆Uboot源碼:</p><p> # git clone git://git.denx.de/u-boot.git</p><p> (B)切換到2010.03版本:</p><p> # git checkout v2010.03</p><p>
81、此時我們就得到了Uboot 2010.03版本的源碼。</p><p> 建立自己的處理器平臺的目標編譯項:</p><p> ?。ˋ)在Uboot-2010.03的根目錄下面的Makefile中為robot2440建立編譯項,以sbc2410x為模板例子。在Makefile中加上對mini2440板子的支持,將這個編譯項命名為robot2440:</p><p>
82、; robot2440_config : unconfig</p><p> @$(MKCONFIG) $(@:_config=) arm arm920t robot2440 NULL s3c24x0 </p><p><b> 各項的意思如下:</b></p><p> arm:CPU的架構(gòu)(ARCH)</p><
83、;p> arm920t:CPU的類型(CPU),其對應(yīng)于cpu/arm920t子目錄。</p><p> robot2440:開發(fā)板的型號(BOARD),對應(yīng)于board/ robot2440目錄。</p><p> NULL:開發(fā)者/或經(jīng)銷商(vender),NULL為沒有。</p><p> s3c24x0:片上系統(tǒng)(SOC)。</p>
84、<p> ?。˙)設(shè)置交叉編譯工具鏈,修改頂層Makefile的CROSS_COMPILE定義如下:</p><p> CROSS_COMPILE=arm-linux-</p><p> ?。–)以sbc2410x為模板例子,在/board目錄下建立robot2440文件夾,并在include/configs/中建立開發(fā)板的配置頭文件,拷貝sbc2410x的文件到robot
85、2440和include/configs/中,并將sbc2410x命名的文件和定義改為robot2440。</p><p> 修改cpu/arm920t/start.S,根據(jù)S3C2440A數(shù)據(jù)手冊設(shè)置其時鐘,修改其代碼實現(xiàn)自動識別從NAND Flash啟動或者從Nor flash啟動。</p><p> 根據(jù)Mini2440開發(fā)的硬件設(shè)計手冊,增加NAND Flash讀寫函數(shù),實現(xiàn)N
86、AND Flash的讀寫操作,從而能加載Uboot、內(nèi)核和文件系統(tǒng)硬件到NAND Flash中。</p><p> 增加對分區(qū)表的設(shè)置,該分區(qū)表需要與內(nèi)核設(shè)置的一致。</p><p> 生成相應(yīng)平臺的uboot映像:</p><p> # make robot2440_config </p><p><b> # make
87、</b></p><p> 至此,適應(yīng)S3C2440A微處理器的uboot已經(jīng)成功編譯出來,將其用Jlink燒寫到NAND Flash中。</p><p> Linux Kernel移植</p><p><b> 獲取內(nèi)核源碼</b></p><p> 從Linux官網(wǎng)中下載2.6.32.2版本內(nèi)核源
88、碼:</p><p> # wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.2.tar.gz</p><p><b> 配置內(nèi)核</b></p><p> Linux kernel 2.6.32.2已經(jīng)對Mini2440開發(fā)板提供了完善的支持,在配置內(nèi)核的過程主要
89、包括以下幾個部分:</p><p> ?。ˋ)修改arch/arm/mach-s3c2440/mach-mini2440.c中的分區(qū)表信息為:</p><p> static struct mtd_partition mini2440_default_nand_part[] = {</p><p><b> [0] = {</b></
90、p><p> .name = "Uboot",</p><p> .size = 0x00060000,</p><p> .offset = 0,</p><p><b> },</b></p><p><b> [1] = {</b>&l
91、t;/p><p> .name = "Param",</p><p> .offset = 0x00060000,</p><p> .size = 0x00020000,</p><p><b> },</b></p><p><b> [2] = {
92、</b></p><p> .name = "Kernel",</p><p> .offset = 0x00080000,</p><p> .size = 0x00500000,</p><p><b> },</b></p><p><b
93、> [3] = {</b></p><p> .name = "Root",</p><p> .offset = 0x00580000,</p><p> .size = SZ_256M - 0x00580000,</p><p><b> }</b></p
94、><p><b> };</b></p><p> ?。˙)修改頂層Makefile文件中的編譯器為交叉編譯工具鏈:</p><p> ARCH ?= arm</p><p> CROSS_COMPILE ?= arm-linux-</p><p> (C)從網(wǎng)上獲取yaffs源碼,對內(nèi)核打上
95、補丁,增加對yaffs2文件系統(tǒng)的支持,進入yaffs解壓文件的根目錄,執(zhí)行補丁命令:</p><p> # ./patch-ker.sh ../linux-2.6.32.2/</p><p> 在Linux kernel的配置選項中選中yaffs2文件系統(tǒng)的支持:</p><p> File systems ---></p><p&
96、gt; [*] Miscellaneous filesystems ---></p><p> [*] JFFS2 write-buffering support</p><p><b> 編譯</b></p><p> 配置好內(nèi)核選項后,編譯內(nèi)核image:</p><p> # make Mini24
97、40_defconfig</p><p> # make zImage</p><p> 至此,內(nèi)核的移植已經(jīng)完成,將arch/arm/boot/zImage文件下載到NAND Flash中。</p><p><b> 文件系統(tǒng)構(gòu)建</b></p><p> Yaffs2文件系統(tǒng)簡介</p><
98、;p> YAFFS,Yet Another Flash File System,是一種類似于JFFS/JFFS2的專門為Flash設(shè)計的嵌入式文件系統(tǒng)。與JFFS相比,它減少了一些功能,因此速度更快、占用內(nèi)存更少。YAFFS提供了寫均衡,垃圾收集等底層操作。</p><p> Yaffs2文件系統(tǒng)移植</p><p> Mini2440廠家已經(jīng)提供了一個比較強大的yaffs2文
99、件系統(tǒng),本設(shè)計對uboot和內(nèi)核進行了移植,已經(jīng)支持了yaffs2文件系統(tǒng)。故Mini2440自帶的yaffs2文件系統(tǒng)完全具備在新uboot和內(nèi)核上運行的基礎(chǔ)。本設(shè)計將廣州友善之臂計算機科技有限公司提供的Mini2440的yaffs2文件系統(tǒng)裁剪了QTOPIA 和QT EMBEDDED 4.6.3程序,重新配置啟動腳本,使之適應(yīng)本設(shè)計的運行要求。</p><p> 機器人嵌入式中控系統(tǒng)軟件和手持控制終端軟件設(shè)
100、計</p><p> 機器人中控系統(tǒng)軟件設(shè)計</p><p> 機器人中控系統(tǒng)軟件設(shè)計總述</p><p> 機器人中控系統(tǒng)軟件是機器人控制的核心軟件,負責對整個機器人的運動控制、信息采集和遠程控制處理工作。該中控系統(tǒng)是基于嵌入式Linux系統(tǒng)而設(shè)計的,應(yīng)用了Linux驅(qū)動、網(wǎng)絡(luò)編程和多線程編程等知識。根據(jù)機器人的功能要求,其軟件控制部分共分為傳感器軟件模塊、
101、運動控制模塊和網(wǎng)絡(luò)通信模塊,如圖5-1機器人中控軟件系統(tǒng)框架圖所示。</p><p> 圖 5-1 機器人中控軟件系統(tǒng)框架圖</p><p> 機器人中控系統(tǒng)軟件整體程序設(shè)計</p><p> 機器人中控系統(tǒng)軟件在軟件實現(xiàn)上,采用Linux的多線程編程技術(shù)和網(wǎng)絡(luò)通信技術(shù),可以更好的滿足對機器人各個部件控制和網(wǎng)絡(luò)通信的實時要求。多線程程序采用多任務(wù)、并發(fā)的工作方
102、式,可以提高應(yīng)用程序響應(yīng)時間并且改善程序結(jié)構(gòu)。</p><p> 機器人中控系統(tǒng)軟件主要通過四個線程來實現(xiàn):主線程、網(wǎng)絡(luò)消息服務(wù)器線程和網(wǎng)絡(luò)消息處理線程以及心跳線程,如圖5-2所示。</p><p> 圖 5-2 機器人中控系統(tǒng)軟件整體程序設(shè)計說明圖</p><p> 傳感器驅(qū)動軟件模塊設(shè)計</p><p> 1、USB攝像頭驅(qū)動和圖
103、像采集功能實現(xiàn)</p><p> 本設(shè)計采用的基于中星微ZC301芯片的USB攝像頭的驅(qū)動已經(jīng)被Linux內(nèi)核支持了,對于USB攝像頭采集圖像功能,只需利用Linux系統(tǒng)提供的V4L接口編程就可以實現(xiàn)。對V4L編程主要有以下幾個步驟:</p><p><b> 打開設(shè)備;</b></p><p><b> 設(shè)置設(shè)備的屬性;<
104、;/b></p><p> 設(shè)定傳輸格式和傳輸方式;</p><p><b> 開始傳輸數(shù)據(jù);</b></p><p><b> 關(guān)閉設(shè)備。</b></p><p> 對于機器人中控系統(tǒng)而言,進行圖像采集,只需調(diào)用底層實現(xiàn)的功能函數(shù)即可。對攝像頭控制,先要調(diào)用libCam_OpenCa
105、mera功能函數(shù)打開該設(shè)備并對其進行初始化,設(shè)置采集圖像的大小。在設(shè)置完成后,調(diào)用libCam_OpenCamera功能函數(shù)獲取到格式為JPEG的圖像數(shù)據(jù)。</p><p> /*打開和初始化攝像頭*/</p><p> int libCam_OpenCamera(char *camera_dev, int w_size, int h_size)</p><p>
106、; /*獲取圖像函數(shù)*/</p><p> int libCam_GetImage(char* image_data, int image_size) </p><p><b> 2、GPS數(shù)據(jù)采集</b></p><p> 本設(shè)計采用的GPS設(shè)備是支持串口傳輸?shù)?,Linux 操作系統(tǒng)從一開始就對串口提供了很好的支持。GPS上電后會自動
107、傳輸當前經(jīng)緯度等數(shù)據(jù)到串口上,只需要往串口讀取數(shù)據(jù)就可以了。串口編程主要有以下幾個步驟:</p><p><b> 打開串口;</b></p><p> 設(shè)置串口屬性,如設(shè)置波特率;</p><p><b> 讀寫串口;</b></p><p><b> 關(guān)閉串口。</b&g
108、t;</p><p> 對于機器人中控系統(tǒng)而言,進行GPS數(shù)據(jù)采集,只需調(diào)用功能函數(shù)libGPS_ReadGPS,GPS數(shù)據(jù)就存儲到gpsData結(jié)構(gòu)體變量中。</p><p> /*讀GPS數(shù)據(jù)*/</p><p> int libGPS_ReadGPS(int fd, struct gpsData *data)</p><p>
109、3、電子羅盤數(shù)據(jù)采集</p><p> 本設(shè)計采用的電子羅盤同樣是支持串口數(shù)據(jù)傳輸?shù)?,機器人中控系統(tǒng)讀取其數(shù)據(jù)只需調(diào)用功能函數(shù)libCom_ReadDegree往串口讀數(shù)據(jù)即可,函數(shù)返回值即為當前地磁偏角的度數(shù)。</p><p> /*讀電子羅盤數(shù)據(jù)*/</p><p> int libCom_ReadDegree()</p><p>
110、 機器人運動控制模塊設(shè)計</p><p> 機器人需要實現(xiàn)運動,必須要提供前進、后退、左轉(zhuǎn)、右轉(zhuǎn)和停止功能。對于這五個功能,是靠驅(qū)動兩個直流電機來實現(xiàn)的。通過使能L298N電機驅(qū)動板上的M1EN和M2EN兩個引腳,使電機處于受控狀態(tài)。分別給M1+、M1-和M2+、M2-加上低電平或者高電平,就能實現(xiàn)以下五個功能。對機器人中控系統(tǒng)而言,這五個功能就相當于五個狀態(tài),而要控制機器人只需調(diào)用libDriver_rob
111、ot功能函數(shù),傳入相應(yīng)的狀態(tài)就可驅(qū)動機器人運動。</p><p> /* 機器人運動控制函數(shù) */</p><p> int libDriver_robot(unsigned int ctrlStatus)</p><p><b> 運動狀態(tài):</b></p><p> #define ROBOT_STATUS_
112、NONE 0x00</p><p> #define ROBOT_STATUS_RUN 0x01</p><p> #define ROBOT_STATUS_STOP 0x02</p><p> #define ROBOT_STATUS_UP 0x03</p><p> #defi
113、ne ROBOT_STATUS_DOWN 0x04</p><p> #define ROBOT_STATUS_RIGHT 0x05</p><p> #define ROBOT_STATUS_LEFT 0x06</p><p> 機器人網(wǎng)絡(luò)通信模塊設(shè)計</p><p><b> 1、TCP協(xié)
114、議簡介</b></p><p> TCP是一種面向連接(連接導(dǎo)向)的、可靠的、基于字節(jié)流的運輸層(Transport layer)通信協(xié)議。其具有的特點如下:</p><p> (1)面向連接的傳輸;</p><p> ?。?)端到端的通信;</p><p> ?。?)高可靠性,確保傳輸數(shù)據(jù)的正確性,不出現(xiàn)丟失或亂序;<
115、/p><p> ?。?)全雙工方式傳輸;</p><p> ?。?)采用字節(jié)流方式,即以字節(jié)為單位傳輸字節(jié)序列;</p><p> (6)緊急數(shù)據(jù)傳送功能。</p><p> 2、Socket編程簡介</p><p> 對于TCP協(xié)議數(shù)據(jù)通信,要先建立連接。服務(wù)器端要先調(diào)用socket()函數(shù)創(chuàng)建一個TCP套接字,函
116、數(shù)bind()將本地IP地址綁定在一起,并可指定服務(wù)器的端口號和接受的客戶端的IP地址范圍。然后調(diào)用函數(shù)listen()將套接字轉(zhuǎn)化為傾聽套接字。當有連接到來的時候,accept()返回一個新的套接字與客戶端通信。當客戶端通過connect()和服務(wù)器建立連接后就可以通過read()和write()傳送數(shù)據(jù)。通信完成通過close()關(guān)閉套接字。</p><p> 3、機器人網(wǎng)絡(luò)編程模塊程序設(shè)計</p&g
117、t;<p> 本設(shè)計利用了TCP協(xié)議和Linux Socket編程,實現(xiàn)了基礎(chǔ)的網(wǎng)絡(luò)庫,提供了非阻塞方式連接服務(wù)器、讀寫網(wǎng)絡(luò)數(shù)據(jù)和創(chuàng)建服務(wù)器以及檢測超時連接等功能函數(shù)。</p><p> 由于進行網(wǎng)絡(luò)通信的時候,網(wǎng)絡(luò)很有可能會遇到異常的情況。為了處理這種情況,本設(shè)計采用了非阻塞的方式來進行網(wǎng)絡(luò)通信。對套接字sock設(shè)置為O_NONBLOCK后,通過函數(shù)fcntl(sock, F_SETFL, O
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于arm的robocup的足球機器人畢業(yè)論文
- 畢業(yè)論文+機器人的運動與控制
- 基于Android系統(tǒng)的遠程機器人控制技術(shù).pdf
- 基于ARM的護理服務(wù)機器人遠程監(jiān)護控制系統(tǒng).pdf
- 機器人搜救畢業(yè)論文
- 消防機器人畢業(yè)論文
- 工業(yè)機器人畢業(yè)論文
- 智能機器人畢業(yè)論文
- 基于web的遠程機器人控制技術(shù)的研究.pdf
- 足球機器人畢業(yè)論文
- 基于ARM9的機器人遠程控制系統(tǒng)研究.pdf
- 基于網(wǎng)絡(luò)的遠程機器人控制技術(shù)研究.pdf
- 基于外骨骼技術(shù)的機器人遠程控制.pdf
- 畢業(yè)論文-足球機器人控制系統(tǒng)設(shè)計
- 基于串行通信技術(shù)的機器人實時控制研究.pdf
- 基于ARM的機器人控制系統(tǒng)設(shè)計.pdf
- 管道清潔機器人畢業(yè)論文
- 畢業(yè)論文外文翻譯(機器人)
- 畢業(yè)論文外文翻譯--機器人
- 基于網(wǎng)絡(luò)的遠程機器人嵌入式控制與通信研究.pdf
評論
0/150
提交評論