基于RaspberryPI的履帶式機(jī)械臂智能小車設(shè)計(jì)和實(shí)現(xiàn) 機(jī)械設(shè)計(jì)及其自動(dòng)化專業(yè)

上傳人:文*** 文檔編號(hào):55520242 上傳時(shí)間:2022-02-18 格式:DOCX 頁數(shù):40 大?。?.84MB
收藏 版權(quán)申訴 舉報(bào) 下載
基于RaspberryPI的履帶式機(jī)械臂智能小車設(shè)計(jì)和實(shí)現(xiàn) 機(jī)械設(shè)計(jì)及其自動(dòng)化專業(yè)_第1頁
第1頁 / 共40頁
基于RaspberryPI的履帶式機(jī)械臂智能小車設(shè)計(jì)和實(shí)現(xiàn) 機(jī)械設(shè)計(jì)及其自動(dòng)化專業(yè)_第2頁
第2頁 / 共40頁
基于RaspberryPI的履帶式機(jī)械臂智能小車設(shè)計(jì)和實(shí)現(xiàn) 機(jī)械設(shè)計(jì)及其自動(dòng)化專業(yè)_第3頁
第3頁 / 共40頁

下載文檔到電腦,查找使用更方便

20 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《基于RaspberryPI的履帶式機(jī)械臂智能小車設(shè)計(jì)和實(shí)現(xiàn) 機(jī)械設(shè)計(jì)及其自動(dòng)化專業(yè)》由會(huì)員分享,可在線閱讀,更多相關(guān)《基于RaspberryPI的履帶式機(jī)械臂智能小車設(shè)計(jì)和實(shí)現(xiàn) 機(jī)械設(shè)計(jì)及其自動(dòng)化專業(yè)(40頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、基于RaspberryPI的履帶式機(jī)械臂智能小車 摘要:近幾年來,科學(xué)家在智能汽車領(lǐng)域越來越喜歡用RaspberryPI開發(fā)平臺(tái), 這個(gè)開發(fā)平臺(tái)憑借著它具有吸引力的價(jià)格、比較嬌小的尺寸、超強(qiáng)的感應(yīng)接口和強(qiáng)大的編程功能不斷的吸引了國內(nèi)和國外的開發(fā)行業(yè)的關(guān)注,同時(shí),也為智能小車的開發(fā)提供了良好的環(huán)境和創(chuàng)造了巨大的商業(yè)潛力,同時(shí)這項(xiàng)技術(shù)在高等教育領(lǐng)域也有很好的應(yīng)用和推廣前景。本文是將RaspberryPI技術(shù)在詳細(xì)分析移動(dòng)偵測系統(tǒng)原理過程中,改變工作模式,基于實(shí)現(xiàn)機(jī)制的基礎(chǔ)上,設(shè)計(jì)了履帶式機(jī)械臂智能小車系統(tǒng)的總體結(jié)構(gòu),并闡述了各個(gè)關(guān)鍵模塊的具體實(shí)現(xiàn)過程。 關(guān)鍵詞: RaspberryPI;履

2、帶式;機(jī)械臂;物聯(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平臺(tái)概述 3 1.2履帶式機(jī)器人手臂智能車系統(tǒng)的發(fā)展及現(xiàn)狀 4 1.3履帶式機(jī)械臂智能小車

6、訓(xùn)練控制系統(tǒng)的意義 5 2.履帶式機(jī)械臂智能小車硬件設(shè)計(jì) 5 2.1履帶式機(jī)械手智能小車供電方案 7 2.2履帶式機(jī)械手智能小車控制中心 10 2.3履帶式機(jī)械手智能小車電機(jī)驅(qū)動(dòng)模塊設(shè)計(jì)。 11 3 .履帶式機(jī)械臂智能小車軟件設(shè)計(jì) 11 3.1履帶式機(jī)械手智能小車路徑規(guī)劃設(shè)計(jì) 13 3.2履帶式機(jī)械手智能小車驅(qū)動(dòng)設(shè)計(jì) 14 3.2程序代碼 14 4. 機(jī)械手臂的運(yùn)動(dòng)理論和總結(jié)展望分析 35 致謝 38 參考文獻(xiàn) 39 引言 隨著現(xiàn)在計(jì)算機(jī)行業(yè)的高速發(fā)展,讓嵌入式高端技術(shù)也得到了迅猛的發(fā)展,RaspberryPI開發(fā)平臺(tái)從歐洲傳入中國就以其小巧玲瓏的體積以及豐

7、富多樣的傳感器接口與強(qiáng)大的編程功能,引起了的強(qiáng)烈反應(yīng)。?在各類履帶式機(jī)械臂智能小車中,智能運(yùn)輸類應(yīng)用是當(dāng)前非常熱門的應(yīng)用之一?自動(dòng)感應(yīng)運(yùn)輸物體是各類機(jī)械臂智能小車中非常廣泛的應(yīng)用之一,在這個(gè)應(yīng)用上,主要的功能就是將物品搬運(yùn)放置但情況很大程度上節(jié)省了我們的人力和物力。 1.背景和意義 1.1 rasberrypi平臺(tái)概述 RaspberryPI是一種嵌入式計(jì)算機(jī)硬件的平臺(tái),他的內(nèi)存大,占用體積小,由英國慈善組織 “拉斯伯瑞皮基金會(huì)”發(fā)布成立。該基金會(huì)建立這個(gè)的目的是在“改善學(xué)校的里面的計(jì)算機(jī)科學(xué)和相關(guān)的一些學(xué)科教育,使計(jì)算機(jī)的學(xué)習(xí)與使用更加有趣”。計(jì)算機(jī)平臺(tái)使用ARM11架構(gòu)處理器,開始使

8、用簡化的Linux操作系統(tǒng)。基本使用平臺(tái)的硬件的尺寸大致在80mm×50mm(也就類似于普通集成電路卡上面的尺寸)。RaspberryPI系統(tǒng)被稱為“世界上最微型的桌面”。該平臺(tái)提供了極極其的使用成本(新版RaspberryPI 3售價(jià)竟低于為35美元)。并且,它還配備了強(qiáng)大的開發(fā)工具以及各種各樣類型的接口,支持SD的卡支持以太網(wǎng)?支持USB?支持視音頻接口等等。目前,RaspberryPI在各種各樣嵌入式平臺(tái)開發(fā)中具有超級(jí)高的性價(jià)比。與此同時(shí),系統(tǒng)中PI體積小,編程功能相當(dāng)強(qiáng)大,尤其適合各種物聯(lián)網(wǎng)或者高新技術(shù)的應(yīng)用的開發(fā)。它廣泛的應(yīng)用于國內(nèi)各種物聯(lián)網(wǎng)發(fā)展和學(xué)校里面的計(jì)算機(jī)教育事業(yè)。自發(fā)布以來

9、,全球銷量已超過1250萬臺(tái)。下面直接給出了Raspberry Pi的構(gòu)件圖,好讓我們有個(gè)直觀的印象。 圖1.1 Raspberry Pi的構(gòu)件圖 平臺(tái)位最新的系統(tǒng)加上了3456處理系統(tǒng)、還有80個(gè)端口,不僅如此,還可以提供WIFI和藍(lán)牙的功能以及其他的一些多媒體的端口。開發(fā)環(huán)境與語言作為拉斯伯瑞皮平臺(tái)的標(biāo)準(zhǔn)編程開發(fā)語言部署在Linux系統(tǒng)中。它包含自己的一套標(biāo)準(zhǔn)庫,不僅功能十分完善,語法也十分簡單明了,內(nèi)存自我恢復(fù)功能強(qiáng)大。因此它非常適合系統(tǒng)過程管理和網(wǎng)絡(luò)程序開發(fā)利用。通過平臺(tái)提供的各種各樣輸入/輸出端口,Python語言也可以輕松的控制各種其他電子設(shè)備以及傳感器,并收集外部環(huán)境的大

10、數(shù)據(jù)。 1.2履帶式機(jī)器人手臂智能車系統(tǒng)的發(fā)展及現(xiàn)狀 遙控機(jī)械臂的設(shè)計(jì)和制造旨在培養(yǎng)我們的開發(fā)能力和實(shí)踐動(dòng)手能力,以及思考問題和處理問題的能力,并且旨在將電子信息的各種各樣專業(yè)的理論知識(shí)經(jīng)過思考轉(zhuǎn)化為實(shí)踐,通過理論聯(lián)系實(shí)際,并且可以能有效提高我們的各方面綜合素質(zhì)和能力。此外,各種傳感器、感應(yīng)器的開發(fā)和使用、計(jì)算機(jī)技術(shù)的飛速發(fā)展和芯片集成度的迅猛提高使得自動(dòng)化技術(shù)在我們的生活中日益成熟,生活方式朝著人工智能的方向快速前進(jìn)。因此,我們大可以認(rèn)為該機(jī)械臂小車的設(shè)計(jì)大概是基于電子信息的發(fā)展技術(shù),通過我們各種傳感器的充分利用應(yīng)用以及與計(jì)算機(jī)還有通信網(wǎng)絡(luò)的高速結(jié)合。這使得智能汽車可以通過各種各樣的網(wǎng)絡(luò)

11、中的聲音來判斷和控制。首先,它適用于我們當(dāng)今的自動(dòng)控制自動(dòng)技術(shù)。其次,它為智能化的發(fā)展未來研究做好了準(zhǔn)備鋪平了道路。 1.3履帶式機(jī)械臂智能小車訓(xùn)練控制系統(tǒng)的意義 隨著科學(xué)技術(shù)水平的發(fā)展,我們的生活越來越智能化,人手相對(duì)大腦而言有太多的限制,例如,人手沒有太多的力量,不能在高溫、重傷風(fēng)、深海、外太空等特殊環(huán)境中工作。此外,隨著高科技時(shí)代的發(fā)展,一切都不是由人手完成的。因此,有必要設(shè)計(jì)一種機(jī)械臂來代替人的手臂。此外,大多數(shù)機(jī)械臂控制系統(tǒng)并不完美,控制起來也不復(fù)雜。為了使機(jī)器人爪到達(dá)某個(gè)目的地,需要幾條控制指令,超遠(yuǎn)程控制不能通過網(wǎng)絡(luò)進(jìn)行?;谶@些問題,我們團(tuán)隊(duì)計(jì)劃設(shè)計(jì)這種智能機(jī)器人手臂。當(dāng)我

12、們的控制系統(tǒng)發(fā)出命令以后,手機(jī)上面的應(yīng)用程序就可以根據(jù)我們的命令處理語音指令,然后再通過系統(tǒng)將命令發(fā)送給機(jī)械臂小車,小車在這種情況下就會(huì)自己識(shí)別程序命令,然后處理指令,并根據(jù)指令與周圍的環(huán)境咨詢相對(duì)應(yīng)的一些動(dòng)作,在這個(gè)過程中,不需要人類的參與,小車會(huì)自己動(dòng)作完成。 圖1.2 信號(hào)傳輸 機(jī)械臂的設(shè)計(jì)給人們帶來了極大的便利,生活中也越來越多的情況下,會(huì)使用機(jī)械臂幫助我們?cè)诜浅@щy的情況下緩存一些難以完成的事情, 2.履帶式機(jī)械臂智能小車硬件設(shè)計(jì) 本課題旨在設(shè)計(jì)一種智能小車,硬件設(shè)計(jì)是整個(gè)系統(tǒng)設(shè)計(jì)的基礎(chǔ),而需求分析是系統(tǒng)硬件設(shè)計(jì)的前提,根據(jù)需求分析對(duì)硬件進(jìn)行模塊化的設(shè)計(jì),整個(gè)系統(tǒng)分為R

13、aspberry Pi平臺(tái)系統(tǒng)、電源轉(zhuǎn)換電路、JTAG調(diào)試電路、數(shù)據(jù)采集電路、電機(jī)驅(qū)動(dòng)電路、無線通信電路等,模塊化設(shè)計(jì)不僅使系統(tǒng)對(duì)硬件資源的分配更合理,同時(shí)方便系統(tǒng)調(diào)試,下面具體介紹智能小車的硬件設(shè)計(jì)。該小車能夠檢測環(huán)境溫度和煙霧濃度,并將采集到的數(shù)據(jù)發(fā)送到計(jì)算機(jī),實(shí)現(xiàn)計(jì)算機(jī)的在線監(jiān)測;同時(shí)小車還具有避障功能。根據(jù)系統(tǒng)的設(shè)計(jì)需求,本智能小車實(shí)現(xiàn)以下功能。 (1) 運(yùn)動(dòng)功能——智能小車可以進(jìn)行后退、前進(jìn)、左右拐彎的運(yùn)動(dòng) (2) 避障功能——可以避開障礙物,選擇一條無碰路徑,其中涉及到傳感器的選擇和路徑規(guī)劃算法; (3) 測溫功能——可以知曉溫度的變化,達(dá)到測量的程度; (4

14、) 煙霧報(bào)警功能——可以用來測量環(huán)境中的煙霧及有害氣體,濃度超標(biāo)時(shí)具有報(bào)警功能。 (5) 通信數(shù)據(jù)功能——用無線通信數(shù)據(jù)來建立和計(jì)算機(jī)的連接。 (6) 上位機(jī)顯示功能——計(jì)算機(jī)能夠清晰的顯示智能小車采集到的數(shù)據(jù),將小車的位置還有運(yùn)動(dòng)軌跡以及各種數(shù)據(jù)進(jìn)行上傳。 智能小車的硬件設(shè)計(jì)是以需求分析為基礎(chǔ),選擇合適的控制器和傳感器,其中包括傳感器超聲波傳感器、溫度傳感器、煙霧檢測傳感器、電源電路與控制器接口電路、電機(jī)驅(qū)動(dòng)電路、調(diào)試接口電路等,而這些功能模塊,現(xiàn)在的Raspberry Pi平臺(tái)都已具備。 (1) 電源轉(zhuǎn)換電路 由于各元器件的工作電壓不盡相同,為了保證系統(tǒng)的正常運(yùn)行,

15、需要設(shè)計(jì)出不同數(shù)值的電壓,而超聲波傳感器、溫度傳感器、氣體傳感器的工作電壓范圍是+5V,這就需要通過用系統(tǒng)電路模塊設(shè)計(jì)的要求來研制出不一樣的電壓值,這才能與系統(tǒng)的需求相掛鉤。因此,電源電路是系統(tǒng)設(shè)計(jì)的基礎(chǔ)。在這里Raspberry Pi采用的是5V,2A的Micro USB供電。 (2) 無線通信模塊 通信模塊設(shè)計(jì)采用 RS-232 電平轉(zhuǎn)換和 CC1101 無線收發(fā)芯片。通信模塊可以將智能小車采集到的數(shù)據(jù)實(shí)時(shí)地傳輸?shù)接?jì)算機(jī),同時(shí)短距離抗外干擾性強(qiáng)、可靠性比較高、地理環(huán)境因素限制少、實(shí)用方便快捷。 (3) JTAG 接口電路 JTAG 電路的主要作用就是用于燒寫 FLASH,

