版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
20/20題目:智能水中巡檢機(jī)器人智能水中巡檢機(jī)器人摘要:水中巡檢機(jī)器人是基于Kenfish水中機(jī)器人開發(fā)平臺進(jìn)行自主開發(fā)設(shè)計的一款可用于水下管道模擬泄漏點跟蹤檢測的機(jī)器人,學(xué)校為我們采購的是Kenfish-A(水下機(jī)器人創(chuàng)新套件)是樂智聯(lián)合北京大學(xué)智能控制實驗室共同研制的STEAM課程開發(fā)平臺,為了實現(xiàn)比賽所需的功能,在指導(dǎo)老師的幫助下為機(jī)器人加裝了OpenMV嵌入式圖像處理器和Pixy2CMUcam5圖像識別傳感器以及比較簡單的紅外對射障礙物傳感器,配合Arduino開發(fā)板從而實現(xiàn)“巡”和“檢”,首先水中的阻力與地面上差異非常大,因此必須保證機(jī)器人循跡即“循管道”的穩(wěn)定性,然后在實現(xiàn)對管道上多個模擬漏油點的檢測與報警。動力方面,根據(jù)比賽要求只允許使用單尾鰭提供推力和換向,即使用單舵機(jī)驅(qū)動,水中的實際情況瞬息萬變,因此需要通過不斷地調(diào)試使機(jī)器的運行效果逐漸趨于穩(wěn)定。關(guān)鍵詞:Ken-fish水下機(jī)器人創(chuàng)新平臺、OpenMV嵌入式圖像處理器、Pixy2CMUcam5圖像識別傳感器、紅外對射管、Arduino開發(fā)板的程序編寫與運行目次一、引言二、水下機(jī)器人的發(fā)展和應(yīng)用前景二、一代水下巡檢機(jī)器人的硬件構(gòu)建三、Arduino開發(fā)板的運用及程序編寫四、二代水下巡檢機(jī)器人對于循跡檢測的優(yōu)化結(jié)論致謝引言地球的表面積約為5.1億km2,而海洋的面積有3.6億km2。占地球表面積71%的海洋是人類賴以生存和發(fā)展的空間,而且是最具發(fā)展?jié)摿Φ目臻g。海洋中儲存著大量的油氣資源,作為藍(lán)色國土中國擁有相當(dāng)廣闊的海域尚待開發(fā),陸地資源逐漸緊張,這是全人類面臨的問題。海洋將成為人類可持續(xù)發(fā)展的重要基地,也是人類未來的希望。而要開發(fā)海洋單靠人力是遠(yuǎn)遠(yuǎn)不夠的,這就需要水下機(jī)器人的配合,于是研究水下機(jī)器人的領(lǐng)域也就應(yīng)運而生了。為了參加第九屆江蘇省大學(xué)生機(jī)器人大賽,是大學(xué)生進(jìn)一步了解水下機(jī)器人,學(xué)校方面采購了比賽要求使用的Kenfish-A單關(guān)節(jié)水下機(jī)器人創(chuàng)新平臺,機(jī)器人最初使用的是TCP\IP通訊,即使用手機(jī)或電腦等移動設(shè)備連接它自帶的wifi,即可完成對其運動的基本人為控制和水中圖像實時回傳,經(jīng)過測試發(fā)現(xiàn),機(jī)器人自帶的功能雖然可以正常使用,但是與比賽需要實現(xiàn)的目標(biāo)大相徑庭。首先比賽要求自動控制,即接通電源后機(jī)器人即可自主完成巡檢任務(wù),顯然聯(lián)機(jī)運行是不可行的。通過與廠家技術(shù)員的溝通發(fā)現(xiàn),因最初采購時版本選擇錯誤,我們所購買的版本不帶其他拓展套件,而原本程序已經(jīng)固化以我們團(tuán)隊的能力無法修改,所以想尋求解決辦法只能另辟蹊徑,經(jīng)過對機(jī)器人控制運行原理的拆解分析,發(fā)現(xiàn)原開發(fā)板沒有太大的利用價值必須更新組件,利用原有的舵機(jī),電池及動力系統(tǒng),而在控制方面采用Arduino開發(fā)板配合其他傳感器設(shè)備完成對舵機(jī)的控制以及指定點位的檢測。一、水下機(jī)器人的發(fā)展與應(yīng)用前景自1953年至1974年的20多年時間里,各國主要進(jìn)行潛水器的研制和初期的開發(fā)工作。在美國的CURV水下機(jī)器人在西班牙海成功地回收一枚未爆炸的氫彈之后,水下機(jī)器人的發(fā)展便更加引起了世界各國的重視。自第一艘無人遙控潛水器誕生之后,在往后的20年里,全世界共研制了20艘無人遙控潛水器。而1974年是一個轉(zhuǎn)折點,水下機(jī)器人也得到飛速發(fā)展,其原因則印證了一句話生產(chǎn)是推動科技進(jìn)步的最大的動力,海洋油氣開采勘探的需要,極大地推動了水下機(jī)器人的發(fā)展而水下機(jī)器人有主要分為兩大類,無人有纜潛水器和無人遙控潛水器,無人有纜潛水器的研制因為它有電纜連接控制端和被控端,所以不需要考慮無線傳輸?shù)膯栴}也無需擔(dān)心動力耗盡的問題,正因為這兩個原因有電纜連接的水下機(jī)器人發(fā)展比較成熟。80年代開始,中國也投入到了水下機(jī)器人的研究和開發(fā)上來,“海人”1號的研發(fā)成功標(biāo)志著我國在水下機(jī)器人的研究領(lǐng)域?qū)崿F(xiàn)了從零到一的突破。1988年,無人遙控潛水器迅速發(fā)展。這個時期增加的潛水器多數(shù)都是有纜遙控潛水器,其中一半余艘是直接為海上油氣開采服務(wù)的。無纜潛水器的發(fā)展相對慢一些,只研制出了26艘,大部分還僅限于用在軍事和科學(xué)的研究上。2012年底,中國研制出模塊化智能水下機(jī)器人。哈爾濱工程大學(xué)的5人團(tuán)隊,在指導(dǎo)教師張鐵棟帶領(lǐng)下,依托水下機(jī)器人技術(shù)國防科技重點實驗室,設(shè)計出智能水下機(jī)器人,將模塊化應(yīng)用于水下機(jī)器人領(lǐng)域。該款機(jī)器人可根據(jù)需要選擇不同模塊隨時更換模塊,可以進(jìn)行各種復(fù)雜水下作業(yè)。這款機(jī)器人獲得“全國海洋航行器設(shè)計與制作大賽”實物制作類特等獎。2015年由中國自主建造的首艘深水多功能工程船——海洋石油286建造完成并圓滿地進(jìn)行了測試,用機(jī)器人將國旗插入3000米水深海底,這樣的一次舉措看似平白無奇實際上是標(biāo)志著我國在水下機(jī)器人的研究領(lǐng)域已經(jīng)進(jìn)入了一個全新的階段水下機(jī)器人的應(yīng)用領(lǐng)域非常廣泛基本上只要和水下作業(yè)有關(guān)聯(lián)的工作都有它的用武之地,第一是海洋石油天然氣的勘探開采第二是海洋搜救比如有船只飛機(jī)等運輸工具在某片海域失聯(lián),那這時候水下機(jī)器人就可以幫助搜救工作人員在海底進(jìn)行搜尋提高了工作效率和救援成功的概率。第三就是用于科研,海底的世界是人類最不了解的科研工作者可以借助水下機(jī)器人這個平臺在水下采樣勘探,對于研究海底地質(zhì)海底生物都有極大的幫助。一代水下巡檢機(jī)器人的硬件構(gòu)建對于初代機(jī)器人的制作我們團(tuán)隊采納了賽事合作方南京工程學(xué)院的參賽隊的建議,使用了比較簡單可行的紅外對射管循跡及檢測方法。這里提一下紅外對射管的運行原理,它主要由兩部分組成一是紅外發(fā)射管二是紅外接收管,這兩部分分其實是兩個比較特殊的二極管,紅外發(fā)射管通電向外發(fā)射帶有較大能量的紅外線,肉眼可以看到少量的紅色光線但是實際起作用的是肉眼不可見的遠(yuǎn)紅外光波,簡稱“光生電”。紅外接收管則是利用大面積的PN結(jié)接受發(fā)射管發(fā)出的光線在遇到障礙物時反射回來的紅外線,一旦接收到紅外線即紅外光子進(jìn)入了PN結(jié),共價鍵上的束縛電子得到了光子的能量,一部分電子從共價鍵上掙脫,變成了光載流子,在接收管反向電壓的作用下發(fā)生漂移運動,增加了接收管反向電流使接在此二極管兩端的負(fù)載獲得電能,簡稱“電生光”。上述是紅外對管的大致工作原理,我們在機(jī)器人上采用的是工業(yè)級的模塊化光電三極管,與光電二極管區(qū)別在于,它的接收管在接收到光信號并轉(zhuǎn)化為電信號的同時還利用了三極管的放大特性對產(chǎn)生的微弱電信號進(jìn)行了放大。因為使用了模塊化的PNP型光電三極管,其內(nèi)部其他芯片的工作原理這里也就不再深究,它所能達(dá)到的效果就是給蘭線和棕線即正負(fù)兩極(部分型號略有差異)接入5伏電壓,那么黑線就會在對管前方檢測到障礙物時發(fā)出一個高電平信號,離開障礙物就立即重新變?yōu)榈碗娖?。利用對管上的電位器調(diào)節(jié)檢測距離,再利用檢測時不同位置電平的變化,結(jié)合單片機(jī)進(jìn)行控制??刂品矫婧竺鏁M(jìn)行詳細(xì)的解釋,這一節(jié)主要講光電對管的使用,巡檢機(jī)器人一共使用了4個循跡對管用于運動控制,三個檢測對管用于模擬漏油點檢測,安裝方式為循跡對管機(jī)身左面兩個右面兩個,一半沒入水中,檢測對管機(jī)身正下方一個,左下方和右下方分別一個,這樣的安裝方法是我們通過對比賽規(guī)程的仔細(xì)分析和在自己學(xué)校的場地里進(jìn)行多次實驗得出的比較完備的安裝方法。機(jī)器人編程及改裝說明
(1)
結(jié)構(gòu)的改裝要求
允許對機(jī)器人本身進(jìn)行結(jié)構(gòu)加裝的賽項。改裝要求需滿足:長寬不超過機(jī)器人體長,放入
26cm
深水池中垂直方向最低點與水池底部的距離>=2cm,并且改裝后的結(jié)構(gòu)件尖銳處做好保護(hù),以防損害比賽專用水池。結(jié)構(gòu)完全相同的機(jī)器,不允許同時參加比賽。
(2)
編程要求
需要進(jìn)行底層軟件編程的賽項,程序代碼由參賽隊伍的成員自行編寫。
比賽過程
比賽開始前機(jī)器魚至于起點分隔線框內(nèi),不得超過分隔線。裁判吹哨示意比賽開始,比賽計時開始,由裁判遠(yuǎn)程連接并啟動機(jī)器魚,啟動后不允許再進(jìn)行任何操作。機(jī)器魚沿著輸油管線按照箭頭指示方向游動,不得偏離管線,從正上方觀察若機(jī)器魚與管線沒有重疊則比賽停止,計時結(jié)束。游動的同時檢測管線上標(biāo)記的漏油處,檢測到漏油處時通過一定方式現(xiàn)場告知裁判及觀眾,可以是聲音、光、回傳
PC
機(jī)數(shù)據(jù)等,機(jī)器魚全身進(jìn)入終點區(qū)比賽結(jié)束,計時停止。
1基礎(chǔ)組比賽場地為標(biāo)準(zhǔn)3m*2m*0.4m長方形水池,水面高度為26cm,池底和池壁為湖藍(lán)色。有效比賽場地尺寸為2700mm×2000mm×300mm(長×寬×高)
2、管道
比賽用管道為白色
的PVC
直徑
75mm
管道,拐角處使用標(biāo)準(zhǔn)
90
度
PVC
管連接拐角。
3、區(qū)域分界線
使用黑色的膠帶作為比賽場地分界線,用于標(biāo)定起點區(qū)和終點區(qū)。
比賽所用水下機(jī)器人需為仿生魚型機(jī)器人,由尾鰭提供動力。機(jī)器人放入水中,以機(jī)器人游動前進(jìn)方向的長度定義為機(jī)器人的長度,以水平面內(nèi)垂直于長度的方向的長度定義為機(jī)器人的寬度,垂直于水平面方向的機(jī)器人長度定義為高度。機(jī)器人長度不得超過
500mm。機(jī)器人寬度不得超過
300mm。機(jī)器人高度不得超過
260mm
并且機(jī)器人放在水中機(jī)器人結(jié)構(gòu)的最低點與水池底部的距離>=20mm。機(jī)器人的需保證不會有任何尖銳結(jié)構(gòu)會觸碰到水池。
2、用直徑
75mm
白色的
PVC
管鋪設(shè)模擬的輸油管線,
管鋪入水池底部,PVC
管線如場地圖所示。用直徑
3cm
圓形的實心黑色標(biāo)記表示漏油處,共設(shè)置
8
個漏油處,隨機(jī)分布在輸油管的各處(輸油管頂部和斜側(cè)面均可能出現(xiàn)漏油點)。場地圖標(biāo)識起點和終點所處虛線方框的內(nèi)部分別為起點區(qū)和終點區(qū),起點區(qū)和終點區(qū)用黑色的膠帶標(biāo)記規(guī)劃范圍。
用直徑
75mm
白色的
PVC
管鋪設(shè)模擬的輸油管線,
管鋪入水池底部,PVC
管線如場地圖所示。用直徑
3cm
圓形的實心黑色標(biāo)記表示漏油處,共設(shè)置
8
個漏油處,隨機(jī)分布在輸油管的各處(輸油管頂部和斜側(cè)面均可能出現(xiàn)漏油點)。場地圖標(biāo)識起點和終點所處虛線方框的內(nèi)部分別為起點區(qū)和終點區(qū),起點區(qū)和終點區(qū)用黑色的膠帶標(biāo)記規(guī)劃范圍。
對于比賽規(guī)程進(jìn)行詳細(xì)了解之后,將循跡對管安裝在機(jī)器人兩側(cè)最為妥當(dāng),在運動過程中,仿生魚的身體會隨著尾鰭的擺動而左右晃動,因為水流的影響水中的阻力會對運動方向造成很大的影響,理想情況是在執(zhí)行直行指令時,能順利地向前運動但是在實際測試中發(fā)現(xiàn),在執(zhí)行同樣的指令時魚身會出偏移,且每次都不同,因此需要左右兩側(cè)的對管在檢測到偏移時發(fā)出信號,通過開發(fā)板的處理再給尾鰭發(fā)送轉(zhuǎn)向指令。3Arduino開發(fā)板的運用及程序編寫Arduino開發(fā)板是基于C語言的開源開發(fā)板,經(jīng)過查詢資料發(fā)現(xiàn)其功能已經(jīng)完全可以滿足機(jī)器人的運行。電路的連接部分是這樣的,11.1V3S的鋰離子電池作為電源,開發(fā)板、紅外對射管、舵機(jī)都使用5V電源,顯然11.1V的電壓太高因此采用了LM2596DC-DC可調(diào)降壓穩(wěn)壓電源模塊,通過對電位器的調(diào)節(jié)使輸出電壓達(dá)到了預(yù)設(shè)值,接下來因為上面提到機(jī)器人各個負(fù)載原件都使用5V電壓,所以直接把對管、舵機(jī)和開發(fā)板的電源輸入端并聯(lián)后接到LM2596的輸出端上,此時所有模塊的指示燈均已亮起。接下來就可以分配信號端口,ArduinoUNOR3開發(fā)板一共設(shè)了13個信號端口,這些端口既可以作為輸出端使用同時也可以輸入信號,值得注意的是其中的3、5、6、9、10、11端口上都標(biāo)了~這樣一個波浪線,這代表著這幾個端口除了可以進(jìn)行數(shù)字量的輸入輸出,同時可以用來輸出pwm波,即舵機(jī)控制信號。了解了端口的作用之后信號線的分配就非常簡單了,因為紅外對管輸出的是數(shù)字信號,因此可以隨意選擇,我們選擇的端口循跡對管從左往右依次為7、8、11、12檢測對管使用2、3、10舵機(jī)使用9號端口,另外還在11號端口接了一個LED指示燈用于檢測報警,確定端口后插上信號線,開發(fā)板的電路裝配就完成了。接下來就是程序的編寫,只需要有一定的C語言基礎(chǔ),就能完全勝任Arduino的程序編寫,因為它擁有很多程序的庫文件,只需要給出指令程序進(jìn)行簡單的調(diào)用就可以了,程序主要分為這幾個部分:其一是定義變量#include<Servo.h>Servomyservo;//定義一個舵機(jī)對象控制魚尾intpos;//定義一個變量去控制魚尾偏轉(zhuǎn)的角度#defineSTOP0#defineFORWARD1#defineTURNLEFT2#defineTURNRIGHT3#defineTURNRIGHT14//中間對管intledPin=11;//巡跡對管,從魚頭方向的最左邊開始排序inttrac1=7;inttrac2=8;inttrac3=11;inttrac4=12;intcheck=10;intcheck=2intcheck=3voidsetup()pinMode(trac1,INPUT);pinMode(trac2,INPUT);pinMode(trac3,INPUT);pinMode(trac4,INPUT);pinMode(check1,INPUT);pinMode(check2,INPUT);pinMode(check3,INPUT);pinMode(ledPin,OUTPUT);這一部分就是把剛才分配的端口寫入到程序中,定義所使用到的針腳,和該針腳是作為輸出還是輸入,這里舵機(jī)是是輸出,對管都是輸入,LED是輸出。其二就是運動程序的編寫,主要分為直行左轉(zhuǎn)右轉(zhuǎn),這一部分就是根據(jù)對管的回傳數(shù)據(jù)進(jìn)行實時的運動軌跡調(diào)整。當(dāng)左邊的兩個對管其中任意一個檢測到管道,說明機(jī)身偏向了右側(cè),需要向左糾正,同樣的右邊任意一個對管檢測到管道,說明機(jī)身偏左需要及時向右調(diào)整,而兩邊都沒有做出信號反饋則說明魚身正處于管道上方,這個時候只需要正常執(zhí)行直行程序就可以了,這其實和普通的小車巡線運行類似。voidloop(){//putyourmaincodehere,torunrepeatedly:tracing();voidmotorRun(intcmd)switch(cmd){caseFORWARD://如果是直行的字符指令,下面就是魚尾的動作(其他的指令和直行的同理就不寫注釋了)for(pos=97;pos<130;pos++){//舵機(jī)從97°轉(zhuǎn)到130°,每次增加1°(經(jīng)過實測97度,魚尾在正中間)myservo.write(pos);//給舵機(jī)寫入角度delay(4);//延時4ms讓舵機(jī)轉(zhuǎn)到指定位置}for(pos=130;pos>64;pos--){myservo.write(pos);//給舵機(jī)寫入角度delay(4);}for(pos=64;pos<97;pos++){myservo.write(pos);//給舵機(jī)寫入角度delay(4);break;caseTURNLEFT:for(pos=97;pos>54;pos--)myservo.write(pos);//給舵機(jī)寫入角度delay(5);for(pos=54;pos<97;pos++)myservo.write(pos);//給舵機(jī)寫入角度delay(5);break;caseTURNRIGHT:for(pos=97;pos>54;pos--)myservo.write(pos);//給舵機(jī)寫入角度delay(5);for(pos=54;pos<97;pos++)myservo.write(pos);//給舵機(jī)寫入角度delay(5);break;defaultfor(pos=97;pos<140;pos++){//myservo.write(pos);//給舵機(jī)寫入角度delay(4);//延時4ms讓舵機(jī)轉(zhuǎn)到指定位置for(pos=140;pos>54;pos--)myservo.write(pos);//給舵機(jī)寫入角度delay(4);for(pos=54;pos<97;pos++)myservo.write(pos);//給舵機(jī)寫入角度delay(4);voidtracing(intdata[5];data[0]=digitalRead(7);data[1]=digitalRead(8);data[2]=digitalRead(11);data[3]=digitalRead(12);data[4]=digitalRead(10);data[5]=digitalRead(2);data[6]=digitalRead(3);if(data[0]&&data[1]&&data[2]&&data[3])//左右都沒有檢測到白管motorRun(FORWARD);if(!data[2]||!data[3])//右邊都檢測到管道m(xù)otorRun(TURNRIGHT1);motorRun(FORWARD);motorRun(TURNRIGHT1);motorRun(FORWARD);if(!data[0]||!data[1])//右邊檢測到管道m(xù)otorRun(TURNRIGHT);motorRun(TURNRIGHT);motorRun(TURNRIGHT);motorRun(TURNRIGHT);motorRun(TURNRIGHT);motorRun(TURNRIGHT);以上就是循跡程序,通過不斷地測試,發(fā)現(xiàn)讓舵機(jī)從140°轉(zhuǎn)到54°,中位是97°左右轉(zhuǎn)分別是97到140和97到54,延時4毫秒讓舵機(jī)轉(zhuǎn)到指定位置是最理想的狀態(tài)。其三就是檢測程序if(data[4])//判斷中間的紅外對管如果為1掃到黑點led閃爍digitalWrite(ledPin,HIGH);delay(1000);digitalWrite(ledPin,LOW);delay(1000);這一部分相對比較簡單只要檢測對管測到黑點由高電平轉(zhuǎn)換為低電平就向LED供電點亮指示燈并閃爍,說明已檢測到模擬漏油點。值得一提的是在檢測程序中我們使用了一個中斷,簡單來說中央處理器原本執(zhí)行程序時是按照程序指令一條一條向下順序執(zhí)行的,上面需要不斷執(zhí)行的就是運動程序,而檢測程序?qū)τ谶\動程序而言就是一個中斷它需要中央處理器立刻去處理,暫時中斷當(dāng)前的程序,轉(zhuǎn)去處理檢測及報警程序,然后在立即回來繼續(xù)執(zhí)行運動程序,如果不加中斷,一旦在前進(jìn)過程中檢測到了黑點,機(jī)器人轉(zhuǎn)去執(zhí)行檢測程序之后就不會再回來執(zhí)行運動程序,從而陷入死循環(huán),因此需要把檢測報警程序放進(jìn)中斷里。到此為止一代仿生水下巡檢機(jī)器人已經(jīng)完工。四、二代水下巡檢機(jī)器人對于循跡檢測的優(yōu)化前面介紹了一代水下巡檢機(jī)器人是利用紅外對管進(jìn)行循跡和檢測,結(jié)構(gòu)簡單編程難度低,但是缺陷也非常的明顯,受外界干擾大,很容易出現(xiàn)偏離管道后無法及時回轉(zhuǎn),導(dǎo)致徹底偏離。另外就是檢測不夠準(zhǔn)確,因為在前進(jìn)過程中,機(jī)身處于一個來回晃動的狀態(tài),而對管是固定在機(jī)身上的點也是固定的,因此相對于機(jī)身和模擬漏油點一直處于一個來回移動的狀態(tài),在運行過此中很容易出現(xiàn)恰好經(jīng)過黑點時機(jī)身往左或者往右偏了,從而導(dǎo)致該點無法被正常檢測。為了克服這個問題,我們向其他參賽隊進(jìn)行了學(xué)習(xí),了解到他們使用的是OpenMV嵌入式圖像處理器,使用攝像頭之后,巡線和檢測的效果都大大提升。因此我們團(tuán)隊也決定使用攝像頭替代紅外對管。OpenMV攝像頭是一款小巧,低功耗,低成本的電路板,它可以很輕松的完成機(jī)器視覺(machinevision)應(yīng)用??梢酝ㄟ^高級語言MicroPython腳本,而不是C/C++。Python的高級的數(shù)據(jù)結(jié)構(gòu)使我們可以很容易的在機(jī)器視覺算法中處理復(fù)雜的輸出。但是,仍然可以完全控制OpenMV,包括IO引腳??梢院苋菀椎氖褂猛獠康慕K端觸發(fā)拍攝或者或者執(zhí)行算法,也可以用算法的結(jié)果控制IO引腳。OpenMV攝像頭的特點:STM32F765VI
ARMCortexM7處理器,216
MHz,512KBRAM,2
MBflash.I/O引腳輸出3.3V并且有5V耐受。這個處理器有以下IO接口。高速USB(12Mbs)接口,連接到電腦。插入OpenMV攝像頭后,電腦會出現(xiàn)一個虛擬COM端口和一個“U盤”。一個SPI總線擁有高達(dá)54Mbs速度,可以簡單的把圖像流數(shù)據(jù)傳給LCD擴(kuò)展板,WiFi擴(kuò)展板,或者其他控制器。一個I2C總線,CAN總線,以及一個異步串口總線(TX/RX),用來鏈接其他的控制器或者傳感器。3個I/O引腳用于控制舵機(jī).所有IO口都可以用于,中斷和PWM。一個RGBLED(三色),兩個高亮的850nmIRLED(紅外).OV7725
感光元件在80
FPS下可以處理640×4808-bit的灰度圖或者320×24016-bitRGB565的彩色圖像;當(dāng)分辨率低于320×240時可以達(dá)到120FPS。大多數(shù)簡單的算法運行在30FPS以下。OpenMV攝像頭有一個2.8mm焦距鏡頭在一個標(biāo)準(zhǔn)M12鏡頭底座。以上是OpenMV的基本信息,所需要使用的是它的兩項功能:單軌巡線、圓形檢測。單軌巡線的原理大致是這樣的,將整個畫面分割為若干個檢測區(qū)域,并給每個區(qū)域設(shè)定一個權(quán)值。很容易理解,距離越遠(yuǎn),重要性越高/越小,根據(jù)實際需求來設(shè)定不同的權(quán)值,然后各自調(diào)用find_blobs函數(shù),找出各自的最大色塊。將每個色塊中心點的x坐標(biāo)進(jìn)行加權(quán)平均,最后根據(jù)中心公示,利用arctan函數(shù),求得所需偏轉(zhuǎn)角。編程過程首先設(shè)置閾值,如果是黑線,GRAYSCALE_THRESHOLD=[(0,64)];如果是白線,GRAYSCALE_THRESHOLD=[(128,255)],比賽場地是藍(lán)色,這里默認(rèn)為黑色,roi代表三個取樣區(qū)域,(x,y,w,h,weight),代表左上頂點(x,y)寬高分別為w和h的矩形,weight為當(dāng)前矩形的權(quán)值。采用的QQVGA圖像大小為160x120,roi即把圖像橫分成三個矩形。三個矩形的閾值要根據(jù)實際情況進(jìn)行調(diào)整,離機(jī)器人視野最近的矩形權(quán)值要最大,計算權(quán)值和。上面的三個矩形,r[4]即每個矩形的權(quán)值,利用顏色識別分別尋找三個矩形區(qū)域內(nèi)的線段找到視野中的線,merge=true,將找到的圖像區(qū)域合并成一個,在目標(biāo)區(qū)域找到直線,目標(biāo)區(qū)域找到的顏色塊(線段塊)可能不止一個,找到最大的一個,作為本區(qū)域內(nèi)的目標(biāo)直線,將此區(qū)域的像素數(shù)最大的顏色塊畫矩形和十字形標(biāo)記出來計算centroid_sum,centroid_sum等于每個區(qū)域的最大顏色塊的中心點的x坐標(biāo)值乘本區(qū)域的權(quán)值,控制舵機(jī)轉(zhuǎn)動至相應(yīng)角度巡線實現(xiàn)之后,下一步就是黑點的檢測,對于攝像頭而言就是圓形檢測,圓形檢測一共分為五步。第一步圖像求導(dǎo),圖像求導(dǎo)就是說像素顏色取值在某一個方向的變化速度。理所當(dāng)然的是在邊緣處的變化最大。對于離散結(jié)構(gòu)的矩陣需要在X和Y方向分別求導(dǎo)。第二步是獲取圖像邊緣,對求導(dǎo)后的圖像進(jìn)行平滑處理,過濾掉噪聲。設(shè)定一個閾值去尋找有效邊緣區(qū)域,對有效區(qū)域的圖像進(jìn)行細(xì)化,獲取局部的邊緣像素,添加對邊緣像素進(jìn)行連接。第三步是霍夫變換。普通二維平面,圓公式可以表示為(x-a)^2+(y-b)^2=r^2(a,b)為圓心坐標(biāo),r為半徑,在霍夫空間,三個軸坐標(biāo)為a,b,r分表代
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 新疆分院招聘廣東電信規(guī)劃設(shè)計院2026屆校招開啟(12人)考試核心試題及答案解析
- 2025安徽皖北煤電集團(tuán)公司掘進(jìn)工招聘380人筆試重點試題及答案解析
- 2025中建交通建設(shè)(雄安)有限公司招聘考試重點題庫及答案解析
- 2025福建醫(yī)科大學(xué)安全保衛(wèi)工作人員招聘2人(十四)筆試重點題庫及答案解析
- 石棉縣人力資源和社會保障局2025年下半年面向縣內(nèi)公開考調(diào)事業(yè)單位工作人員(7人)筆試重點題庫及答案解析
- 2025四川成都市第三人民醫(yī)院招聘考試核心試題及答案解析
- 2025西藏日喀則市人民醫(yī)院面向社會招聘編制外醫(yī)務(wù)人員22人考試重點題庫及答案解析
- 2025河北秦皇島市九龍山醫(yī)院第二批選聘工作人員3人考試核心試題及答案解析
- 2025泰科防務(wù)科技(重慶)有限公司招聘2人筆試重點試題及答案解析
- 2025江西吉安吉州區(qū)北門街道真君山社區(qū)招聘就業(yè)見習(xí)人員1人備考考試試題及答案解析
- 內(nèi)蒙古自治區(qū)烏蘭察布市集寧區(qū)2025-2026學(xué)年九年級上學(xué)期12月期末考試(中考診斷)化學(xué)試卷(含答案)
- 2025年廣東省第一次普通高中學(xué)業(yè)水平合格性考試(春季高考)英語試題(含答案詳解)
- 2026年合同全生命周期管理培訓(xùn)課件與風(fēng)險防控手冊
- 湖南中考生物真題三年(2023-2025)分類匯編:專題10 生物的遺傳和變異(解析版)
- 理賠管理經(jīng)驗分享
- 設(shè)計外包框架合同范本
- 2026年日歷表(每月一頁、可編輯、可備注)
- DB44∕T 1297-2025 聚乙烯單位產(chǎn)品能源消耗限額
- 講給老年人聽的助聽器
- 大清包勞務(wù)合同樣本及條款解讀
- 醫(yī)德醫(yī)風(fēng)建設(shè)專題黨課講稿:堅守醫(yī)者仁心 永葆清廉本色
評論
0/150
提交評論