基于RaspberryPI的履帶式機械臂智能小車設(shè)計和實現(xiàn) 機械設(shè)計及其自動化專業(yè)
《基于RaspberryPI的履帶式機械臂智能小車設(shè)計和實現(xiàn) 機械設(shè)計及其自動化專業(yè)》由會員分享,可在線閱讀,更多相關(guān)《基于RaspberryPI的履帶式機械臂智能小車設(shè)計和實現(xiàn) 機械設(shè)計及其自動化專業(yè)(40頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、基于RaspberryPI的履帶式機械臂智能小車 摘要:近幾年來,科學(xué)家在智能汽車領(lǐng)域越來越喜歡用RaspberryPI開發(fā)平臺, 這個開發(fā)平臺憑借著它具有吸引力的價格、比較嬌小的尺寸、超強的感應(yīng)接口和強大的編程功能不斷的吸引了國內(nèi)和國外的開發(fā)行業(yè)的關(guān)注,同時,也為智能小車的開發(fā)提供了良好的環(huán)境和創(chuàng)造了巨大的商業(yè)潛力,同時這項技術(shù)在高等教育領(lǐng)域也有很好的應(yīng)用和推廣前景。本文是將RaspberryPI技術(shù)在詳細(xì)分析移動偵測系統(tǒng)原理過程中,改變工作模式,基于實現(xiàn)機制的基礎(chǔ)上,設(shè)計了履帶式機械臂智能小車系統(tǒng)的總體結(jié)構(gòu),并闡述了各個關(guān)鍵模塊的具體實現(xiàn)過程。 關(guān)鍵詞: RaspberryPI;履
2、帶式;機械臂;物聯(lián)網(wǎng);智能小車 Crawler manipulator intelligent car based on RaspberryPI Abstract: In recent years, scientists are increasingly fond of using RaspberryPI development platform in the field of smart cars. With its attractive price, relatively small size, super-strong sensing interface and powe
3、rful programming function, this development platform has attracted the attention of domestic and foreign development industries. At the same time, it also provides a good environment and creates great commercial potential for the development of smart cars. At the same time, this technology has good
4、application and promotion prospects in the field of higher education. In this paper, RaspberryPI technology is used to change the working mode during the detailed analysis of the principle of the Motion detecting system. Based on the implementation mechanism, the overall structure of the tracked man
5、ipulator intelligent trolley system is designed, and the specific implementation process of each key module is described. Key words: RaspberryPI;; Crawler type; Mechanical arm; Internet of things; Intelligent car 目錄 引言 3 1.背景和意義 3 1.1 rasberrypi平臺概述 3 1.2履帶式機器人手臂智能車系統(tǒng)的發(fā)展及現(xiàn)狀 4 1.3履帶式機械臂智能小車
6、訓(xùn)練控制系統(tǒng)的意義 5 2.履帶式機械臂智能小車硬件設(shè)計 5 2.1履帶式機械手智能小車供電方案 7 2.2履帶式機械手智能小車控制中心 10 2.3履帶式機械手智能小車電機驅(qū)動模塊設(shè)計。 11 3 .履帶式機械臂智能小車軟件設(shè)計 11 3.1履帶式機械手智能小車路徑規(guī)劃設(shè)計 13 3.2履帶式機械手智能小車驅(qū)動設(shè)計 14 3.2程序代碼 14 4. 機械手臂的運動理論和總結(jié)展望分析 35 致謝 38 參考文獻 39 引言 隨著現(xiàn)在計算機行業(yè)的高速發(fā)展,讓嵌入式高端技術(shù)也得到了迅猛的發(fā)展,RaspberryPI開發(fā)平臺從歐洲傳入中國就以其小巧玲瓏的體積以及豐
7、富多樣的傳感器接口與強大的編程功能,引起了的強烈反應(yīng)。?在各類履帶式機械臂智能小車中,智能運輸類應(yīng)用是當(dāng)前非常熱門的應(yīng)用之一?自動感應(yīng)運輸物體是各類機械臂智能小車中非常廣泛的應(yīng)用之一,在這個應(yīng)用上,主要的功能就是將物品搬運放置但情況很大程度上節(jié)省了我們的人力和物力。 1.背景和意義 1.1 rasberrypi平臺概述 RaspberryPI是一種嵌入式計算機硬件的平臺,他的內(nèi)存大,占用體積小,由英國慈善組織 “拉斯伯瑞皮基金會”發(fā)布成立。該基金會建立這個的目的是在“改善學(xué)校的里面的計算機科學(xué)和相關(guān)的一些學(xué)科教育,使計算機的學(xué)習(xí)與使用更加有趣”。計算機平臺使用ARM11架構(gòu)處理器,開始使
8、用簡化的Linux操作系統(tǒng)?;臼褂闷脚_的硬件的尺寸大致在80mm×50mm(也就類似于普通集成電路卡上面的尺寸)。RaspberryPI系統(tǒng)被稱為“世界上最微型的桌面”。該平臺提供了極極其的使用成本(新版RaspberryPI 3售價竟低于為35美元)。并且,它還配備了強大的開發(fā)工具以及各種各樣類型的接口,支持SD的卡支持以太網(wǎng)?支持USB?支持視音頻接口等等。目前,RaspberryPI在各種各樣嵌入式平臺開發(fā)中具有超級高的性價比。與此同時,系統(tǒng)中PI體積小,編程功能相當(dāng)強大,尤其適合各種物聯(lián)網(wǎng)或者高新技術(shù)的應(yīng)用的開發(fā)。它廣泛的應(yīng)用于國內(nèi)各種物聯(lián)網(wǎng)發(fā)展和學(xué)校里面的計算機教育事業(yè)。自發(fā)布以來
9、,全球銷量已超過1250萬臺。下面直接給出了Raspberry Pi的構(gòu)件圖,好讓我們有個直觀的印象。 圖1.1 Raspberry Pi的構(gòu)件圖 平臺位最新的系統(tǒng)加上了3456處理系統(tǒng)、還有80個端口,不僅如此,還可以提供WIFI和藍牙的功能以及其他的一些多媒體的端口。開發(fā)環(huán)境與語言作為拉斯伯瑞皮平臺的標(biāo)準(zhǔn)編程開發(fā)語言部署在Linux系統(tǒng)中。它包含自己的一套標(biāo)準(zhǔn)庫,不僅功能十分完善,語法也十分簡單明了,內(nèi)存自我恢復(fù)功能強大。因此它非常適合系統(tǒng)過程管理和網(wǎng)絡(luò)程序開發(fā)利用。通過平臺提供的各種各樣輸入/輸出端口,Python語言也可以輕松的控制各種其他電子設(shè)備以及傳感器,并收集外部環(huán)境的大
10、數(shù)據(jù)。 1.2履帶式機器人手臂智能車系統(tǒng)的發(fā)展及現(xiàn)狀 遙控機械臂的設(shè)計和制造旨在培養(yǎng)我們的開發(fā)能力和實踐動手能力,以及思考問題和處理問題的能力,并且旨在將電子信息的各種各樣專業(yè)的理論知識經(jīng)過思考轉(zhuǎn)化為實踐,通過理論聯(lián)系實際,并且可以能有效提高我們的各方面綜合素質(zhì)和能力。此外,各種傳感器、感應(yīng)器的開發(fā)和使用、計算機技術(shù)的飛速發(fā)展和芯片集成度的迅猛提高使得自動化技術(shù)在我們的生活中日益成熟,生活方式朝著人工智能的方向快速前進。因此,我們大可以認(rèn)為該機械臂小車的設(shè)計大概是基于電子信息的發(fā)展技術(shù),通過我們各種傳感器的充分利用應(yīng)用以及與計算機還有通信網(wǎng)絡(luò)的高速結(jié)合。這使得智能汽車可以通過各種各樣的網(wǎng)絡(luò)
11、中的聲音來判斷和控制。首先,它適用于我們當(dāng)今的自動控制自動技術(shù)。其次,它為智能化的發(fā)展未來研究做好了準(zhǔn)備鋪平了道路。 1.3履帶式機械臂智能小車訓(xùn)練控制系統(tǒng)的意義 隨著科學(xué)技術(shù)水平的發(fā)展,我們的生活越來越智能化,人手相對大腦而言有太多的限制,例如,人手沒有太多的力量,不能在高溫、重傷風(fēng)、深海、外太空等特殊環(huán)境中工作。此外,隨著高科技時代的發(fā)展,一切都不是由人手完成的。因此,有必要設(shè)計一種機械臂來代替人的手臂。此外,大多數(shù)機械臂控制系統(tǒng)并不完美,控制起來也不復(fù)雜。為了使機器人爪到達某個目的地,需要幾條控制指令,超遠(yuǎn)程控制不能通過網(wǎng)絡(luò)進行?;谶@些問題,我們團隊計劃設(shè)計這種智能機器人手臂。當(dāng)我
12、們的控制系統(tǒng)發(fā)出命令以后,手機上面的應(yīng)用程序就可以根據(jù)我們的命令處理語音指令,然后再通過系統(tǒng)將命令發(fā)送給機械臂小車,小車在這種情況下就會自己識別程序命令,然后處理指令,并根據(jù)指令與周圍的環(huán)境咨詢相對應(yīng)的一些動作,在這個過程中,不需要人類的參與,小車會自己動作完成。 圖1.2 信號傳輸 機械臂的設(shè)計給人們帶來了極大的便利,生活中也越來越多的情況下,會使用機械臂幫助我們在非常困難的情況下緩存一些難以完成的事情, 2.履帶式機械臂智能小車硬件設(shè)計 本課題旨在設(shè)計一種智能小車,硬件設(shè)計是整個系統(tǒng)設(shè)計的基礎(chǔ),而需求分析是系統(tǒng)硬件設(shè)計的前提,根據(jù)需求分析對硬件進行模塊化的設(shè)計,整個系統(tǒng)分為R
13、aspberry Pi平臺系統(tǒng)、電源轉(zhuǎn)換電路、JTAG調(diào)試電路、數(shù)據(jù)采集電路、電機驅(qū)動電路、無線通信電路等,模塊化設(shè)計不僅使系統(tǒng)對硬件資源的分配更合理,同時方便系統(tǒng)調(diào)試,下面具體介紹智能小車的硬件設(shè)計。該小車能夠檢測環(huán)境溫度和煙霧濃度,并將采集到的數(shù)據(jù)發(fā)送到計算機,實現(xiàn)計算機的在線監(jiān)測;同時小車還具有避障功能。根據(jù)系統(tǒng)的設(shè)計需求,本智能小車實現(xiàn)以下功能。 (1) 運動功能——智能小車可以進行后退、前進、左右拐彎的運動 (2) 避障功能——可以避開障礙物,選擇一條無碰路徑,其中涉及到傳感器的選擇和路徑規(guī)劃算法; (3) 測溫功能——可以知曉溫度的變化,達到測量的程度; (4
14、) 煙霧報警功能——可以用來測量環(huán)境中的煙霧及有害氣體,濃度超標(biāo)時具有報警功能。 (5) 通信數(shù)據(jù)功能——用無線通信數(shù)據(jù)來建立和計算機的連接。 (6) 上位機顯示功能——計算機能夠清晰的顯示智能小車采集到的數(shù)據(jù),將小車的位置還有運動軌跡以及各種數(shù)據(jù)進行上傳。 智能小車的硬件設(shè)計是以需求分析為基礎(chǔ),選擇合適的控制器和傳感器,其中包括傳感器超聲波傳感器、溫度傳感器、煙霧檢測傳感器、電源電路與控制器接口電路、電機驅(qū)動電路、調(diào)試接口電路等,而這些功能模塊,現(xiàn)在的Raspberry Pi平臺都已具備。 (1) 電源轉(zhuǎn)換電路 由于各元器件的工作電壓不盡相同,為了保證系統(tǒng)的正常運行,
15、需要設(shè)計出不同數(shù)值的電壓,而超聲波傳感器、溫度傳感器、氣體傳感器的工作電壓范圍是+5V,這就需要通過用系統(tǒng)電路模塊設(shè)計的要求來研制出不一樣的電壓值,這才能與系統(tǒng)的需求相掛鉤。因此,電源電路是系統(tǒng)設(shè)計的基礎(chǔ)。在這里Raspberry Pi采用的是5V,2A的Micro USB供電。 (2) 無線通信模塊 通信模塊設(shè)計采用 RS-232 電平轉(zhuǎn)換和 CC1101 無線收發(fā)芯片。通信模塊可以將智能小車采集到的數(shù)據(jù)實時地傳輸?shù)接嬎銠C,同時短距離抗外干擾性強、可靠性比較高、地理環(huán)境因素限制少、實用方便快捷。 (3) JTAG 接口電路 JTAG 電路的主要作用就是用于燒寫 FLASH,
16、由于 PC 機上是沒有 JTAG 接口的,同時 JTAG 接口還可以用來調(diào)試程序,而調(diào)試程序為了通過 JTAG 接口去調(diào)試目標(biāo)板上的程序,同樣是使用 PC 的并口轉(zhuǎn) JTAG 接口來實現(xiàn)與目標(biāo)板的通信。 (4) 溫度采集電路 溫度傳感器輸出信號有三種模式:數(shù)字式溫度傳感器、邏輯輸出溫度傳感器、模擬式溫度傳感器。此傳感器外圍配加的模數(shù)用電路表示較為復(fù)雜,精確度比較低,本課題中選用數(shù)字溫度傳感器 DS18B20,數(shù)字溫度傳感器準(zhǔn)確度非常高、接線簡單、性能穩(wěn)定的優(yōu)點。 (5) 氣體檢測傳感器 氣體檢測模塊用于檢測環(huán)境中有毒氣體的濃度,當(dāng)氣體濃度超過設(shè)定值時,模塊會報警提示。
17、(6) 超聲波測距傳感器 超聲波測距傳感器主要有紅外線、激光以及超聲波測距傳感器三種。紅外的探測距離較短,只有幾十厘米,一般與其他傳感器結(jié)合使用。激光能夠?qū)崿F(xiàn)遠(yuǎn)距離測量,具有速度快、精確度高、抗干擾能力強、量程大,光線集中等優(yōu)點,但其視場窄,難以覆蓋必需的測量范圍,再加上它的價格較貴,所以不是很適合用在小車上。課題中的智能小車用超聲波傳感器來測量距離。 (7) 驅(qū)動電路模塊 驅(qū)動電路是小車運動的基礎(chǔ),主要負(fù)責(zé)將來自控制器的控制信號轉(zhuǎn)化為能夠驅(qū)動電機的信號模塊,電機的驅(qū)動電路使用分立元件構(gòu)成的驅(qū)動電路還有采用專業(yè)電機驅(qū)動芯片,分立元件構(gòu)成的驅(qū)動電路,這種芯片結(jié)構(gòu)較為簡單、價格便宜
18、,電路工作性能表現(xiàn)的不穩(wěn)定,所以選用專用芯片構(gòu)成驅(qū)動電路。 (8)智能小車車體結(jié)構(gòu) 移動機器人的車體結(jié)構(gòu)主要有足步、輪式以及履帶式三種類型。足步式機器人從機械結(jié)構(gòu)設(shè)計到控制算法都比較復(fù)雜,主要應(yīng)用在崎嶇不平的路面,但是其機動性相比自然界的節(jié)肢動物,還是有很大差距。履帶式的實際支撐面積比較大,作業(yè)于松軟土地和泥場,越野性能好,但是履帶機器人的體積和重量都很大,控制算法也有待發(fā)展和完善。輪式機器人的運動速度還有方向易控制,操作容易。 輪式機器人的總類也有很多,一般為三輪或四輪,三輪車的所有的車輪與地面都能保持良好的接觸,可滿足一般的使用要求,但穩(wěn)定性和承受能力較差。四輪結(jié)構(gòu)是最常見的結(jié)構(gòu)形
19、式,具有良好的穩(wěn)定性和承受能力。但是轉(zhuǎn)向結(jié)構(gòu)有所不同,一種是前兩輪由轉(zhuǎn)向電機控制負(fù)責(zé)轉(zhuǎn)向,后兩輪由驅(qū)動電機控制負(fù)責(zé)前進和后退,這種結(jié)構(gòu)的車體轉(zhuǎn)向的角度不容易控制,而且轉(zhuǎn)向半徑也較大。另一種如圖 2-2 左右兩輪 A、B 由兩個電機單獨控制來實現(xiàn)小車的前行、后退,前后兩個為萬向輪 C、D 輔助支撐作用,兩個驅(qū)動輪之間差速來實現(xiàn)轉(zhuǎn)向功能,這種結(jié)構(gòu)的小車轉(zhuǎn)向更加靈活,控制精度較高,采用差速轉(zhuǎn)向的方式。 2.1履帶式機械手智能小車供電方案 硬件系統(tǒng)整個工作基礎(chǔ)是電源,地位較高,人們很容易忽視,電源系統(tǒng)如果注意得當(dāng),整個系統(tǒng)的故障將會大大降低,設(shè)計電源的整個過程就是是一個權(quán)衡的過程,必須考慮如下
20、因素:電源的功率;芯片及系統(tǒng)的散熱;輸出紋波;安全因素;電磁兼容和電磁干擾;體積限制及成本限制。 智能小車控制系統(tǒng)有多種電源需求,MiniARM 工控板需要+5V 和+3.3V 電壓,無線通信模塊是+5V 和+3.3V 電源,超聲波傳感器和氣體傳感器是+5V 電源,所以要設(shè)計不同電壓值的電源。由于系統(tǒng)對 A/D 功能要求不高,所以模擬電源與數(shù)字電源沒有分開供電。 考慮到小車的本身的移動性,所以交流轉(zhuǎn)直流的電壓開關(guān)模塊不方便使用,所以選用了 9V(6 節(jié) 1.5V 的直流電池)直流電源,9V 電源經(jīng)過 7805 變壓芯片,得到+5V 電壓,電路圖如 3-3 所示:其中 LED6 為電源指示燈,R
21、27 為限流電阻,T2、T4 為電路測試點,C4、C5為輸入端濾波電容,C6、C7 為輸出端濾波電容。7805 是大多情況下使用的三端穩(wěn)壓集成芯片,最高輸入極限電壓為 36V,最低輸入電壓為 7V,最佳的工作狀態(tài)是輸入電壓與輸出電壓間的壓差為 3~4V 左右,輸出電壓為 5V,電路內(nèi)有過熱或者是調(diào)整管的電路保護,用起來實用、方便,而且便宜。在實際應(yīng)用中,如果輸出的功率很大,要在穩(wěn)壓電路上安裝比較大一點的散熱器。 +5V 既是末級電源,也是+3.3V 電源的前級電源。MiniARM 控制器需要的+3.3V電壓為+5V電壓通過 SPX1117-3.3 穩(wěn)壓芯片來達到效果的,電壓轉(zhuǎn)換的電路如下圖。
22、 圖2.1 電壓轉(zhuǎn)換電路圖 SPX1117 為一個低功耗、低壓差正向電壓調(diào)節(jié)器,其輸出電壓有 3.3V、3.0V、2.85V、1.8V、1.5V 等,800mA 的穩(wěn)定輸出電流,800mA 時低壓差為 1.1V。SPX1117 有多種封裝,本設(shè)計選用 TO-220。一個 10μF 輸出電容可有效地保證穩(wěn)定性,同時還具有電流限制和熱保護功能,經(jīng)常用于高效率、低功耗設(shè)計中。 電源去耦電路的作用是去除電路間的相互干擾信號,從而減小 PCB 上的各種噪聲,使電源能夠穩(wěn)定工作。高頻器件運轉(zhuǎn)時,它們的電流是不連續(xù)的,間斷的,頻率還很高,在很短的距離內(nèi),線路產(chǎn)生的感抗會非常大,會導(dǎo)致器件在需要電流的時
23、候,不能及時的供給,當(dāng)用大電容濾波時,由于電解電容器繞層很多,因此有明顯的寄生電感,也會干擾用電設(shè)備的正常運行,此時小電容就非常適合,所以要用多個小電容并聯(lián)起來使用。電源去耦電路如圖 圖2.2 電源去耦合電路圖 核心板上設(shè)計了復(fù)位電路,如圖3-6所示。按下按鍵后,會強制將CPU的復(fù)位引腳拉低,從而達到使系統(tǒng)復(fù)位的目的。M2005-NU11工控板含有ISP功能,因此可以設(shè)計一個ISP電路,如圖3-6 所示。LPC2200芯片內(nèi)有一段引導(dǎo)程序,上電后被執(zhí)行,主要用來檢查P0.14引腳電平,如果是低,則進入ISP程序,如果為高,則檢查用戶代碼部分的中斷向量和是否為0,如果校驗正確,則執(zhí)行用
24、戶代碼;如果無有效用戶代碼,則執(zhí)行ISP程序。在本設(shè)計中如果程序調(diào)試完畢后要脫機運行,JP1跳線必須要斷開。 圖2.3 ISP及復(fù)位電路圖 2.2履帶式機械手智能小車控制中心 ( 一) 控制系統(tǒng)。機器小車所采用的控制平臺是Raspberry Pi,RaspberryPI是一種嵌入式計算機硬件的平臺,他的內(nèi)存大,占用體積小,由英國慈善組織 “拉斯伯瑞皮基金會”發(fā)布成立。該基金會建立這個的目的是在“改善學(xué)校的里面的計算機科學(xué)和相關(guān)的一些學(xué)科教育,使計算機的學(xué)習(xí)與使用更加有趣”。計算機平臺使用ARM11架構(gòu)處理器,開始使用簡化的Linux操作系統(tǒng)?;臼褂闷脚_的硬件的尺寸大致在80mm×
25、50mm(也就類似于普通集成電路卡上面的尺寸)。可以將樹莓派連接電視、顯示器、鍵盤鼠標(biāo)等設(shè)備使用。 ( 二) 遠(yuǎn)程控制技術(shù)。本文選擇藍牙技術(shù)進行遠(yuǎn)程控制, HC - 06 藍牙模塊。在機器小車的制造中藍牙模塊的作用主 要是接收 Android 手機發(fā)出的信號,然后作用于單片機控制 系統(tǒng),從而實現(xiàn) Android 手機對機器小車的運行遙控。 ( 三) 驅(qū)動電路仿真。機器小車的底盤是由四個電機組 成,行走時只需要控制四個電機的啟停和正反轉(zhuǎn)即可。在本 課題中是將左右兩邊的兩個電機分別串聯(lián)在一起,然后與驅(qū) 動模塊連接。機器小車上配有機器臂,機器臂工作時應(yīng)處于 慢速狀態(tài),而將兩個電機串聯(lián)的方法剛好
26、滿足了這一要求。 驅(qū)動模塊使用的是 L298N 驅(qū)動芯片,其仿真效果如下圖。 圖2.3 L298N 驅(qū)動芯片仿真效果圖 2.3履帶式機械手智能小車電機驅(qū)動模塊設(shè)計。 使用單片機實現(xiàn)復(fù)位,I / O 控制,PWM 調(diào)速等功能。 目前大多采用開關(guān)型驅(qū)動方式驅(qū)動直流電機,最常見的驅(qū)動 方式是脈沖寬度制(PWM)。 本系統(tǒng)電機驅(qū)動芯片采用 L298N,采 用單片機 PWM 調(diào)速,L298N 驅(qū)動兩組直流電機,其單組驅(qū)動電流 可達 2 A。 電機驅(qū)動模塊原理如圖所示。 圖2.4 電機驅(qū)動模塊原理如圖 Openwrt 是一個小型 Linux 系統(tǒng),路由器安裝上 Openwrt 后
27、, 其功能將變?yōu)楫惓姶?可作為一臺小型服務(wù)器,安裝好數(shù)據(jù)轉(zhuǎn)發(fā) 和監(jiān)控軟件,即可以實現(xiàn)與單片機的串口通信,并用 WIFI 傳輸視 頻信號,實現(xiàn)視頻監(jiān)控功能,本系統(tǒng)安裝的視頻監(jiān)控軟件為 MJPG 。攝像頭通過 USB 接口與路由器相連接,安裝好驅(qū)動 和視頻監(jiān)控軟件后即可通過開發(fā)路由 的 WIFI 功能傳輸視頻信號。 3 .履帶式機械臂智能小車軟件設(shè)計 語音指令由移動應(yīng)用接收并通過網(wǎng)絡(luò)發(fā)送到汽車的ARM9處理器。ARM9通過網(wǎng)絡(luò)將機器人手臂周圍的環(huán)境和汽車的狀態(tài)返回給操作者,從而實現(xiàn)數(shù)據(jù)交互。如何使兩臺機器在不同的內(nèi)部網(wǎng)中進行通信一直是一個難以解決的問題。一般的解決方案是:使用服務(wù)器作為中介,
28、首先將信息發(fā)送到外部網(wǎng)絡(luò)服務(wù)器,然后將其轉(zhuǎn)發(fā)到另一個局域網(wǎng)計算機,或者通過虛擬局域網(wǎng)。然而,由于目前通信軟件的數(shù)量眾多,借用這些通信軟件的服務(wù)器是一個很好的選擇。我們的解決方案是利用微信開源軟件,將自己開發(fā)的應(yīng)用模塊以插件的方式嵌入到微信中。此外,汽車平臺還配備了ARM9處理器,可以作為安卓操作系統(tǒng)使用,因此我們可以安裝一個微信軟件。 在本項目中,我們主要使用控制器的語音信息來操作機器人車,但我們需要遠(yuǎn)程控制(不同網(wǎng)絡(luò)中的通信控制),因此不建議使用硬件設(shè)備來實現(xiàn)語音控制指令識別轉(zhuǎn)換,因此在這里我們使用我們自己的應(yīng)用插件來執(zhí)行語音識別C。翻轉(zhuǎn)。在此之前,應(yīng)用程序?qū)⒄Z音信息識別為文本,然后通過網(wǎng)
29、絡(luò)將文本信息發(fā)送給機器人臂車。機器人臂車接收到文本指令后,將其轉(zhuǎn)換為機器指令,最終達到語音控制。 從軟件系統(tǒng)的角度,介紹了我們的智能車。眾所周知,軟件是所有硬件的靈魂。沒有它,無論硬件設(shè)計多么精致,都很難充分發(fā)揮它的作用。智能小車系統(tǒng)有三個組成部分:環(huán)境感知、決策規(guī)劃還有控制執(zhí)行。環(huán)境感知的輸出可以作為決策規(guī)劃的輸入。決策規(guī)劃的輸出是控制執(zhí)行的輸入??刂茍?zhí)行的輸出控制智能車輛適應(yīng)環(huán)境狀態(tài)的變化,從而形成實時閉環(huán)。隨著智能車的發(fā)展,單智能車處理問題的能力有限,往往只處理簡單的單輛車。很難適應(yīng)連續(xù)的多任務(wù)。其次,它們適應(yīng)有限的環(huán)境,通常在特定的場景中。此外,盡管不同的智能車可以處理不同的任務(wù),但
30、是在一定程度上,它滿足了我們的需求,但是機器人協(xié)作仍然沒有什么突破,我們無法處理復(fù)雜的策略。第三,不同的機器人可以執(zhí)行不同的任務(wù),收集大量的信息,但它們不能共享信息。他使用機器人?;谝陨蠁栴},我們將服務(wù)器作為智能車的服務(wù)控制中心,利用服務(wù)器作為智能小車系統(tǒng)的控制中心,有以下好處: (1) 信息共享:智能汽車共享服務(wù)器知識庫中所有環(huán)境的信息,因此當(dāng)汽車在不熟悉的環(huán)境中工作時,您可以在工作前訪問數(shù)據(jù)庫,詢問環(huán)境中是否有任何環(huán)境字母。如果服務(wù)器具有當(dāng)前的環(huán)境信息,則環(huán)境信息將傳輸?shù)街悄苘?。獲取環(huán)境信息當(dāng)汽車直接根據(jù)獲得的信息進行任務(wù)處理后,汽車就保存了對環(huán)境信息的探索,肯定了。這只是個別車的很
31、多,如果車的數(shù)量增加,效益就不能低估。 (2) 多車協(xié)作:當(dāng)智能車處理任務(wù)相對困難時,需要多輛智能車的配合。例如,在A房間,有一件貨物需要智能車A運到B房間,距離A房間2公里,如果是單個智能車A運到,可能需要10分鐘,而A車的動力只能支持運行5分鐘才能到達C位置,在這種情況下,只有A車不能完成任務(wù)。智能車A把任務(wù)加狀態(tài)信息發(fā)送置服務(wù)器,服務(wù)器用收到的數(shù)據(jù)在C處搜索可使用智能小車。這個發(fā)現(xiàn)發(fā)現(xiàn)發(fā)現(xiàn)在C點附近的智能車B中有足夠的電力,然后服務(wù)器將信息發(fā)送給智能車B,這樣它就可以在智能車B處提貨,并來完成A沒有完成的任務(wù)。 (3) 遠(yuǎn)程監(jiān)控:這是智能系統(tǒng)的控制中心,要對所有的智能小車進行實時監(jiān)
32、控。該方法的優(yōu)點是能及時檢測智能車的故障,避免不必要的損失。此外,當(dāng)汽車不知道如何處理復(fù)雜的道路條件時,智能汽車的運動可以手動和遠(yuǎn)程控制。 (4) 知識存儲:知識庫是服務(wù)器的核心模塊當(dāng)中十分重要的一個?,F(xiàn)在處在數(shù)據(jù)時代。數(shù)據(jù)就像地雷。數(shù)量和內(nèi)容越多,包含的價值就越大。此軟件系統(tǒng)設(shè)計用C語言模塊化結(jié)構(gòu), 包括主程序、pwm調(diào)速子程序、電機驅(qū)動子程序、 中斷子程序、、循跡行駛子程序、無線遙控子程序、避障行駛子程序、、按鍵切換子程序等。系統(tǒng)主程序流程圖如下圖所示。 圖3.1 系統(tǒng)主程序流程圖 3.1履帶式機械手智能小車路徑規(guī)劃設(shè)計 系統(tǒng)是用集成型紅外對管對尋跡單元的作為傳感器使用,紅
33、外線發(fā)射紅外線后,紅外線二極管再進行接收數(shù)據(jù)。使用紅外線進行發(fā)射,可見光對接收信號幾乎沒有影響,用射極輸出器對信號屏蔽。小車底部的一處紅外線收發(fā)對管遇到黑帶時,還能檢測到輸入電平為高電平,反過來是低電平。 3.2履帶式機械手智能小車驅(qū)動設(shè)計 智能小車的電機選用的是直流減速電機,即齒輪減速電機,是在普通直流電機的基礎(chǔ)上,加上配套齒輪減速箱。齒輪減速箱的作用是,提供較低的轉(zhuǎn)速,較大的力矩。同時,齒輪箱不同的減速比可以提供不同的轉(zhuǎn)速和力矩。電機的工作電壓為3-6V,電壓為 6V 時,無負(fù)載時轉(zhuǎn)速為 100 轉(zhuǎn)/分鐘,無負(fù)載時電流為 70mA,減速比為 1:48。 電機驅(qū)動電路連接圖[25]
34、如如 3-15 所示,主要包括光電耦合器件、電機驅(qū)動芯片、整流電路三個部分。光電耦合器件選用的是 TLP521-4,其內(nèi)部含有四組光耦管,用來將控制信號與負(fù)載完全隔離,可以增加安全性,減小信號之間的干擾;電機驅(qū)動芯片選用的是 L298N,為 15 腳 Multiwatt 封裝,其中 IN1、IN2、IN3、IN4 為控制信號輸入端,VS為電源電壓,最大可接 36V,VSS為工作電壓,最小 4.5V,最大 36V,在應(yīng)用中根據(jù)實際情況選擇 5V 電壓。整流電路選用 8 個二極管IN4007。 圖3.2 整流電路圖 測試分析:控制驅(qū)動電路的輸入電平,然后用萬用表測試輸出電壓的大小,檢驗與預(yù)
35、定的結(jié)果一致時,接通電機,編寫電機驅(qū)動程序,小車能夠?qū)崿F(xiàn)前進、后退、左轉(zhuǎn)、右轉(zhuǎn)的功能。 3.2程序代碼 1. 初始化以及模式控制 /** * Function main * @brief 對串口發(fā)送過來的數(shù)據(jù)解析,并執(zhí)行相應(yīng)的指令 * @param[in] void * @retval void * @par History 無 */ int main() { g_modeSelect = 1; //wiringPi初始化 wiringPiSetup(); digitalWrite(Outfi
36、rePin, HIGH); //初始化電機驅(qū)動IO為輸出方式 pinMode(Left_motor_go, OUTPUT); pinMode(Left_motor_back, OUTPUT); pinMode(Right_motor_go, OUTPUT); pinMode(Right_motor_back, OUTPUT); //創(chuàng)建兩個軟件控制的PWM腳 softPwmCreate(Left_motor_pwm,0,255); softPwmCreate(Right_motor_pwm,0,255); //定義左右傳感
37、器為輸入接口 pinMode(AvoidSensorLeft, INPUT); pinMode(AvoidSensorRight, INPUT); //定義尋跡紅外傳感器為輸入模式 pinMode(TrackSensorLeftPin1, INPUT); pinMode(TrackSensorLeftPin2, INPUT); pinMode(TrackSensorRightPin1, INPUT); pinMode(TrackSensorRightPin2, INPUT); //定義光敏電阻引腳為輸入模式 pinMode(
38、LdrSensorLeft, INPUT); pinMode(LdrSensorRight, INPUT); //初始化蜂鳴器IO為輸出方式 pinMode(buzzer, OUTPUT); digitalWrite(buzzer, HIGH); //初始化超聲波引腳模式 pinMode(EchoPin, INPUT); //定義超聲波輸入腳 pinMode(OutfirePin, OUTPUT); //初始化RGB三色LED的IO口為輸出方式,并初始化 pinMode(LED_R, OUTPUT);
39、 pinMode(LED_G, OUTPUT); pinMode(LED_B, OUTPUT); softPwmCreate(LED_R,0,255); softPwmCreate(LED_G,0,255); softPwmCreate(LED_B,0,255); //初始化舵機引腳為輸出模式 pinMode(FrontServoPin, OUTPUT); //初始化舵機引腳為輸出模式 pinMode(FrontServoPin, OUTPUT); pinMode(ServoUpDownPin, OUTPUT);
40、 pinMode(ServoLeftRightPin, OUTPUT); //舵機位置初始化 servo_init(); //打開串口設(shè)備,如若失敗則會打印錯誤信息 return -1; } while(1) { //調(diào)用串口解包函數(shù) serialEvent(); if (NewLineReceived) { printf("serialdata:%s\n",InputString); serial_data_parse(); //調(diào)用串口解析函數(shù) NewLineReceived
41、 = 0; } //切換不同功能模式 switch (g_modeSelect) { case 1: break; //暫時保留 case 2: Tracking_Mode(); break; //巡線模式 } //舵機云臺的控制 Servo_Control_Thread(); //讓串口平均每秒發(fā)送采集的數(shù)據(jù)給上位機 if(g_modeSelect == 1) { serialtime--; if(serialtime ==0) {
42、count--; serialtime = 5000; if(count == 0) { serial_data_postback(fd); serialtime = 5000; count = 20; } } } usleep(10); } serialClose(fd); //關(guān)閉串口 return 0; } 2. 舵機旋轉(zhuǎn)一定的角度 /** * Function servo_pulse * 控制0-180度 * @param[in
43、1] ServPin:舵機控制引腳 * @param[in2] myangle:舵機轉(zhuǎn)動指定的角度 * @param[out] void * @retval void * @par History 無 */ void servo_pulse(int v_iServoPin, int myangle) { int PulseWidth; //定義脈寬變量 delayMicroseconds(PulseWidth); //延時脈寬值的微秒數(shù) * @param[in] pos
44、:指定的角度 * @param[out] void * @retval void * @par History 無 */ void servo_appointed_detection(int pos) { int i = 0; 3. 超聲波測距函數(shù) /** * Function Distance * @brief 超聲波測一次前方的距離 * @param[in] void * @param[out] void * @retval float:distance返回距離值 *
45、@par History 無 */ float Distance() { float distance; struct timeval tv1; struct timeval tv2; struct timeval tv3; struct timeval tv4; long start, stop; digitalWrite(TrigPin, LOW); delayMicroseconds(2); start = tv3.tv_sec * 1000000 + tv3.tv_usec; while(!digitalRead(EchoPi
46、n) == 1) { { return -1; //超時返回-1 } } start = tv1.tv_sec*1000000+tv1.tv_usec; while(!digitalRead(EchoPin) == 0) { gettimeofday(&tv3,NULL); //超時重測機制開始計時 stop = tv3.tv_sec*1000000+tv3.tv_usec; if ((stop - start) > 30000) { return -1; }
47、 } //超時重測機制結(jié)束計時 gettimeofday(&tv2, NULL); //當(dāng)echo腳電平變低時結(jié)束計時 start = tv1.tv_sec * 1000000 + tv1.tv_usec; stop = tv2.tv_sec * 1000000 + tv2.tv_usec; distance = (float)(stop - start)/1000000 * 34000 / 2; printf("distance: %f\n", distance); return dist
48、ance; } 4. 小車前進、后退、剎車、左拐、右拐等運行函數(shù) /** * Function run * @brief 小車前進 * @retval void * @par History 無 */ void run(unsigned int LeftCarSpeedControl,unsigned int RightCarSpeedControl) { //左電機前進 softPwmWrite(Left_motor_pwm, LeftCarSpeedControl*0.95); //右電機
49、前進 softPwmWrite(Right_motor_pwm, RightCarSpeedControl); } /** * Function brake * @brief 小車剎車 * @param[in] void * @param[out] void * @retval void * @par History 無 */ void brake() { digitalWrite(Left_motor_go, LOW); digitalWrite(Left_motor_back, L
50、OW); digitalWrite(Right_motor_go, LOW); digitalWrite(Right_motor_back, LOW); } /** * Function left * @par History 無 */ void left(unsigned int LeftCarSpeedControl,unsigned int RightCarSpeedControl) { //左電機停止 softPwmWrite(Left_motor_pwm, LeftCarSpeedControl); //
51、右電機前進 softPwmWrite(Right_motor_pwm, RightCarSpeedControl); } /** * Function spin_left * @brief 小車原地左轉(zhuǎn)(左輪后退,右輪前進) * @retval void * @par History 無 */ void spin_left(unsigned int LeftCarSpeedControl,unsigned int RightCarSpeedControl) { //左電機后退 softPwmWrit
52、e(Left_motor_pwm, LeftCarSpeedControl); //右電機前進 softPwmWrite(Right_motor_pwm, RightCarSpeedControl); } /** * Function right * @brief 小車右轉(zhuǎn)(左輪前進,右輪不動) * @param[out] void * @retval void * @par History 無 */ void right(unsigned int LeftCarSpeedControl,un
53、signed int RightCarSpeedControl) { //左電機前進 digitalWrite(Left_motor_go, HIGH); //左電機前進使能 digitalWrite(Left_motor_back, LOW); //左電機后退禁止 softPwmWrite(Left_motor_pwm, LeftCarSpeedControl); //右電機停止 softPwmWrite(Right_motor_pwm, RightCarSpeedControl); } /** * Function
54、 spin_right * @brief 小車原地右轉(zhuǎn)(右輪后退,左輪前進) * @param[out] void * @retval void * @par History 無 */ void spin_right(unsigned int LeftCarSpeedControl,unsigned int RightCarSpeedControl) { //左電機前進 softPwmWrite(Left_motor_pwm, LeftCarSpeedControl); //右電機后退 sof
55、tPwmWrite(Right_motor_pwm, RightCarSpeedControl); } /** * Function back * @brief 小車后退 * @param[out] void * @retval void * @par History 無 */ void back(unsigned int LeftCarSpeedControl,unsigned int RightCarSpeedControl) { //左電機后退 softPwmWrite(Left_motor
56、_pwm, LeftCarSpeedControl); //右電機后退 softPwmWrite(Right_motor_pwm, RightCarSpeedControl); } 5. 小車巡線模式函數(shù) /***********模式2 巡線模式*************/ /** * Function Tracking_Mode * @brief 巡線模式 * @param[in1] void * @param[out] void * @retval void * @par History
57、 無 */ int g_trackstate = 0; void Tracking_Mode() { char *p=ReturnTemp; memset(ReturnTemp,0,sizeof(ReturnTemp)); track_test(); //在巡線過程中發(fā)送巡線傳感器效果 serialtime--; if(serialtime == 0) { count--; serialtime = 5000; if(count == 0) { strcat(p,"4WD,CSB0,PV8
58、.4,GS0,LF"); strcat(p,infrared_track_value); strcat(p,",HW00,GM00#"); serialPrintf(fd, p); serialtime = 5000; count = 20; } } //四路循跡引腳電平狀態(tài) // 0 0 X 0 // 1 0 X 0 // 0 1 X 0 //以上6種電平狀態(tài)時小車原地右轉(zhuǎn),速度為250,延時80ms //處理右銳角和右直角的轉(zhuǎn)動 if ( (TrackSensor
59、LeftValue1 == LOW || TrackSensorLeftValue2 == LOW) && TrackSensorRightValue2 == LOW) { g_trackstate = 1; spin_right(200, 200); // luz 250, 250 delay(80); } //四路循跡引腳電平狀態(tài) // 0 X 0 0 // 0 X 0 1 // 0 X 1 0 //處理左銳角和左直角的轉(zhuǎn)動 else if ( TrackSen
60、sorLeftValue1 == LOW && (TrackSensorRightValue1 == LOW || TrackSensorRightValue2 == LOW)) { g_trackstate = 2; spin_left(200, 200); // luz 250, 250 delay(80); } // 0 X X X //最左邊檢測到 else if ( TrackSensorLeftValue1 == LOW) { g_trackstate = 3; spin_l
61、eft(160, 160); //luz 200, 200 //delay(10); } // X X X 0 //最右邊檢測到 else if ( TrackSensorRightValue2 == LOW ) { g_trackstate = 4; spin_right(160, 160); //luz 200, 200 //delay(10); } //四路循跡引腳電平狀態(tài) // X 0 1 X //處理左小彎 else if ( TrackSensorLeftV
62、alue2 == LOW && TrackSensorRightValue1 == HIGH) { g_trackstate = 5; left(0, 176); //luz 0, 220 } //四路循跡引腳電平狀態(tài) // X 1 0 X //處理右小彎 else if (TrackSensorLeftValue2 == HIGH && TrackSensorRightValue1 == LOW) { g_trackstate = 6; right(176, 0); //luz 220
63、,0 } //四路循跡引腳電平狀態(tài) // X 0 0 X //處理直線 else if (TrackSensorLeftValue2 == LOW && TrackSensorRightValue1 == LOW) { g_trackstate = 7; run(204, 204); //luz 255, 255 } else { switch(g_trackstate) { } } //當(dāng)為1 1 1 1時小車保持上一個小車運行狀態(tài) } 6
64、. 攝像頭舵機根據(jù)超聲波測距距離的動作函數(shù) /** * Function servo_color_carstate * @brief 舵機轉(zhuǎn)向超聲波測距避障行駛,led根據(jù)車的狀態(tài)顯示相應(yīng)的顏色 * @param[in] void * @param[out] void * @retval void * @par History 無 */ void servo_color_carstate() { float distance; //定義舵機位置變量和小車前方,左側(cè),右側(cè)距離 int iServo
65、Pos = 0; int LeftDistance = 0; //左方距離值變量LeftDistance int RightDistance = 0; //右方距離值變量RightDistance int FrontDistance = 0; //前方距離值變量FrontDistance color_led_pwm(255, 0, 0);//開紅燈 back(80,80); //避免突然停止,剎不住車 delay(80); brake(); //舵機旋轉(zhuǎn)到0度,即右側(cè),測距 servo_appoin
66、ted_detection(0); delay(500); distance = Distance_test(); //測距 RightDistance = distance; //所測的右側(cè)距離賦給變量RightDistance //printf("rightdistance :%d\n",RightDistance); //舵機旋轉(zhuǎn)到180度,即左側(cè),測距 servo_appointed_detection(180); delay(500); distance = Distance_test(); //測距 LeftDistance = distance;//所測的左側(cè)距離賦給變量LeftDistance // printf("leftdistance :%d\n",LeftDistance); //舵機旋轉(zhuǎn)到90度,即左側(cè),測距 servo_appointed_detection(90); delay(500); distance = Distance_test();
- 溫馨提示:
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)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 健康及健康的影響因素課件
- 補氣中藥專題知識講座
- 冠芥蒂防備治療康復(fù)課件
- (精品)第一節(jié)音樂能告訴我們什么
- 廣告管理的要決
- 團區(qū)委X年工作總結(jié)
- 藥品公共安全事件典型案例回顧
- (精品)理想從這里啟程
- 第05講--真空中的麥克斯韋方程組-山東-大學(xué)-物理-學(xué)院-電動力學(xué)-課件
- 高一英語人教版必修一Unit2writing課件
- 依法保護未成年人的合法權(quán)益-PPT課件
- 精益生產(chǎn)豐田生產(chǎn)方式七大浪費_
- 人教版八年級英語下冊Unit-2-Gra課件
- 好習(xí)慣養(yǎng)成主題班會課件
- 5章投資管理A