16、由于 PC 機(jī)上是沒有 JTAG 接口的,同時(shí) JTAG 接口還可以用來調(diào)試程序,而調(diào)試程序?yàn)榱送ㄟ^ JTAG 接口去調(diào)試目標(biāo)板上的程序,同樣是使用 PC 的并口轉(zhuǎn) JTAG 接口來實(shí)現(xiàn)與目標(biāo)板的通信。 (4) 溫度采集電路 溫度傳感器輸出信號(hào)有三種模式:數(shù)字式溫度傳感器、邏輯輸出溫度傳感器、模擬式溫度傳感器。此傳感器外圍配加的模數(shù)用電路表示較為復(fù)雜,精確度比較低,本課題中選用數(shù)字溫度傳感器 DS18B20,數(shù)字溫度傳感器準(zhǔn)確度非常高、接線簡單、性能穩(wěn)定的優(yōu)點(diǎn)。 (5) 氣體檢測傳感器 氣體檢測模塊用于檢測環(huán)境中有毒氣體的濃度,當(dāng)氣體濃度超過設(shè)定值時(shí),模塊會(huì)報(bào)警提示。

17、(6) 超聲波測距傳感器 超聲波測距傳感器主要有紅外線、激光以及超聲波測距傳感器三種。紅外的探測距離較短,只有幾十厘米,一般與其他傳感器結(jié)合使用。激光能夠?qū)崿F(xiàn)遠(yuǎn)距離測量,具有速度快、精確度高、抗干擾能力強(qiáng)、量程大,光線集中等優(yōu)點(diǎn),但其視場窄,難以覆蓋必需的測量范圍,再加上它的價(jià)格較貴,所以不是很適合用在小車上。課題中的智能小車用超聲波傳感器來測量距離。 (7) 驅(qū)動(dòng)電路模塊 驅(qū)動(dòng)電路是小車運(yùn)動(dòng)的基礎(chǔ),主要負(fù)責(zé)將來自控制器的控制信號(hào)轉(zhuǎn)化為能夠驅(qū)動(dòng)電機(jī)的信號(hào)模塊,電機(jī)的驅(qū)動(dòng)電路使用分立元件構(gòu)成的驅(qū)動(dòng)電路還有采用專業(yè)電機(jī)驅(qū)動(dòng)芯片,分立元件構(gòu)成的驅(qū)動(dòng)電路,這種芯片結(jié)構(gòu)較為簡單、價(jià)格便宜

