版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
6.1主要應(yīng)用背景
6.2技術(shù)原理
6.3實(shí)踐操作與步驟全世界已有為數(shù)較多的機(jī)器人在運(yùn)行,機(jī)器人行業(yè)已成為一個(gè)很有發(fā)展前景的行業(yè),對國民經(jīng)濟(jì)和人們生活的各個(gè)方面已產(chǎn)生重要影響。在眾多智能化機(jī)器人中,智能車輛可以稱得上是一項(xiàng)最早走出實(shí)驗(yàn)室的實(shí)用發(fā)明,是未來重要的發(fā)展方向。智能車輛可以按照預(yù)先設(shè)定的模式在一個(gè)環(huán)境里自動(dòng)運(yùn)作,不需要人為管理。智能循跡車是目前智能車輛研究的熱點(diǎn),這種車輛的實(shí)現(xiàn)需要計(jì)算機(jī)、嵌入式軟件及數(shù)字技術(shù)等的有機(jī)結(jié)合,也需要跨學(xué)科(通信、電子、計(jì)算機(jī)等)的設(shè)計(jì)能力。本章主要從技術(shù)原理和實(shí)踐操作角度對智能循跡車進(jìn)行描述,通過介紹基于STM32微控制器和基于樹莓派的智能循跡小車的技術(shù)原理,以及基于樹莓派的智能小車的實(shí)踐操作,使讀者對智能循跡車有一個(gè)大致的了解。通過構(gòu)建智能小車系統(tǒng),可以培養(yǎng)讀者設(shè)計(jì)并實(shí)現(xiàn)自動(dòng)控制系統(tǒng)的能力。在實(shí)踐過程中,熟悉如何設(shè)計(jì)小車的外圍電路,如何采用智能控制算法實(shí)現(xiàn)小車的智能循跡。通過靈活運(yùn)用相關(guān)學(xué)科的理論知識,并動(dòng)手進(jìn)行實(shí)際操作,達(dá)到理論和實(shí)踐的統(tǒng)一,在此過程中,逐步加深對智能循跡車的理解和認(rèn)識。6.1主要應(yīng)用背景車輛作為一種簡單高效的運(yùn)載工具,兼顧機(jī)動(dòng)性與靈活性,非常適合用來制作可移動(dòng)式機(jī)器人。在小車上安裝控制電路與傳感器,再輔以電機(jī)驅(qū)動(dòng),它就從一輛普通小車進(jìn)化成了一輛智能小車。隨著智能化技術(shù)的發(fā)展,全國電子競賽與各省電子競賽幾乎每次都有智能小車方面的題目,比如飛思卡爾智能車競賽。全國各大高校也都重視智能小車項(xiàng)目的研究,可見智能小車具有較大的研究意義。智能小車的主要應(yīng)用場所有很多,比如,在倉儲(chǔ)業(yè)、制造業(yè)中,智能小車可用作無人搬運(yùn)車;在石油化工領(lǐng)域,智能小車可用于檢測工業(yè)管道中存在的損傷、裂紋等問題;在特種行業(yè)中,智能小車可用于災(zāi)難救援、排爆滅火等;在軍事方面,智能小車能較隱蔽地完成監(jiān)視、安全巡邏等軍事任務(wù)。智能小車能夠?qū)崟r(shí)顯示時(shí)間、速度、里程,具有自動(dòng)尋跡、尋光、避障功能,可控行駛速度、準(zhǔn)確定位停車,并具有遠(yuǎn)程傳輸圖像等功能,常見的智能小車如圖6.1所示。世界上許多國家都在如火如荼地進(jìn)行智能車輛的研究和開發(fā)。第一臺智能小車是由斯坦福研究院(SRI)的NilsNi-ssen和Charlenrosen等人在1972年研制而成的,并取名為Shakey,如圖6.2所示。20世紀(jì)50年
代
開
始,美
國
等
發(fā)
達(dá)
國
家
著
手
進(jìn)
行
智
能
車
輛
的
研
究,1954年
美
國BarrettElectronics公司研究開發(fā)了世界上第一臺自主引導(dǎo)車系統(tǒng)AGVS,如圖6.3所示。20世紀(jì)90年代開始,智能車輛進(jìn)入了深入、系、大規(guī)模的研究階段。我國開展智能車輛方面的技術(shù)研究較晚,開始于20世紀(jì)80年代。雖然我國在智能車輛技術(shù)方面的研究總體上落后于發(fā)達(dá)國家,并且存在一定程度的技術(shù)差距,但是我們也取得了一系列的成果,主要有:(1)2003年,由中國第一汽車集團(tuán)公司和國防科學(xué)技術(shù)大學(xué)歷時(shí)一年半合作研制的紅旗CA7460自主駕駛轎車在湖南長沙試驗(yàn)成功,這標(biāo)志著我國第一輛自主駕駛轎車的誕生。(2)南京理工大學(xué)、北京理工大學(xué)、浙江大學(xué)、國防科技大學(xué)、清華大學(xué)等多所院校聯(lián)合研制了7B.8軍用室外自主車,該車裝有彩色攝像機(jī)、激光雷達(dá)、陀螺慣導(dǎo)定位等傳感器。6.2技
術(shù)
原
理6.2.1系統(tǒng)硬件組成1.STM32微控制器智能小車智能小車控制系統(tǒng)將采集到的傳感器信號送入STM32微控制器中,STM32微控制器根據(jù)采集到的信號做出不同的判斷,從而控制小車的運(yùn)動(dòng)方向和運(yùn)動(dòng)速度。1)主控板STM32F103C8T6是ST旗下一款常用的基于Cortex-M3內(nèi)核的微控制器,具有執(zhí)行代碼效率高、外設(shè)資源豐富等眾多優(yōu)點(diǎn)。該系列微控制器的工作頻率設(shè)定在72MHz,內(nèi)置高達(dá)128KB的內(nèi)置Flash存儲(chǔ)器和20KB的SRAM,具有豐富的通用I/O端口及時(shí)鐘電路、復(fù)位電路和電源管理。存儲(chǔ)器根據(jù)控制器指定的位置存進(jìn)和取出信息。STM32微控制器內(nèi)部結(jié)構(gòu)如圖6.4所示。STM32微控制器主系統(tǒng)主要由4個(gè)驅(qū)動(dòng)單元和4個(gè)被動(dòng)單元構(gòu)成。4個(gè)驅(qū)動(dòng)單元是:通用DMA1、通用DMA2、內(nèi)核DCode總線和ICode系統(tǒng)總線。4個(gè)被動(dòng)單元是:AHB到APB的橋,連接所有的APB設(shè)備、內(nèi)部flash閃存、內(nèi)部SRAM、FSMC,它們通過一個(gè)多級的AHB總線相互連接。2)紅外傳感器循跡模塊紅外傳感器主要由紅外發(fā)射管、紅外接收管和部分電路組成。要做到4路循跡,則需要使用4個(gè)獨(dú)立的紅外傳感器。紅外傳感器模塊實(shí)物如圖6.5所示,紅外傳感器模塊電路如圖6.6所示。3)其他傳感器其他傳感器如火焰識別傳感器等,其工作原理為:火焰的熱輻射具有離散光譜的氣體輻射和連續(xù)光譜的固體輻射,不同燃燒物的火焰輻射強(qiáng)度、波長分布有所差異,但總體來說,燃燒物對應(yīng)火焰溫度的1~2μm近紅外波長域有最大的輻射強(qiáng)度?;鹧孀R別傳感器是機(jī)器人專門用來搜尋火源的傳感器,它利用自身對紅外線十分敏感的特點(diǎn),將火焰的亮點(diǎn)轉(zhuǎn)化成高度變化的電平信號,輸入到處理器中。火焰識別傳感器如圖6.7所示。4)驅(qū)動(dòng)單元通常智能小車的驅(qū)動(dòng)單元會(huì)選擇小型電機(jī),其中電機(jī)可分為無刷電機(jī)和有刷電機(jī)。相對而言,無刷電機(jī)擁有更好的性能,因?yàn)闊o刷電機(jī)沒有損耗,并且噪聲比較小。除此之外,電機(jī)的轉(zhuǎn)速對車輛的行進(jìn)速度至關(guān)重要。以正常成年人為例,其走路的速度為4~5km/h,大約為1m/s。如果選擇常規(guī)的直徑為4.2cm左右的輪胎,其
周
長=0.042×3.14=0.13188m,那
么
走1m的距離需要轉(zhuǎn)7.58圈,也就是每秒轉(zhuǎn)7.58圈,其速度為455轉(zhuǎn)/min。目前市場上售賣的電機(jī)均能實(shí)現(xiàn)每秒萬轉(zhuǎn)的速度,因此在設(shè)計(jì)循跡小車時(shí),必須增加減速箱來達(dá)成400~500轉(zhuǎn)的速度目標(biāo)。常見驅(qū)動(dòng)單元如圖6.8所示。5)驅(qū)動(dòng)板驅(qū)動(dòng)板是一種集成了多種功能的電路板,用于控制智能小車的運(yùn)動(dòng)和操作。不同的驅(qū)動(dòng)板有著不同的功能,驅(qū)動(dòng)板通常負(fù)責(zé)電力提供、傳感器接口、數(shù)據(jù)存儲(chǔ)、處理器承載、播放器功能等。圖6.9所示為市場上某款驅(qū)動(dòng)板的多重功能接口。6)紅外避障模塊常見的紅外避障模塊如圖6.10所示,紅外避障模塊與傳感器之間的連線如圖6.11所示。2.基于樹莓派控制智能小車樹莓派是RaspberryPi基金會(huì)開發(fā)的一款微型電腦,是專為學(xué)習(xí)使用而設(shè)計(jì)的。它是一款基于ARM的微型電腦主板,以SD/MicroSD卡為內(nèi)存硬盤,卡片主板周圍有1/2/4個(gè)USB接口和一個(gè)10/100以太網(wǎng)接口(A型沒有網(wǎng)口),可連接鍵盤、鼠標(biāo)和網(wǎng)線,同時(shí)擁有視頻模擬信號的電視輸出接口和HDMI高清視頻輸出接口。以上部件全部整合在一張僅比信用卡稍大的主板上,具備所有PC的基本功能,只需接通電視機(jī)和鍵盤,就能執(zhí)行如處理電子表格、處理文字、玩游戲、播放高清視頻等諸多功能。RaspberryPiB款只提供電腦主板,無內(nèi)存、電源、鍵盤、機(jī)箱或連線,可以把它看作只有信用卡大小的微型電腦,適配的系統(tǒng)為Linux發(fā)行版。智能小車的構(gòu)成如下:(1)小車底板(2個(gè))、電機(jī)(4個(gè))、車輪(4個(gè))、杜邦線、銅柱、螺絲若干。(2)超聲波傳感器(1個(gè)),舵機(jī)(1個(gè))。(3)循跡傳感器(3個(gè))。(4)避障傳感器(2個(gè),左右)。(5)USB攝像頭(1個(gè)),舵機(jī)(2個(gè))。(6)樹莓派4B主控板(2G版本)(1個(gè))。(7)樹莓派擴(kuò)展板(1個(gè))。(8)電池(1個(gè))。(9)電壓顯示模塊(1個(gè))。(10)四輪驅(qū)動(dòng)模塊。四輪驅(qū)動(dòng)模塊的作用是驅(qū)動(dòng)四個(gè)電機(jī)帶動(dòng)小車完成循跡的運(yùn)動(dòng)任務(wù),其包含的控制內(nèi)容有車輛的速度、車輛的狀態(tài)(正轉(zhuǎn)、反轉(zhuǎn)、停止),并且管理電機(jī)的供電部分。圖6.12所示為本文使用的樹莓派四輪驅(qū)動(dòng)板。其中包含了2個(gè)輸出口、板載5V供電和12V供電、供電管理、邏輯輸入口、2個(gè)通道。該驅(qū)動(dòng)板可驅(qū)動(dòng)2路直流電機(jī),使能端ENA、ENB為高電平時(shí)有效,不同控制方式及直流電機(jī)狀態(tài)如表6.1所示.若要對直流電機(jī)進(jìn)行PWM調(diào)速,需設(shè)置IN1和IN2,確定電機(jī)的轉(zhuǎn)動(dòng)方向。然后對使能端輸出PWM脈沖,即可實(shí)現(xiàn)調(diào)速。注意當(dāng)使能信號為0時(shí),電機(jī)處于自由停止?fàn)顟B(tài);當(dāng)使能信號為1,且IN1和IN2為00或11時(shí),電機(jī)處于制動(dòng)狀態(tài),阻止電機(jī)轉(zhuǎn)動(dòng)。6.2.2系統(tǒng)工作原理1.智能小車的循跡智能循跡小車系統(tǒng)最關(guān)鍵的核心在于判定興建的路線,該功能通常借助外界已經(jīng)給定的軌跡進(jìn)行。常見的軌跡標(biāo)識有循跡指示線、交通標(biāo)識、交通道路、指示激光等,如圖6.13~圖6.16所示這些方式在本質(zhì)上都是通過人工的方式構(gòu)建準(zhǔn)確有效、可以通過的道路,主動(dòng)式地生成路線,隨后讓承載接收器的小車被動(dòng)進(jìn)行循跡活動(dòng)。智能小車的循跡方法主要有以下三種:第一種是紅外循跡法,主要依靠小車的紅外探測器實(shí)現(xiàn)。紅外探測器主要由紅外發(fā)射器和紅外接收器組成,其原理是紅外發(fā)射器發(fā)射的紅外光經(jīng)地面反射,黑色區(qū)域的紅外光被吸收,非黑色區(qū)域的紅外光被反射,使得紅外接收器接收到的紅外反射不同,改變其輸出電平,從而判斷黑線所在。第二種是攝像頭循跡法,利用攝像頭讀取車道信息,其獲取的圖像分為模擬信號和數(shù)字信號。第三種是激光循跡法,此種方法也是利用了黑色和其他顏色對紅外線的吸收作用不同,但相較于紅外循跡法檢測的距離更遠(yuǎn)。2.超聲波避障超聲波是一種頻率比較高的聲音,指向性很強(qiáng)。超聲波測距的原理是利用超聲波在空氣中的傳播速度已知,測量聲波在發(fā)射后遇到障礙物反射回來的時(shí)間,根據(jù)發(fā)射和接收的時(shí)間差計(jì)算出發(fā)射點(diǎn)到障礙物的實(shí)際距離。測距的公式為L=C×T其中,L是測量距離的長度,C是超聲波在空氣中的傳播速度,T是測量距離傳播的時(shí)間差,也就是發(fā)射到接收時(shí)間數(shù)值的一半。小車中的超聲波避障實(shí)物如圖6.17所示。本實(shí)驗(yàn)所使用的超聲波模塊的簡明工作原理如下:(1)給超聲波模塊接入電源和地(供電)。(2)給單片機(jī)的觸發(fā)引腳(trig)輸入一個(gè)時(shí)長為20μs的高電平。(3)模塊會(huì)自動(dòng)發(fā)射8個(gè)40kHz的聲波,同時(shí)回波引腳(echo)端的電平會(huì)由0變?yōu)?(此時(shí)應(yīng)該啟動(dòng)定時(shí)器計(jì)時(shí))。(4)當(dāng)超聲波返回被模塊接收到時(shí),回波引腳端的電平會(huì)由1變?yōu)?(此時(shí)應(yīng)該停止定時(shí)器計(jì)數(shù)),定時(shí)器記下的這個(gè)時(shí)間即為超聲波由發(fā)射到返回的總時(shí)長。(5)根據(jù)聲音在空氣中的速度(340m/s)即可計(jì)算出所測的距離。3.舵機(jī)模塊的設(shè)計(jì)實(shí)現(xiàn)舵機(jī)簡單地說就是集成了直流電機(jī)、電機(jī)控制器和減速器等,并將其封裝在一個(gè)便于安裝的外殼里的伺服單元。該單元可以有效地利用極簡的輸入信號實(shí)現(xiàn)電機(jī)轉(zhuǎn)動(dòng)。舵機(jī)上安裝了一個(gè)電位器(或其他角度傳感器),可檢測輸出軸轉(zhuǎn)動(dòng)的角度,控制板根據(jù)電位器的信息能比較精確地控制和保持輸出軸的角度。舵機(jī)的主體結(jié)構(gòu)如圖6.18所示,主要組成部分有外殼(包括上殼、中殼和下殼)、齒輪組、電機(jī)、控制電路。其工作原理是:控制電路接收信號源發(fā)出的控制信號,并驅(qū)動(dòng)電機(jī)轉(zhuǎn)動(dòng);齒輪組將電機(jī)的速度進(jìn)行倍速縮小,并將電機(jī)的輸出扭矩進(jìn)行倍速擴(kuò)大,然后輸出;電位器和齒輪組的末級一起轉(zhuǎn)動(dòng),測量舵機(jī)軸轉(zhuǎn)動(dòng)的角度;電路板檢測信號并根據(jù)電位器判斷舵機(jī)轉(zhuǎn)動(dòng)的角度,然后控制舵機(jī)轉(zhuǎn)動(dòng)到目
標(biāo)
角
度
或
保
持
在
目
標(biāo)
角
度。圖6.19所示為輸入的信號控制舵機(jī)臂變動(dòng)的過程簡圖。6.3實(shí)踐操作與步驟為了更好地展示智能小車的循跡原理和設(shè)計(jì),首先介紹常見的“樹莓派”套件完成的智能循跡小車。6.3.1實(shí)驗(yàn)環(huán)境相對于單片機(jī),樹莓派的開發(fā)群體更加廣泛,讀者在使用本章節(jié)基于樹莓派開發(fā)的智能小車后尚可使用該開發(fā)板進(jìn)行其他章節(jié)功能的實(shí)現(xiàn)。實(shí)驗(yàn)環(huán)境如表6.2所示。6.3.2實(shí)驗(yàn)代碼1.實(shí)驗(yàn)代碼下載地址代碼下載地址為:/undersail/easybot。2.代碼文件目錄結(jié)構(gòu)(1)代碼文件目錄結(jié)構(gòu)如下:(2).xml文件是已經(jīng)儲(chǔ)存好“紅綠燈行進(jìn)信息”的控制文件。其中的數(shù)據(jù)集文件包括:fullbody.xml,存放全部信息;stop_sign.xml,存放停止標(biāo)志;traffic_light.xml,存放交通燈信息處理。(3).py文件為本實(shí)驗(yàn)所需
的
執(zhí)
行
文
件:rc_driver.py,PC端
的
小
車
操
作
部
分;rc_control1.py,車輛控制信息;stream_client.py,相機(jī)傳媒信息;ultrasonic_client.py,超聲波控制信息。6.3.3實(shí)驗(yàn)步驟及結(jié)果1.導(dǎo)入相關(guān)的庫RPi.GPIO是第三方對樹莓派40個(gè)引腳進(jìn)行控制的庫。RPi.GPIO中有兩種引腳編號方式。第一種是使用電路板編號系統(tǒng),這在樹莓派電路板上是以P1開頭的。使用這種編號系統(tǒng)的優(yōu)勢是:不管電路板是哪種版本的,都不需要重新修改代碼。第二種是使用BCM數(shù)字編號系統(tǒng),這是一種低水平的工作方式,也是一種常用的芯片引腳編號方式。此部分關(guān)鍵代碼如下:這段代碼定義了一個(gè)名為″SingleMotor″的類,該類用于控制一個(gè)單個(gè)的直流電機(jī)。speed:電機(jī)的轉(zhuǎn)速,默認(rèn)值為35。freq:PWM信號的頻率,默認(rèn)值為50Hz。run_state:電機(jī)的運(yùn)行狀態(tài),默認(rèn)為″stop″。PWM:控制電機(jī)的PWM信號輸出引腳。IN1:控制電機(jī)正轉(zhuǎn)的GPIO輸出引腳。IN2:控制電機(jī)反轉(zhuǎn)的GPIO輸出引腳。Motor:保存PWM控制器的實(shí)例,如果未使用PWM控制電機(jī),則為None。在構(gòu)造函數(shù)中,使用GPIO.setup()函數(shù)設(shè)置IN1和IN2為輸出引腳。如果PWM不為None,則使用GPIO.setup()函數(shù)設(shè)置PWM為輸出引腳,創(chuàng)建一個(gè)名為″Motor″的PWM控制器實(shí)例,并通過調(diào)用start()方法啟動(dòng)PWM控制器?!錝ingleMotor″類可以通過修改speed屬性來控制電機(jī)的轉(zhuǎn)速,并通過修改run_state屬性來控制電機(jī)的運(yùn)行狀態(tài)(″stop″″forward″″backward″)。如果PWM不為None,則可以使用PWM控制器來實(shí)現(xiàn)對電機(jī)轉(zhuǎn)速的控制。″SingleMotor″類中設(shè)置電機(jī)轉(zhuǎn)速的代碼如下:該方法中有一個(gè)名為″speed″的參數(shù),表示要設(shè)置的電機(jī)速度,取值范圍為0~100。在方法的第一行,使用″if″語句判斷當(dāng)前是否使用PWM控制電機(jī),如果未使用,則返回當(dāng)前電機(jī)的運(yùn)行狀態(tài)″run_state″?!錝ingleMotor″類中控制電機(jī)正轉(zhuǎn)的代碼如下:在調(diào)用該方法時(shí),將電機(jī)的運(yùn)行狀態(tài)″run_state″設(shè)置為″up″,表示電機(jī)正在正轉(zhuǎn)。在方法的第二行和第三行中,使用GPIO.output()函數(shù)分別將電機(jī)的正轉(zhuǎn)引腳IN1設(shè)置為高電平、反轉(zhuǎn)引腳IN2設(shè)置為低電平、從而控制電機(jī)正轉(zhuǎn)?!錝ingleMotor″類中控制電機(jī)反轉(zhuǎn)的代碼如下:在調(diào)用該方法時(shí),將電機(jī)的運(yùn)行狀態(tài)″run_state″設(shè)置為″down″,表示電機(jī)正在反轉(zhuǎn)。在方法的第二行和第三行中,使用GPIO.output()函數(shù)分別將電機(jī)的正轉(zhuǎn)引腳IN1設(shè)置為低電平、反轉(zhuǎn)引腳IN2設(shè)置為高電平,從而控制電機(jī)反轉(zhuǎn)?!錝ingleMotor″類中控制電機(jī)停止的代碼如下:在調(diào)用該方法時(shí),將電機(jī)的運(yùn)行狀態(tài)″run_state″設(shè)置為″stop″,表示電機(jī)停止運(yùn)行。在方法的第二行和第三行中,使用GPIO.output()函數(shù)分別將電機(jī)的正轉(zhuǎn)引腳IN1和反轉(zhuǎn)引腳IN2都設(shè)置為低電平,從而控制電機(jī)停止。″CarWheel″類用于控制智能小車的輪子(由左輪和右輪組成),其代碼如下:在類的構(gòu)造函數(shù)″init″中,定義了以下屬性:L_Wheel:左輪的″SingleMotor″實(shí)例。R_Wheel:右輪的″SingleMotor″實(shí)例。speed:小車的速度,默認(rèn)值為35。run_state:小車的運(yùn)行狀態(tài),默認(rèn)為″stop″。在構(gòu)造函數(shù)中,通過調(diào)用″set_speed″設(shè)置小車的速度,并將小車的運(yùn)行狀態(tài)設(shè)置為″stop″?!錍arWheel″類中控制小車左轉(zhuǎn)的代碼如下:在調(diào)用上述方法時(shí),將小車的運(yùn)行狀態(tài)″run_state″設(shè)置為″left″,表示小車正在左轉(zhuǎn)。在方法的第二行和第三行中,先調(diào)用左輪的″stop″停止左輪的運(yùn)行,然后調(diào)用右輪的″up″使右輪正轉(zhuǎn),從而控制小車左轉(zhuǎn)。″CarWheel″類中控制小車右轉(zhuǎn)的代碼如下:在調(diào)用上述方法時(shí),將小車的運(yùn)行狀態(tài)″run_state″設(shè)置為″right″,表示小車正在右轉(zhuǎn)。在方法的第二行和第三行中,先調(diào)用左輪的″up″使左輪正轉(zhuǎn),然后調(diào)用右輪的″stop″停止右輪的運(yùn)行,從而控制小車右轉(zhuǎn)。2.超聲波避障部分的代碼實(shí)現(xiàn)在超聲波驅(qū)動(dòng)部分的實(shí)現(xiàn)代碼中,首先需要導(dǎo)入gpiozero庫,該庫最關(guān)鍵的功能是提供樹莓派GPIO設(shè)備的接口。gpiozero庫包含了許多常見元器件的接口,同時(shí)也支持復(fù)雜的元器件,如各種傳感器、模數(shù)轉(zhuǎn)換器、全彩LED燈、機(jī)器人套件以及更多的元器件和套件。通過使用gpiozero庫,用戶可以方便地控制樹莓派的GPIO設(shè)備,并實(shí)現(xiàn)各種有趣的項(xiàng)目,部分代碼如下:根據(jù)超聲波組件的使用功能對設(shè)備進(jìn)行控制的代碼如下:這段代碼使用gpiozero庫中的DistanceSensor類來創(chuàng)建一個(gè)名為″sensor″的距離傳感器實(shí)例,該實(shí)例使用GPIO引腳21和20連接到樹莓派上。3.舵機(jī)模塊部分的代碼實(shí)現(xiàn)首先在代碼中導(dǎo)入所需的庫(Adafruit_PCA9685),如圖6.20所示,Adafruit_PCA9685是一款用于控制樹莓派的16路PWM輸出的PCA9685庫。通過使用該庫,用戶可以輕松控制多個(gè)PWM設(shè)備,如舵機(jī)、電機(jī)、LED燈等。舵機(jī)控制代碼如下:這段代碼
導(dǎo)
入
了Adafruit_PCA9685庫、RPi.GPIO庫
和time庫,其
中Adafruit_PCA9685庫用于控制樹莓派的PCA9685PWM設(shè)備,RPi.GPIO庫
用
于
控
制
樹
莓
派
的GPIO引腳,time庫用于進(jìn)行與時(shí)間相關(guān)的操作?!錍arServo″為表示小車舵機(jī)控制器的類,其代碼如下:在類的構(gòu)造函數(shù)″init″中,定義了以下屬性:pwm_pca9685:用于控制舵機(jī)的PCA9685PWM設(shè)備實(shí)例。servo:字典類型的變量,用于存儲(chǔ)各個(gè)舵機(jī)的信息。在構(gòu)造函數(shù)中,通過調(diào)用″set_pwm_freq″設(shè)置舵機(jī)PWM設(shè)備的頻率為50Hz;然后通過調(diào)用″set_servo_angle″依次設(shè)置3個(gè)舵機(jī)的初始角度,分別是攝像頭舵機(jī)1、攝像頭舵機(jī)2和超聲波舵機(jī)?!錽et_servo_angle″用于設(shè)置指定舵機(jī)的角度,該方法接收兩個(gè)參數(shù),分別是channel和angle,其中channel表示舵機(jī)的通道號,angle表示設(shè)置的角度值,其代碼如下:在調(diào)用上述方法時(shí),首先進(jìn)行參數(shù)檢查,確保通道號在0~2的范圍內(nèi);然后將angle限制在0~180的范圍內(nèi);接著,根據(jù)新的角度值計(jì)算得到PCA9685PWM設(shè)備的實(shí)際數(shù)值date,并使用″set_pwm″方法將該值發(fā)送給舵機(jī),控制其轉(zhuǎn)動(dòng)到指定的角度;最后將舵機(jī)的角度信息保存在″servo″字典中。如果傳入的通道號不在0~2的范圍內(nèi),則會(huì)輸出錯(cuò)誤信息。4.車輛的循跡部分首先執(zhí)行導(dǎo)入庫的操作,其代碼如下:創(chuàng)建″getLaneCurve″函數(shù),用于從輸入的圖像中提取車道曲率信息。該函數(shù)接收一幅圖像作為輸入?yún)?shù),并通過調(diào)用″thresholding″將其轉(zhuǎn)換為二值圖像。轉(zhuǎn)換后的圖像將用于后續(xù)的車道線檢測和曲率計(jì)算,其代碼如下:這段代碼定義了一個(gè)名為″thresholding″的函數(shù),用于將輸入的彩色圖像轉(zhuǎn)換為二值圖像。該函數(shù)首先通過調(diào)用OpenCV庫中的″cvtColor″將輸入圖像從BGR顏色空間轉(zhuǎn)換為HSV顏色空間。然后通過設(shè)置白色閾值的上下限,使用″inRange″將輸入圖像中符合要求的像素值提取出來,生成一個(gè)二值圖像。最后將生成的二值圖像作為函數(shù)的返回值。通過這段代碼可以使用顏色或邊緣檢測來獲取路徑。由于本文使用的是普通的A4紙來鋪設(shè)道路,因此找到A4紙就意味著循跡成功,可以簡單地使用顏色檢測來找到路徑。根據(jù)代碼生成的Warped圖像(經(jīng)過透視變換后的圖像)如圖6.21所示。在生成透視變幻的Warped圖像后,還需找到路徑中的曲線,這時(shí)可以通過使用像素的總和來實(shí)現(xiàn)。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 護(hù)士職業(yè)發(fā)展規(guī)劃發(fā)言
- 列車消防安全知識問答
- 關(guān)于心理健康教育c證培訓(xùn)制度
- 培訓(xùn)老師如何管理制度
- 康復(fù)治療師崗前培訓(xùn)制度
- 奶牛廠員工培訓(xùn)制度
- 專項(xiàng)培訓(xùn)機(jī)構(gòu)管理制度
- 中醫(yī)藥人員崗前培訓(xùn)制度
- 培訓(xùn)裁員制度及流程
- 招生人員內(nèi)部培訓(xùn)制度規(guī)定
- 2026年鄉(xiāng)村醫(yī)生傳染病考試題含答案
- 新零售模式下人才培養(yǎng)方案
- 上海市徐匯區(qū)2026屆初三一?;瘜W(xué)試題(含答案)
- 2025年遼鐵單招考試題目及答案
- 醫(yī)療行業(yè)數(shù)據(jù)安全事件典型案例分析
- 2026年生物醫(yī)藥創(chuàng)新金融項(xiàng)目商業(yè)計(jì)劃書
- 預(yù)中標(biāo)協(xié)議書電子版
- 湖南名校聯(lián)考聯(lián)合體2026屆高三年級1月聯(lián)考化學(xué)試卷+答案
- 龜?shù)慕馄收n件
- 山東省濰坊市2024-2025學(xué)年二年級上學(xué)期期末數(shù)學(xué)試題
- 空氣源熱泵供熱工程施工方案
評論
0/150
提交評論