




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、國家級大學生創新實驗項目基于人機交互技術的多旋翼飛行器控制研究報告項目主持人:姚佳樂項目組成員:石磊 楊夢飛 姜裳指導教師:匡銀虎、張虹波 物理電氣信息學院 2014年3月 目 錄1研究背景31.1AR.Drone2.0四軸飛行器介紹31.2科大訊飛語音識別系統介紹41.3Halcon機器視覺軟件介紹42開發過程52.1 AR.Drone2.0 SDK研究52.1.1 翻譯AR.Drone2.0 SDK原文52.1.2初期研究52.1.3深入研究112.2通過PC語音識別,發送語音控制命令122.3飛行器視頻流采集,分析圖片,自動判定飛行區域132.3.1學習halcon軟件,達到圖像標志識別
2、的目的132.3.2通過獲取的圓形區域的參數建立與實際距離之間的關系203后續開發展望264總結271 研究背景1.1 AR.Drone2.0四軸飛行器介紹AR.Drone2.0是一款遙控四軸飛行航模,擁有四個螺旋槳控制其飛行動作,如圖1所示。圖1 四軸飛行器其結構包括:四軸機架、螺旋槳、無刷電機、電調、飛控板、傳感器模塊、wifi模塊、機殼、攝像頭、電池。以下為AR飛行器的基本參數:飛行速度:5米/秒;18千米/小時;重量:有機殼-400克/436克;無機殼-366克;尺寸:有機殼-51.5x51.5/45.2x45.2;無機殼-45x29cm;電池:3芯鋰電池-11.1V 1000毫安時;
3、充電時間-1.5小時;飛行時間-12分鐘;內置系統:ARM cortex A8位處理器;DDR SDRAM 128MB;NAND Flash memory 128MB WiFi/g/n;Linux OS;超聲波高度計:發射頻率-40kHz;范圍-6米;操作溫度:055攝氏度; AR飛行器的飛控板為ARM板,型號為armv71 gnu/linux,搭載了以linux uclibc 2.6.32.9-gbb4d210為內核的Linux系統,封裝了飛行器的飛控算法等基本代碼,自帶一塊WiFi卡,通過WiFi網絡發送控制命令。Linux系統開源,因此理論上可以在任何客戶端上開發控制程序控制飛行器(只要
4、支持WiFi)。1.2 科大訊飛語音識別系統介紹自動語音識別技術(Auto Speech Recognize,簡稱ASR),是讓計算機通過識別和理解過程把語音信號轉變為相應文本或命令的技術,通俗的講,就是讓計算機明白人類語言。科大訊飛語音識別軟件是當前用于人機交互智能語音識別技術的領先軟件。該軟件可將控制者的語音命令通過輸入法轉換為文字命令。1.3 Halcon機器視覺軟件介紹HALCON是德國MVtec公司開發的一套完善的標準的機器視覺算法包,擁有應用廣泛的機器視覺集成開發環境。圖2 維視圖像開發定制軟件HALCON是一套image processing library,由一千多個各自獨立的
5、函數,以及底層的數據管理核心構成。其中包含了各類濾波,色彩以及幾何,數學轉換,型態學計算分析,校正,分類辨識,形狀搜尋等等基本的幾何以及影像計算功能,由于這些功能大多并非針對特定工作設計的,主要用于自動化控制檢測。HALCON支持Windows,Linux和Mac OS X操作環境。整個函數庫可以用C,C+,C#,Visual basic和Delphi等多種普通編程語言訪問。HALCON包含了一套交互式的程序設計界面HDevelop,可在其中以HALCON程序代碼直接撰寫,修改,執行程序,并且可以查看計算過程中的所有變量,設計完成后,可以直接輸出C、C+、VB、C#、vb等程序代碼,套入程序中
6、。這對于本項目基于飛行器的人機交互有較大幫助。2 開發過程設備列表:AR.Drone2.0四軸飛行器一臺,聚合物鋰離子可充電電池組(1500mAh和1000mAh各一塊),筆記本電腦一臺。運行環境:Windows 7系統,Visual studio2012,C#編程語言,Halcon10.0,科大訊飛語音輸入法。2.1 AR.Drone2.0 SDK研究2.1.1 翻譯AR.Drone2.0 SDK原文由于AR.Drone2.0 SDK說明發行時間較短,網絡和書籍上關于該部分的介紹說明均為純英文版本,因此,要深入研究需將原文翻譯為中文,起初的翻譯有一定的偏差,項目組成員在多次實驗的過程中不斷對
7、譯文進行修改,達到最契合版本。2.1.2 初期研究(一)對SDK進行初步研究,初步選取有用信息,了解控制AR.Drone是通過3個主要的通信服務完成的。控制和配置無人機是通過在UDP的5556端口發送AT命令實現的??刂泼畹陌l送延時是向用戶體驗的關鍵。這些命令都是定期發送的(通常為30次/秒)??捎妹畹牧斜砗退鼈兊恼Z法在將第6章中討論。關于無人機的信息(像它的狀態,它的位置,速度,發動機轉速等),被叫做導航數據,這些信息是由無人機通過UDP的5554端口發送給客戶端的。這些導航數據也包括可用于創建增強的現實游戲的標簽檢測信息。在演示模式下他們被發送15次/秒,在全模式(調試模式)下為200
8、次/秒。視頻流是由AR.Drone發送到客戶端設備的5555端口 (AR.Drone2.0使用TCP )。視頻流中的圖像可以用SDK中的編碼解碼器進行解碼。(二)能夠使用識別使飛機起飛、降落等的普通基礎指令,即AT指令。(1)AT命令的語法字符串被編碼為8位ASCII字符,后跟一個回車字符(字節值為0D(16)),標記< CR >以后,表示一個換行符標記符。一個命令由三個字符的AT*(即三個值分別為41(16),54(16)、2A(16)的8位字節)后面跟上一個命令的名字,一個等號,一個序列號,和可選的一系列以逗號分隔開的含義取決于命令的參數。 一個UDP包可以包含一個或多個命令,
9、以換行符隔開(字節值為0A(16)。一個AT命令必須屬于一個UDP包。將一個AT命令分解到兩個或更多的UDP包中是不可能的。示例:AT*PCMD_MAG=21625,1,0,0,0,0,0,0<CR>AT*REF=21626,290717696<CR>總命令的最大長度不能超過1024個字符,否則整個命令行將被拒絕。這個限制硬性編碼在無人機的軟件中。注意:不正確的AT命令會被無人機忽略。然而,客戶端應該總是確保它發送UDP數據包是正確的。大多數命令可以接受以下三種不同類型的參數: 一個有符號整數,存儲在用一個十進制表示的命令字符串中(例如:序列號) 一個值存儲在雙引號中的
10、字符串(例如:參數AT*CONFIG) 一個單精度IEEE-754標準的浮點值(又名:浮點數)。那些并不直接存儲在命令字符串中。相反,在AT命令中,32位字包含的浮點數將被認為是一個32位有符號的整數并打印出來。(2)命令序列為了避免無人機執行舊的命令,一個序列號將和每個發送的AT命令相聯系,并存儲為“等號”后面的第一個數字。如果該命令的序列號小于最后一個收到的有效命令的序列號,則無人機將不會執行該命令。每當客戶端與AT指令的UDP端口斷開連接,或者接收到將序列號置為1的命令時,這個序列號將在無人機中被重置為1(當前,如果超過2秒還沒有發送任何指令將被認為是斷開連接)。因此客戶端為了在無人機上
11、成功地執行命令,必須遵守以下規則: 總是發送1作為發送的第一個命令的序列號。 總是發送序列號遞增的命令。如果有幾個軟件的線程向無人機發送命令,應該通過一個專門的受互斥機制保護的函數生成序列號并發送給UDP包。(3)浮點參數示例如下,使用浮點參數并思考發送一個改進的帶有-0.8參數的命令來讓它傾斜。數字-0.8是根據IEEE-754的格式作為值為BF4CCCCD(16)的32位字存儲在內存中的。這32位字可以被認為是32位整數的-1085485875(10)。所以要發送的命令應該是:AT*PCMD_MAG=xx,xx,-1085485875,xx,xx,xx,xx(4)AT命令總結表1 AT命令
12、總結(5)命令語法AT*REF 概述:控制無人機的基本行為(起飛/降落,緊急停止,復位)語法:AT*REF=%d,%d<CR>參數1:序列號參數2:一個取值范圍為0232-1的整數值,代表一個位寬為32的位域來控制飛行器描述:發送這些命令來控制無人機的基本行為。在1.5版本的SDK中,只有位8和位9是用于控制的位域。位18,20,22,24和28應設置為1。其他位應設置為0。Bits 31 109 8 7 0使用方法不使用起飛/著陸(又叫“啟動位”)緊急信號(又叫“選擇位”)不使用位9的用法:發送一個使這一位設置為1的命令來讓無人機起飛。這個命令應該被重復直到在導航數據中無人機的狀
13、態顯示為確實已起飛狀態。如果沒有給其他命令,飛行器將進入懸停模式并停留離地面約1米高的位置上。發送一個使這一位設置為0的命令來讓無人機著陸。這個命令應該被重復直到在導航數據中無人機的狀態顯示為確實已著陸狀態,并且當檢測到異常情況發生時,將作為安全信號被發送。在第一次起飛命令發送后,無人機處在起飛狀態,但仍可接受其他的命令。這意味著當無人機在空中上升到“1米懸停狀態”時,用戶可以發送命令來移動或使它旋轉。位8使用方法:當飛行器處在一個“正常”的狀態時(飛行或在地面等待狀態),發送一個將此位設置為1(例如:發送一個“緊急指令”)的命令會使無人機進入緊急模式。無論飛行器處在何種狀態發動機都將停止工作
14、(例如:飛行器可能嚴重受到撞擊)。當飛行器處于緊急狀態(處在以前的緊急命令狀態下或是受到撞擊)時,發送一個將此位設置為1(例如:發送一個“緊急指令”)的命令,如果造成緊急情況的條件得到解決時,會使無人機恢復到正常狀態(允許它再次起飛)。發送一個將此位設置為0的AT*REF命令時,會使無人機考慮執行“緊急指令”的控制(這將防止連續的“緊急指令”使無人機在緊急和正常狀態之間劇烈的變化)。例如:把下列命令送到一個獨立的UDP包中將發送一個緊急信號:AT*REF=1,290717696<CR>AT*REF=2,290717952<CR>AT*REF=3,290717696<
15、;CR>AT*PCMD/ AT*PCMD_MAG 概述:發送一個命令使飛行器移動(行駛,旋轉)語法:AT*PCMD=%d,%d,%d,%d,%d,%d<CR>語法:AT*PCMD_MAG=%d,%d,%d,%d,%d,%d,%d,%d<CR>參數1:序列號參數2:允許使用改進命令或組合式偏航模式(位域)的標志參數3:無人機左右傾斜浮點值的范圍-11參數4:無人機前后傾斜浮點值的范圍-11參數5:無人機垂直速度浮點值的范圍-11參數6:無人機角速度浮點值的范圍-11參數7:磁航向(僅在AT*PCMD_MAG中使用)浮點值的范圍-11參數8:磁航向精度(僅在AT*PC
16、MD_MAG中使用)浮點值的范圍-11描述:這一命令控制無人機的動作。始終設置標志(參數2)位的值從0到1從而使無人機可以考慮其他參數。將它設置為0可以使無人機進入懸停模式(在地面上同一點的高度上保持).Bits31 . 3 21 0用法不使用絕對控制可使用組合式偏航可使用改進命令可使用這里所配置的左右傾斜(又叫“無人機的滾轉”或角)的參數是最大傾斜的一個百分比。一個負值使飛行器向左傾斜,從而向左飛。一個正值使飛行器向右傾斜,從而向右飛。這里所配置的前后傾斜(又叫“無人機的俯仰”或角)的參數是最大傾斜的一個百分比。一個負值使飛行器機頭向下,從而向前飛。一個正值使飛行器機頭向上,從而向后飛。無人
17、機在水平面上改變速度取決于環境,并且不能被固定。當滾轉或俯仰的值設置為0時,無人機將保持水平,但由于其慣性,它會繼續在空氣中移動。只有空氣阻力能讓它停下來。這里所定義的垂直速度(又叫“gaz”)的參數是最大垂直速度的一個百分比。一個正值使無人機在空中上升。一個負值使得它下降。這里所定義的角速度的參數是最大角速度的一個百分比。一個正值使它向右旋轉;一個負值使它向左旋轉。這里所定義的psi參數是一個由磁力計傳感器提供的標準的psi偏北角。一個值為0的角度表示控制器是面向北方的。一個正值表示控制器是朝向東的,一個負值是朝向西的。值為1和-1表示同一方向。(只用于AT * PCMD_MAG)Psi精度
18、的參數是磁力計傳感器的精度。此值表示當前位置磁方向的角度可能不同于地磁方向的最大偏差。負值表示無效的方向。(只用于AT*PCMD_MAG)2.1.3 深入研究考慮到需要識別預設區域,需要加入圖像識別,又深入研究SDK導航數據部分,編寫導航數據命令,精確具體方位。(一)導航流數據Navdata是由無人機的UDP5554端口發送到客戶端的UDP5554端口。信息存儲是一種二進制格式,包括幾個部分數據塊的形式稱為選項。(二)AR.Drone2.0的視頻流AR.Drone2.0使用標準的視頻編解碼器,具有管理網絡數據流的自定義封裝視頻編解碼器。AR.Drone2.0使用H264( MPEG4.10 A
19、VC )處理高品質視頻流和視頻錄像的基本規范。實時H264視頻流可以調整以下參數: FPS : 15和30之間比特率: 250kbps的和4Mbps之間分辨率: 360P( 640×360 )或720P( 1280 * 720 ),此處本項目使用前段攝像頭,分辨率為后者網絡視頻封裝:對于網絡傳輸,視頻圖像通過自定義頭標題文件被發送出去,其中包含圖像的許多信息。網絡傳輸視頻流AR.Drone 2.0的視頻流是通過TCP的5555插座傳輸的。當客戶端連接到插座時,AR.Drone2.0將立刻開始發送視頻幀。2.2 通過PC語音識別,發送語音控制命令在控制界面上建立文本框,用科大訊飛語言輸
20、入法,在編好的程序中輸入內容,發出命令。圖3 輸入起飛語音信號圖4 輸入向指定地點飛行的語音命令2.3 飛行器視頻流采集,分析圖片,自動判定飛行區域2.3.1 學習halcon軟件,達到圖像標志識別的目的(一)提取對本項目有用的語句dev_set_colored (number)顯示region時用到的顏色rgb1_to_gray(image,toimage)功能:把一個RGB圖像轉變成一個灰度圖像smallest_circle( Regions : : : Row, Column, Radius )獲取圓形區域的參數get_image_pointer1
21、 ( Image : : : Pointer, Type, Width, Height )獲得圖像的數據。如:圖像的尺寸的寬度和高度count_obj( Objects : : : Number )主要用法是計算objects的個數dev_open_window( : :Row,Column,WidthHeight,Background :WindowHandle )打開一個圖形的窗口dev_set_draw(fill)填滿選擇的區域dev_set_draw(margin)顯示的對象只有邊緣線threshold(
22、Image : Region : MinGray, MaxGray : )選取從輸入圖像灰度值的g滿足下列條件:MinGray < = g < = MaxGray的像素dev_set_color( : : ColorName : )指定顏色connection( Region : ConnectedRegions : : )合并所有選定像素觸摸相互連通區fill_up( Region : RegionFillUp : : )
23、填補選擇區域中空洞的部分select_shape( Regions : SelectedRegions : Features, Operation, Min, Max : )選擇帶有某些特征的區域,Operation 是運算,如“與”“或”dev_display( Object : : : )顯示圖片bin_threshold( Image : Region : : )自動確定閾值 opening_circle( Region : RegionO
24、pening : Radius : )打開具有圓形結構元素的地區,平滑圖像的邊界。 dev_clear_window( : : : )清除視圖窗體get_grayval( Image : : Row, Column : Grayval )計算Image圖像中坐標為(Row,Column)的點的灰度值reduce_domain( Image, Region : ImageReduced
25、: : )得到圖像Image相對于Region區域的圖像(二)學習圖像識別算法過程圖5輸入圖片圖6 圖像為多通道組合,將圖像處理為一通道圖7 根據顏色進行邊緣提取圖8根據圖像的一次導數計算圖像邊緣圖9 變換圖像形狀(三)初步編程識別圖10 輸入從視頻流中抓取的圖片圖11 提取圓形部分本次嘗試失敗,原因取圓的原則太廣,圖片中過大的物體會被近似看成圓,因此,除了標志圓外,還有其他物體被識別。需加強圖像邊緣曲度的判別。(四)最終識別程序圖12 輸入圖片圖13 選取從輸入圖像灰度值的g滿足下列條件:MinGray < = g < = MaxGray的像素圖14 合并所有
26、選定像素觸摸相互連通區圖15 選擇帶有圓形特征的區域,并獲取圓形區域參數(中心坐標、半徑、面積)2.3.2 通過獲取的圓形區域的參數建立與實際距離之間的關系(一)距離定位本次試驗希望提前測量出的圓形面積與實際距離的關系,建立數學模型,計算相關函數,便于飛行器定位。試驗前期(靶標直徑為50cm):表2 圓形面積與實踐距離的關系對比(50cm)圖16 圓形面積與實際距離的關系對比起初將圓形標志的直徑定為50cm,但由于飛行器距離標志近時,標識不能完全在視野內,因此改換用直徑為30cm的圓形標志,實驗數據如下。最終試驗(靶標直徑為30cm):表3 圓形面積與實際距離的關系對比(30cm)圖17 圓形
27、面積與實際距離的關系對比向飛行器發出距離的命令,它會自動糾正姿態,沿正確的軌道飛行,在飛行過程中進行自動錄像,利用halcon圖像處理軟件對錄像進行抓圖處理,先識別出圖片中的靶標,計算飛行器與靶標的距離,從而改變飛行狀態,到指定地點降落。(二)角度定位根據參數中圓形區域的中心坐標,我們比較圓形區域在圖像中的位置,設置參數:d = 圓形區域的橫坐標 圖片中心位置的橫坐標(已設置為320像素),誤差為e(e>0);判斷如果d<e,則說明飛行器位于靶標的右側,因此我們發送左傾的命令來矯正它的位置;如果d>-e,則說明飛行器位于靶標的左側,因此我們發送右傾的命令來矯正它的位置;否則就說明飛行器位于正確航線。(三)c#語言導出圖18 導出的具體操作圖19 導出的C#語言將導出后的C#語言添加到主控制程序中。(四)到指定地點轉彎從飛行器中獲取導航數據yaw,該參數為飛行器當前的磁偏
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 消費金融公司用戶畫像構建方法與精準營銷實戰案例研究報告
- 教育培訓機構品牌建設與市場推廣策略優化與實施研究報告
- 2025年元宇宙社交平臺社交平臺社交互動數據挖掘與分析在內容創作中的應用報告
- 海南省2025年七下英語期中調研試題含答案
- 2025年環保產業園循環經濟模式下的生態補償與綠色稅收政策效應分析報告
- 2025年智能家居生態構建與用戶需求滿足度研究報告
- 2025年醫藥行業CRO模式下的合同管理與風險管理報告
- 咨詢工程師VIP課件
- 2025年醫藥企業研發外包(CRO)模式下的專利布局與競爭策略報告
- 2025年醫藥企業全球化戰略與國際化經營策略報告
- 2025年廣東省佛山市順德區中考二模物理試題(含答案)
- 研發項目變更管理制度
- 2024-2025學年下學期小學數學人教版三年級期末必刷??碱}之復式統計表
- 瑞幸大學題目及答案
- 消防監督檢查員崗位技能考核題庫
- 2025年湖北武漢市青山區區管國有企業招聘筆試參考題庫含答案解析
- 四川阿壩州公開招聘社區工作者考試高頻題庫帶答案2025年
- 北京市朝陽區2022-2023四年級下冊數學期末試題+答案
- 混凝土護欄技術交底
- 發動機裝調工:高級發動機裝調工試題及答案
- 正畸頭影測量分析
評論
0/150
提交評論