18、,電路工作性能表現(xiàn)的不穩(wěn)定,所以選用專用芯片構(gòu)成驅(qū)動(dòng)電路。 (8)智能小車車體結(jié)構(gòu) 移動(dòng)機(jī)器人的車體結(jié)構(gòu)主要有足步、輪式以及履帶式三種類型。足步式機(jī)器人從機(jī)械結(jié)構(gòu)設(shè)計(jì)到控制算法都比較復(fù)雜,主要應(yīng)用在崎嶇不平的路面,但是其機(jī)動(dòng)性相比自然界的節(jié)肢動(dòng)物,還是有很大差距。履帶式的實(shí)際支撐面積比較大,作業(yè)于松軟土地和泥場,越野性能好,但是履帶機(jī)器人的體積和重量都很大,控制算法也有待發(fā)展和完善。輪式機(jī)器人的運(yùn)動(dòng)速度還有方向易控制,操作容易。 輪式機(jī)器人的總類也有很多,一般為三輪或四輪,三輪車的所有的車輪與地面都能保持良好的接觸,可滿足一般的使用要求,但穩(wěn)定性和承受能力較差。四輪結(jié)構(gòu)是最常見的結(jié)構(gòu)形

19、式,具有良好的穩(wěn)定性和承受能力。但是轉(zhuǎn)向結(jié)構(gòu)有所不同,一種是前兩輪由轉(zhuǎn)向電機(jī)控制負(fù)責(zé)轉(zhuǎn)向,后兩輪由驅(qū)動(dòng)電機(jī)控制負(fù)責(zé)前進(jìn)和后退,這種結(jié)構(gòu)的車體轉(zhuǎn)向的角度不容易控制,而且轉(zhuǎn)向半徑也較大。另一種如圖 2-2 左右兩輪 A、B 由兩個(gè)電機(jī)單獨(dú)控制來實(shí)現(xiàn)小車的前行、后退,前后兩個(gè)為萬向輪 C、D 輔助支撐作用,兩個(gè)驅(qū)動(dòng)輪之間差速來實(shí)現(xiàn)轉(zhuǎn)向功能,這種結(jié)構(gòu)的小車轉(zhuǎn)向更加靈活,控制精度較高,采用差速轉(zhuǎn)向的方式。 2.1履帶式機(jī)械手智能小車供電方案 硬件系統(tǒng)整個(gè)工作基礎(chǔ)是電源,地位較高,人們很容易忽視,電源系統(tǒng)如果注意得當(dāng),整個(gè)系統(tǒng)的故障將會(huì)大大降低,設(shè)計(jì)電源的整個(gè)過程就是是一個(gè)權(quán)衡的過程,必須考慮如下

20、因素:電源的功率;芯片及系統(tǒng)的散熱;輸出紋波;安全因素;電磁兼容和電磁干擾;體積限制及成本限制。 智能小車控制系統(tǒng)有多種電源需求,MiniARM 工控板需要+5V 和+3.3V 電壓,無線通信模塊是+5V 和+3.3V 電源,超聲波傳感器和氣體傳感器是+5V 電源,所以要設(shè)計(jì)不同電壓值的電源。由于系統(tǒng)對(duì) A/D 功能要求不高,所以模擬電源與數(shù)字電源沒有分開供電。 考慮到小車的本身的移動(dòng)性,所以交流轉(zhuǎn)直流的電壓開關(guān)模塊不方便使用,所以選用了 9V(6 節(jié) 1.5V 的直流電池)直流電源,9V 電源經(jīng)過 7805 變壓芯片,得到+5V 電壓,電路圖如 3-3 所示:其中 LED6 為電源指示燈,R

21、27 為限流電阻,T2、T4 為電路測試點(diǎn),C4、C5為輸入端濾波電容,C6、C7 為輸出端濾波電容。7805 是大多情況下使用的三端穩(wěn)壓集成芯片,最高輸入極限電壓為 36V,最低輸入電壓為 7V,最佳的工作狀態(tài)是輸入電壓與輸出電壓間的壓差為 3~4V 左右,輸出電壓為 5V,電路內(nèi)有過熱或者是調(diào)整管的電路保護(hù),用起來實(shí)用、方便,而且便宜。在實(shí)際應(yīng)用中,如果輸出的功率很大,要在穩(wěn)壓電路上安裝比較大一點(diǎn)的散熱器。 +5V 既是末級(jí)電源,也是+3.3V 電源的前級(jí)電源。MiniARM 控制器需要的+3.3V電壓為+5V電壓通過 SPX1117-3.3 穩(wěn)壓芯片來達(dá)到效果的,電壓轉(zhuǎn)換的電路如下圖。

22、 圖2.1 電壓轉(zhuǎn)換電路圖 SPX1117 為一個(gè)低功耗、低壓差正向電壓調(diào)節(jié)器,其輸出電壓有 3.3V、3.0V、2.85V、1.8V、1.5V 等,800mA 的穩(wěn)定輸出電流,800mA 時(shí)低壓差為 1.1V。SPX1117 有多種封裝,本設(shè)計(jì)選用 TO-220。一個(gè) 10μF 輸出電容可有效地保證穩(wěn)定性,同時(shí)還具有電流限制和熱保護(hù)功能,經(jīng)常用于高效率、低功耗設(shè)計(jì)中。 電源去耦電路的作用是去除電路間的相互干擾信號(hào),從而減小 PCB 上的各種噪聲,使電源能夠穩(wěn)定工作。高頻器件運(yùn)轉(zhuǎn)時(shí),它們的電流是不連續(xù)的,間斷的,頻率還很高,在很短的距離內(nèi),線路產(chǎn)生的感抗會(huì)非常大,會(huì)導(dǎo)致器件在需要電流的時(shí)

23、候,不能及時(shí)的供給,當(dāng)用大電容濾波時(shí),由于電解電容器繞層很多,因此有明顯的寄生電感,也會(huì)干擾用電設(shè)備的正常運(yùn)行,此時(shí)小電容就非常適合,所以要用多個(gè)小電容并聯(lián)起來使用。電源去耦電路如圖 圖2.2 電源去耦合電路圖 核心板上設(shè)計(jì)了復(fù)位電路,如圖3-6所示。按下按鍵后,會(huì)強(qiáng)制將CPU的復(fù)位引腳拉低,從而達(dá)到使系統(tǒng)復(fù)位的目的。M2005-NU11工控板含有ISP功能,因此可以設(shè)計(jì)一個(gè)ISP電路,如圖3-6 所示。LPC2200芯片內(nèi)有一段引導(dǎo)程序,上電后被執(zhí)行,主要用來檢查P0.14引腳電平,如果是低,則進(jìn)入ISP程序,如果為高,則檢查用戶代碼部分的中斷向量和是否為0,如果校驗(yàn)正確,則執(zhí)行用

24、戶代碼;如果無有效用戶代碼,則執(zhí)行ISP程序。在本設(shè)計(jì)中如果程序調(diào)試完畢后要脫機(jī)運(yùn)行,JP1跳線必須要斷開。 圖2.3 ISP及復(fù)位電路圖 2.2履帶式機(jī)械手智能小車控制中心 ( 一) 控制系統(tǒng)。機(jī)器小車所采用的控制平臺(tái)是Raspberry Pi,RaspberryPI是一種嵌入式計(jì)算機(jī)硬件的平臺(tái),他的內(nèi)存大,占用體積小,由英國慈善組織 “拉斯伯瑞皮基金會(huì)”發(fā)布成立。該基金會(huì)建立這個(gè)的目的是在“改善學(xué)校的里面的計(jì)算機(jī)科學(xué)和相關(guān)的一些學(xué)科教育,使計(jì)算機(jī)的學(xué)習(xí)與使用更加有趣”。計(jì)算機(jī)平臺(tái)使用ARM11架構(gòu)處理器,開始使用簡化的Linux操作系統(tǒng)?;臼褂闷脚_(tái)的硬件的尺寸大致在80mm×

25、50mm(也就類似于普通集成電路卡上面的尺寸)??梢詫漭蛇B接電視、顯示器、鍵盤鼠標(biāo)等設(shè)備使用。 ( 二) 遠(yuǎn)程控制技術(shù)。本文選擇藍(lán)牙技術(shù)進(jìn)行遠(yuǎn)程控制, HC - 06 藍(lán)牙模塊。在機(jī)器小車的制造中藍(lán)牙模塊的作用主 要是接收 Android 手機(jī)發(fā)出的信號(hào),然后作用于單片機(jī)控制 系統(tǒng),從而實(shí)現(xiàn) Android 手機(jī)對(duì)機(jī)器小車的運(yùn)行遙控。 ( 三) 驅(qū)動(dòng)電路仿真。機(jī)器小車的底盤是由四個(gè)電機(jī)組 成,行走時(shí)只需要控制四個(gè)電機(jī)的啟停和正反轉(zhuǎn)即可。在本 課題中是將左右兩邊的兩個(gè)電機(jī)分別串聯(lián)在一起,然后與驅(qū) 動(dòng)模塊連接。機(jī)器小車上配有機(jī)器臂,機(jī)器臂工作時(shí)應(yīng)處于 慢速狀態(tài),而將兩個(gè)電機(jī)串聯(lián)的方法剛好

26、滿足了這一要求。 驅(qū)動(dòng)模塊使用的是 L298N 驅(qū)動(dòng)芯片,其仿真效果如下圖。 圖2.3 L298N 驅(qū)動(dòng)芯片仿真效果圖 2.3履帶式機(jī)械手智能小車電機(jī)驅(qū)動(dòng)模塊設(shè)計(jì)。 使用單片機(jī)實(shí)現(xiàn)復(fù)位,I / O 控制,PWM 調(diào)速等功能。 目前大多采用開關(guān)型驅(qū)動(dòng)方式驅(qū)動(dòng)直流電機(jī),最常見的驅(qū)動(dòng) 方式是脈沖寬度制(PWM)。 本系統(tǒng)電機(jī)驅(qū)動(dòng)芯片采用 L298N,采 用單片機(jī) PWM 調(diào)速,L298N 驅(qū)動(dòng)兩組直流電機(jī),其單組驅(qū)動(dòng)電流 可達(dá) 2 A。 電機(jī)驅(qū)動(dòng)模塊原理如圖所示。 圖2.4 電機(jī)驅(qū)動(dòng)模塊原理如圖 Openwrt 是一個(gè)小型 Linux 系統(tǒng),路由器安裝上 Openwrt 后

27、, 其功能將變?yōu)楫惓?qiáng)大,可作為一臺(tái)小型服務(wù)器,安裝好數(shù)據(jù)轉(zhuǎn)發(fā) 和監(jiān)控軟件,即可以實(shí)現(xiàn)與單片機(jī)的串口通信,并用 WIFI 傳輸視 頻信號(hào),實(shí)現(xiàn)視頻監(jiān)控功能,本系統(tǒng)安裝的視頻監(jiān)控軟件為 MJPG 。攝像頭通過 USB 接口與路由器相連接,安裝好驅(qū)動(dòng) 和視頻監(jiān)控軟件后即可通過開發(fā)路由 的 WIFI 功能傳輸視頻信號(hào)。 3 .履帶式機(jī)械臂智能小車軟件設(shè)計(jì) 語音指令由移動(dòng)應(yīng)用接收并通過網(wǎng)絡(luò)發(fā)送到汽車的ARM9處理器。ARM9通過網(wǎng)絡(luò)將機(jī)器人手臂周圍的環(huán)境和汽車的狀態(tài)返回給操作者,從而實(shí)現(xiàn)數(shù)據(jù)交互。如何使兩臺(tái)機(jī)器在不同的內(nèi)部網(wǎng)中進(jìn)行通信一直是一個(gè)難以解決的問題。一般的解決方案是:使用服務(wù)器作為中介,

28、首先將信息發(fā)送到外部網(wǎng)絡(luò)服務(wù)器,然后將其轉(zhuǎn)發(fā)到另一個(gè)局域網(wǎng)計(jì)算機(jī),或者通過虛擬局域網(wǎng)。然而,由于目前通信軟件的數(shù)量眾多,借用這些通信軟件的服務(wù)器是一個(gè)很好的選擇。我們的解決方案是利用微信開源軟件,將自己開發(fā)的應(yīng)用模塊以插件的方式嵌入到微信中。此外,汽車平臺(tái)還配備了ARM9處理器,可以作為安卓操作系統(tǒng)使用,因此我們可以安裝一個(gè)微信軟件。 在本項(xiàng)目中,我們主要使用控制器的語音信息來操作機(jī)器人車,但我們需要遠(yuǎn)程控制(不同網(wǎng)絡(luò)中的通信控制),因此不建議使用硬件設(shè)備來實(shí)現(xiàn)語音控制指令識(shí)別轉(zhuǎn)換,因此在這里我們使用我們自己的應(yīng)用插件來執(zhí)行語音識(shí)別C。翻轉(zhuǎn)。在此之前,應(yīng)用程序?qū)⒄Z音信息識(shí)別為文本,然后通過網(wǎng)

29、絡(luò)將文本信息發(fā)送給機(jī)器人臂車。機(jī)器人臂車接收到文本指令后,將其轉(zhuǎn)換為機(jī)器指令,最終達(dá)到語音控制。 從軟件系統(tǒng)的角度,介紹了我們的智能車。眾所周知,軟件是所有硬件的靈魂。沒有它,無論硬件設(shè)計(jì)多么精致,都很難充分發(fā)揮它的作用。智能小車系統(tǒng)有三個(gè)組成部分:環(huán)境感知、決策規(guī)劃還有控制執(zhí)行。環(huán)境感知的輸出可以作為決策規(guī)劃的輸入。決策規(guī)劃的輸出是控制執(zhí)行的輸入。控制執(zhí)行的輸出控制智能車輛適應(yīng)環(huán)境狀態(tài)的變化,從而形成實(shí)時(shí)閉環(huán)。隨著智能車的發(fā)展,單智能車處理問題的能力有限,往往只處理簡單的單輛車。很難適應(yīng)連續(xù)的多任務(wù)。其次,它們適應(yīng)有限的環(huán)境,通常在特定的場景中。此外,盡管不同的智能車可以處理不同的任務(wù),但

30、是在一定程度上,它滿足了我們的需求,但是機(jī)器人協(xié)作仍然沒有什么突破,我們無法處理復(fù)雜的策略。第三,不同的機(jī)器人可以執(zhí)行不同的任務(wù),收集大量的信息,但它們不能共享信息。他使用機(jī)器人?;谝陨蠁栴},我們將服務(wù)器作為智能車的服務(wù)控制中心,利用服務(wù)器作為智能小車系統(tǒng)的控制中心,有以下好處: (1) 信息共享:智能汽車共享服務(wù)器知識(shí)庫中所有環(huán)境的信息,因此當(dāng)汽車在不熟悉的環(huán)境中工作時(shí),您可以在工作前訪問數(shù)據(jù)庫,詢問環(huán)境中是否有任何環(huán)境字母。如果服務(wù)器具有當(dāng)前的環(huán)境信息,則環(huán)境信息將傳輸?shù)街悄苘?。獲取環(huán)境信息當(dāng)汽車直接根據(jù)獲得的信息進(jìn)行任務(wù)處理后,汽車就保存了對(duì)環(huán)境信息的探索,肯定了。這只是個(gè)別車的很

31、多,如果車的數(shù)量增加,效益就不能低估。 (2) 多車協(xié)作:當(dāng)智能車處理任務(wù)相對(duì)困難時(shí),需要多輛智能車的配合。例如,在A房間,有一件貨物需要智能車A運(yùn)到B房間,距離A房間2公里,如果是單個(gè)智能車A運(yùn)到,可能需要10分鐘,而A車的動(dòng)力只能支持運(yùn)行5分鐘才能到達(dá)C位置,在這種情況下,只有A車不能完成任務(wù)。智能車A把任務(wù)加狀態(tài)信息發(fā)送置服務(wù)器,服務(wù)器用收到的數(shù)據(jù)在C處搜索可使用智能小車。這個(gè)發(fā)現(xiàn)發(fā)現(xiàn)發(fā)現(xiàn)在C點(diǎn)附近的智能車B中有足夠的電力,然后服務(wù)器將信息發(fā)送給智能車B,這樣它就可以在智能車B處提貨,并來完成A沒有完成的任務(wù)。 (3) 遠(yuǎn)程監(jiān)控:這是智能系統(tǒng)的控制中心,要對(duì)所有的智能小車進(jìn)行實(shí)時(shí)監(jiān)

32、控。該方法的優(yōu)點(diǎn)是能及時(shí)檢測智能車的故障,避免不必要的損失。此外,當(dāng)汽車不知道如何處理復(fù)雜的道路條件時(shí),智能汽車的運(yùn)動(dòng)可以手動(dòng)和遠(yuǎn)程控制。 (4) 知識(shí)存儲(chǔ):知識(shí)庫是服務(wù)器的核心模塊當(dāng)中十分重要的一個(gè)?,F(xiàn)在處在數(shù)據(jù)時(shí)代。數(shù)據(jù)就像地雷。數(shù)量和內(nèi)容越多,包含的價(jià)值就越大。此軟件系統(tǒng)設(shè)計(jì)用C語言模塊化結(jié)構(gòu), 包括主程序、pwm調(diào)速子程序、電機(jī)驅(qū)動(dòng)子程序、 中斷子程序、、循跡行駛子程序、無線遙控子程序、避障行駛子程序、、按鍵切換子程序等。系統(tǒng)主程序流程圖如下圖所示。 圖3.1 系統(tǒng)主程序流程圖 3.1履帶式機(jī)械手智能小車路徑規(guī)劃設(shè)計(jì) 系統(tǒng)是用集成型紅外對(duì)管對(duì)尋跡單元的作為傳感器使用,紅

33、外線發(fā)射紅外線后,紅外線二極管再進(jìn)行接收數(shù)據(jù)。使用紅外線進(jìn)行發(fā)射,可見光對(duì)接收信號(hào)幾乎沒有影響,用射極輸出器對(duì)信號(hào)屏蔽。小車底部的一處紅外線收發(fā)對(duì)管遇到黑帶時(shí),還能檢測到輸入電平為高電平,反過來是低電平。 3.2履帶式機(jī)械手智能小車驅(qū)動(dòng)設(shè)計(jì) 智能小車的電機(jī)選用的是直流減速電機(jī),即齒輪減速電機(jī),是在普通直流電機(jī)的基礎(chǔ)上,加上配套齒輪減速箱。齒輪減速箱的作用是,提供較低的轉(zhuǎn)速,較大的力矩。同時(shí),齒輪箱不同的減速比可以提供不同的轉(zhuǎn)速和力矩。電機(jī)的工作電壓為3-6V,電壓為 6V 時(shí),無負(fù)載時(shí)轉(zhuǎn)速為 100 轉(zhuǎn)/分鐘,無負(fù)載時(shí)電流為 70mA,減速比為 1:48。 電機(jī)驅(qū)動(dòng)電路連接圖[25]

34、如如 3-15 所示,主要包括光電耦合器件、電機(jī)驅(qū)動(dòng)芯片、整流電路三個(gè)部分。光電耦合器件選用的是 TLP521-4,其內(nèi)部含有四組光耦管,用來將控制信號(hào)與負(fù)載完全隔離,可以增加安全性,減小信號(hào)之間的干擾;電機(jī)驅(qū)動(dòng)芯片選用的是 L298N,為 15 腳 Multiwatt 封裝,其中 IN1、IN2、IN3、IN4 為控制信號(hào)輸入端,VS為電源電壓,最大可接 36V,VSS為工作電壓,最小 4.5V,最大 36V,在應(yīng)用中根據(jù)實(shí)際情況選擇 5V 電壓。整流電路選用 8 個(gè)二極管IN4007。 圖3.2 整流電路圖 測試分析:控制驅(qū)動(dòng)電路的輸入電平,然后用萬用表測試輸出電壓的大小,檢驗(yàn)與預(yù)

35、定的結(jié)果一致時(shí),接通電機(jī),編寫電機(jī)驅(qū)動(dòng)程序,小車能夠?qū)崿F(xiàn)前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)的功能。 3.2程序代碼 1. 初始化以及模式控制 /** * Function main * @brief 對(duì)串口發(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); //初始化電機(jī)驅(qū)動(dòng)IO為輸出方式 pinMode(Left_motor_go, OUTPUT); pinMode(Left_motor_back, OUTPUT); pinMode(Right_motor_go, OUTPUT); pinMode(Right_motor_back, OUTPUT); //創(chuàng)建兩個(gè)軟件控制的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); //初始化舵機(jī)引腳為輸出模式 pinMode(FrontServoPin, OUTPUT); //初始化舵機(jī)引腳為輸出模式 pinMode(FrontServoPin, OUTPUT); pinMode(ServoUpDownPin, OUTPUT);

40、 pinMode(ServoLeftRightPin, OUTPUT); //舵機(jī)位置初始化 servo_init(); //打開串口設(shè)備,如若失敗則會(huì)打印錯(cuò)誤信息 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; //暫時(shí)保留 case 2: Tracking_Mode(); break; //巡線模式 } //舵機(jī)云臺(tái)的控制 Servo_Control_Thread(); //讓串口平均每秒發(fā)送采集的數(shù)據(jù)給上位機(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. 舵機(jī)旋轉(zhuǎn)一定的角度 /** * Function servo_pulse * 控制0-180度 * @param[in

43、1] ServPin:舵機(jī)控制引腳 * @param[in2] myangle:舵機(jī)轉(zhuǎn)動(dòng)指定的角度 * @param[out] void * @retval void * @par History 無 */ void servo_pulse(int v_iServoPin, int myangle) { int PulseWidth; //定義脈寬變量 delayMicroseconds(PulseWidth); //延時(shí)脈寬值的微秒數(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; //超時(shí)返回-1 } } start = tv1.tv_sec*1000000+tv1.tv_usec; while(!digitalRead(EchoPin) == 0) { gettimeofday(&tv3,NULL); //超時(shí)重測機(jī)制開始計(jì)時(shí) stop = tv3.tv_sec*1000000+tv3.tv_usec; if ((stop - start) > 30000) { return -1; }

47、 } //超時(shí)重測機(jī)制結(jié)束計(jì)時(shí) gettimeofday(&tv2, NULL); //當(dāng)echo腳電平變低時(shí)結(jié)束計(jì)時(shí) 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. 小車前進(jìn)、后退、剎車、左拐、右拐等運(yùn)行函數(shù) /** * Function run * @brief 小車前進(jìn) * @retval void * @par History 無 */ void run(unsigned int LeftCarSpeedControl,unsigned int RightCarSpeedControl) { //左電機(jī)前進(jìn) softPwmWrite(Left_motor_pwm, LeftCarSpeedControl*0.95); //右電機(jī)

49、前進(jìn) 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) { //左電機(jī)停止 softPwmWrite(Left_motor_pwm, LeftCarSpeedControl); //

51、右電機(jī)前進(jìn) softPwmWrite(Right_motor_pwm, RightCarSpeedControl); } /** * Function spin_left * @brief 小車原地左轉(zhuǎn)(左輪后退,右輪前進(jìn)) * @retval void * @par History 無 */ void spin_left(unsigned int LeftCarSpeedControl,unsigned int RightCarSpeedControl) { //左電機(jī)后退 softPwmWrit

52、e(Left_motor_pwm, LeftCarSpeedControl); //右電機(jī)前進(jìn) softPwmWrite(Right_motor_pwm, RightCarSpeedControl); } /** * Function right * @brief 小車右轉(zhuǎn)(左輪前進(jìn),右輪不動(dòng)) * @param[out] void * @retval void * @par History 無 */ void right(unsigned int LeftCarSpeedControl,un

53、signed int RightCarSpeedControl) { //左電機(jī)前進(jìn) digitalWrite(Left_motor_go, HIGH); //左電機(jī)前進(jìn)使能 digitalWrite(Left_motor_back, LOW); //左電機(jī)后退禁止 softPwmWrite(Left_motor_pwm, LeftCarSpeedControl); //右電機(jī)停止 softPwmWrite(Right_motor_pwm, RightCarSpeedControl); } /** * Function

54、 spin_right * @brief 小車原地右轉(zhuǎn)(右輪后退,左輪前進(jìn)) * @param[out] void * @retval void * @par History 無 */ void spin_right(unsigned int LeftCarSpeedControl,unsigned int RightCarSpeedControl) { //左電機(jī)前進(jìn) softPwmWrite(Left_motor_pwm, LeftCarSpeedControl); //右電機(jī)后退 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) { //左電機(jī)后退 softPwmWrite(Left_motor

56、_pwm, LeftCarSpeedControl); //右電機(jī)后退 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)時(shí)小車原地右轉(zhuǎn),速度為250,延時(shí)80ms //處理右銳角和右直角的轉(zhuǎn)動(dòng) 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)動(dòng) 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時(shí)小車保持上一個(gè)小車運(yùn)行狀態(tài) } 6

64、. 攝像頭舵機(jī)根據(jù)超聲波測距距離的動(dòng)作函數(shù) /** * Function servo_color_carstate * @brief 舵機(jī)轉(zhuǎn)向超聲波測距避障行駛,led根據(jù)車的狀態(tài)顯示相應(yīng)的顏色 * @param[in] void * @param[out] void * @retval void * @par History 無 */ void servo_color_carstate() { float distance; //定義舵機(jī)位置變量和小車前方,左側(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(); //舵機(jī)旋轉(zhuǎn)到0度,即右側(cè),測距 servo_appoin

66、ted_detection(0); delay(500); distance = Distance_test(); //測距 RightDistance = distance; //所測的右側(cè)距離賦給變量RightDistance //printf("rightdistance :%d\n",RightDistance); //舵機(jī)旋轉(zhuǎn)到180度,即左側(cè),測距 servo_appointed_detection(180); delay(500); distance = Distance_test(); //測距 LeftDistance = distance;//所測的左側(cè)距離賦給變量LeftDistance // printf("leftdistance :%d\n",LeftDistance); //舵機(jī)旋轉(zhuǎn)到90度,即左側(cè),測距 servo_appointed_detection(90); delay(500); distance = Distance_test();

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

最新文檔

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!