• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      嵌入式Linux實時控制的四軸飛行器進程分析※

      2015-09-12 06:42:54楊浩楊斌
      關鍵詞:開發(fā)板資源分配旋翼

      楊浩,楊斌

      (西南交通大學 信息科學與技術學院,成都610031)

      楊浩(碩士研究生),主要研究方向為嵌入式開發(fā)與應用;楊斌(教授),主要研究方向為嵌入式系統(tǒng)應用開發(fā)、實時與分布式系統(tǒng)。

      引 言

      目前,市場上大部分四軸飛行器都是基于單片機制作的控制系統(tǒng)。單片機體積小、功耗低,但是由于其性能有限[1],且不能很好地支持TCP/IP協(xié)議,導致基于單片機制作的四軸飛行器功能有限。如果想要四軸飛行器實現(xiàn)更多的功能,則需要使用操作系統(tǒng)來制作四軸飛行器控制系統(tǒng)。在Linux操作系統(tǒng)中,普通進程不能做到快速的實時響應,因此如果使用Linux操作系統(tǒng)來制作四軸飛行器控制系統(tǒng),就需要對進程的優(yōu)先級和時間片進行修改,使其能夠保證快速響應[2]。

      1 Linux操作系統(tǒng)實時進程和普通進程對比

      Linux本身并不是一個強實時操作系統(tǒng),但是其調度策略中提供了對實時進程的支持[3]??傮w而言,Linux實時調度算法能夠滿足嚴格的時間要求,實時進程和普通進程的具體對比略——編者注。

      2 飛行控制系統(tǒng)的任務分析

      2.1 開發(fā)板選擇

      因為開發(fā)板要安裝到四軸飛行器中,因此有以下考慮因素[4]:

      ①體積小、功耗低,同時,價格不能太高。

      ②開發(fā)板需要采集傳感器數(shù)據(jù),并且在調試的過程中和上位機進行通信,需要開發(fā)板至少有兩個串口。

      ③四軸飛行器需要4 路PWM 信號供給電子調速器,因此至少能支持4路PWM 輸出。

      ④開發(fā)板上面需要外接USB攝像頭和無線網(wǎng)卡,進行視頻采集和網(wǎng)絡通信,因此至少需要1個USB接口。

      基于以上因素,選擇了搭載AM3358處理器的BeagleBone Black開發(fā)板。

      2.2 任務劃分

      四軸飛行器在飛行的過程中,會有很多任務需要執(zhí)行,其中包括控制任務、讀取傳感器數(shù)據(jù)任務、姿態(tài)自動調節(jié)任務、發(fā)送當前飛機情況任務、接收控制信號任務、響應控制信號任務、視頻采集任務、視頻傳輸任務。下面逐步介紹各個任務。

      ①控制任務:是指在接收到電腦客戶端發(fā)送的指令后對四軸飛行器進行控制的任務,這些指令包括起飛、降落、向左邊飛、向右邊飛、前進、后退。四軸飛行器控制系統(tǒng)要及時響應這些指令并根據(jù)指令改變4 個旋翼的PWM 值。如果客戶端沒有發(fā)送指令,則按照上一次的指令執(zhí)行飛行任務。

      ②讀取傳感器數(shù)據(jù)任務:四軸飛行器在飛行過程中需要不斷地讀取姿態(tài)傳感器數(shù)據(jù)來獲取當前飛行器的飛行姿態(tài),并對獲取的傳感器數(shù)據(jù)進行處理。

      ③姿態(tài)自動調節(jié)任務:在得到數(shù)據(jù)后和初始值數(shù)據(jù)進行比較,如果發(fā)現(xiàn)四軸飛行器機身傾斜,則要根據(jù)目前檢測的數(shù)據(jù)控制4個旋翼的轉速,對四軸飛行器進行自動調節(jié),使得其回到平穩(wěn)狀態(tài)。

      ④發(fā)送當前飛機情況任務:為了使電腦客戶端能更好地知道當前飛機的情況,四軸飛行器控制系統(tǒng)需要不斷地將當前傳感器發(fā)出的3個角度數(shù)值和4個旋翼的PWM值發(fā)送到客戶端的電腦上,使得控制系統(tǒng)對飛行器的當前狀態(tài)更加清楚。

      ⑤接收控制信號任務:四軸飛行器控制系統(tǒng)需要接收電腦客戶端發(fā)送過來的指令,這些指令包括起飛、降落、向左邊飛、向右邊飛、前進、后退。

      ⑥視頻采集任務:四軸飛行器控制系統(tǒng)需要不斷地采集視頻數(shù)據(jù),然后將這些數(shù)據(jù)存入到一個緩存中。

      ⑦視頻傳輸任務:將緩存中的數(shù)據(jù)通過網(wǎng)絡發(fā)送出去,然后等下一次數(shù)據(jù)采集完成后繼續(xù)發(fā)送。

      2.3 任務優(yōu)先級說明

      在四軸飛行器控制系統(tǒng)中,一共有7個任務在運行。控制任務是在接收控制信號任務完成后迅速地根據(jù)控制信號來調整飛行姿態(tài),如果這兩個任務反應較慢有可能會導致四軸飛行器遇上危險,因此控制任務和接收控制信號任務需要較快的反應。讀取傳感器數(shù)據(jù)任務是為了進行姿態(tài)自動調節(jié)任務,使得四軸飛行器在空中保持平穩(wěn),這兩個任務也非常重要,同樣需要較快的反應。此外,地面的控制者要明確目前四軸飛行器所處的狀態(tài),僅僅憑借眼睛去觀察是遠遠不夠的,因此發(fā)送當前飛機情況任務對于地面的控制者來說很重要。相較于前5個任務,視頻采集任務和視頻傳輸任務對于實時性的要求不是太高,只要控制者能看到四軸飛行器目前所返回的視頻即可,因此視頻采集任務和視頻傳輸任務沒有前5個任務的優(yōu)先級別高。

      2.4 進程優(yōu)先級分配

      BeagleBone Black 上 面 包 含 了 一 個Cortex-A8 處 理器,其性能較高,但是只有一個內核,因此相比多核處理器,BeagleBone Black運行多線程任務并沒有優(yōu)勢。此外,控制任務、讀取傳感器數(shù)據(jù)任務、姿態(tài)自動調節(jié)任務、發(fā)送當前飛機情況任務和接收控制信號任務對實時性要求都很高,而且這5個任務之間相互關聯(lián),因此將這5個任務放到一個進程中,通過設置一些變量來對任務發(fā)生的順序進行控制,這個進程稱為四軸飛行器控制進程。而視頻采集任務和視頻傳輸任務跟前5個任務沒有關系,因此將這兩個任務合并為一個進程,該進程稱為四軸飛行器視頻傳輸進程。

      在將兩個進程設置為實時進程后,為了進一步提高實時性,需要修改這兩個進程的時間片。進程的時間片如果太低,進程之間互相切換會造成切換時間的浪費,而進程的時間片如果太高,實時性能會有所下降,因此選擇合適的時間片至關重要。根據(jù)經(jīng)驗,每個進程的時間片為5ms時,效果是比較好的。兩個進程的優(yōu)先級和時間片如表1所列。

      表1 四軸飛行器進程的優(yōu)先級和時間片

      BeagleBone Black開發(fā)板的性能比單片機好很多,在運行實時進程后,其性能和效果都要優(yōu)于單片機制作的飛行控制系統(tǒng)。

      3 飛行控制系統(tǒng)的進程測試

      在程序中改變進程的優(yōu)先級是通過改變結構體sched_param 中間的成員變量sched_priority來實現(xiàn)。而改變時間片是通過在程序中修改進程的nice值來改變,當nice值為+19時,該進程對應的時間片為5ms。修改進程優(yōu)先級是通過函數(shù)sched_setscheduler()來完成的,在參數(shù)中可以選擇輪流調度。

      首先單獨運行四軸飛行器控制進程,該進程的名稱為“bbbnew”,四軸飛行器控制進程單獨運行時系統(tǒng)資源分配圖如圖1所示。

      由圖1可知,四軸飛行器控制進程“bbbnew”的優(yōu)先級為-99,nice值為19,此時對應的時間片為5ms。該進程單獨運行時的CPU 占有率為74.2%,該占有率在70%~85%之間徘徊。然后單獨運行四軸飛行器視頻傳輸進程,該進程的名稱為“camera”,視頻傳輸進程單獨運行時系統(tǒng)資源分配圖如圖2所示。

      由圖2可知,四軸飛行器視頻傳輸進程“camera”的優(yōu)先級為-98,nice值為19,此時對應的時間片為5ms。該進程單獨運行時的CPU 占有率為10.6%,該占有率在9%~12.5%之間徘徊。四軸飛行器在飛行過程中兩個進程都要運行,系統(tǒng)根據(jù)優(yōu)先級和時間片來對進程進行調度。

      圖1 四軸飛行器控制進程單獨運行時系統(tǒng)資源分配圖

      圖2 視頻傳輸進程單獨運行時系統(tǒng)資源分配圖

      3.1 四軸飛行器平穩(wěn)狀態(tài)時

      當四軸飛行器在平穩(wěn)狀態(tài)時,控制進程和視頻傳輸進程同時運行,如圖3所示。

      圖3 四軸飛行器平穩(wěn)運行時

      從圖3中可以看出,四軸飛行器4個旋翼的轉速基本一致,此時橫滾角、俯仰角和偏航角與初始值的差別很小,表明四軸飛行器處在平穩(wěn)運行狀態(tài)。此時在攝像頭面前晃動手指,在客戶端電腦上能很快看到手指的晃動,反應速度很快,能滿足系統(tǒng)對實時性的要求。

      從圖4中可以看出,在四軸飛行器平穩(wěn)運行時,控制進程“bbbnew”的CPU 占用率是72.8%,視頻傳輸進程“camera”的CPU 占用率是11.0%,兩個進程并沒有完全占滿CPU 資源。此外,兩者同時運行一段時間后,兩個進程的運行時間總和是不一樣的。Linux操作系統(tǒng)top指令中TIME+的含義是進程使用的CPU 時間總計,單位為1/100s??刂七M程“bbbnew”的TIME+數(shù)值為2∶01.45,四軸飛行器視頻進程“camera”的數(shù)值為1∶37.66,這是因為兩個進程的時間片雖然相同,但是由于控制進程的優(yōu)先級要大于視頻傳輸進程的優(yōu)先級,所以控制進程的運行時間總和大于視頻傳輸進程的運行時間總和,這與設計目標一致。

      圖4 平穩(wěn)運行時系統(tǒng)資源分配圖

      3.2 四軸飛行器傾斜狀態(tài)時

      (1)四軸飛行器向左傾斜時

      四軸飛行器在向左傾斜時,歐拉角與初始值的差值和四軸飛行器4個旋翼的轉速如圖5所示。

      可以看出,此時橫滾角與初始值的差值超過了臨界值并且為負值,表明此時四軸飛行器正在向左傾斜,控制系統(tǒng)需要根據(jù)PID算法來調節(jié)4個旋翼的轉速,使四軸飛行器重新回到平衡狀態(tài)。系統(tǒng)自動進行調節(jié)的同時,在攝像頭上面快速晃動手指,在客戶端電腦上可以實時看到晃動手指的視頻。這表明兩個進程在同時運行時,實時性都可以得到保證。此時的系統(tǒng)資源分配圖如圖6所示。

      可以看出,在四軸飛行器向左傾斜時,控制進程“bbbnew”的CPU 占用率是83.1%,視頻傳輸進程“camera”的CPU 占用率是12.0%。兩個進程并沒有完全占滿CPU 資源。同樣,控制進程的運行時間總和大于視頻傳輸進程的運行時間總和。

      (2)四軸飛行器向右傾斜時

      四軸飛行器在向右傾斜時,歐拉角與初始值的差值和四軸飛行器4個旋翼的轉速略——編者注。

      可以看出,此時橫滾角與初始值的差值超過了臨界值并且為正值,表明此時四軸飛行器正在向右傾斜,控制系統(tǒng)需要根據(jù)PID算法來調節(jié)4個旋翼的轉速,使四軸飛行器重新回到平衡狀態(tài)。系統(tǒng)自動進行調節(jié)的同時,在攝像頭上面快速晃動手指,在客戶端電腦上可以實時看到晃動手指的視頻。這表明兩個進程在同時運行時,實時性都可以得到保證。此時的系統(tǒng)資源分配圖略——編者注。

      圖5 四軸飛行器向左傾斜時

      圖6 四軸飛行器向左傾斜時系統(tǒng)資源分配圖

      可以看出,在四軸飛行器向右傾斜時,控制進程“bbbnew”的CPU 占用率是70.9%,視頻進程“camera”的CPU 占用率是9.0%。兩個進程并沒有完全占滿CPU 資源。同樣,控制進程的運行時間總和大于視頻傳輸進程的運行時間總和。

      經(jīng)過測試,四軸飛行器其他傾斜情況也能滿足實時響應要求。

      3.3 極端條件下的測試

      第3.1節(jié)和3.2節(jié)分別介紹了四軸飛行器在平穩(wěn)狀態(tài)下和傾斜狀態(tài)下,兩個進程的實時響應情況。在這里作進一步測試。

      在四軸飛行器的控制進程中,設置當四軸飛行器控制系統(tǒng)檢測到俯仰角或者橫滾角和初始值的差值大于25°時或者小于-25°時,四軸飛行器4個旋翼會立即停止轉動。那么用手指在攝像頭面前晃動的同時,人為以很快的速度傾斜機身到25°。如圖7所示。

      可以看到,在攝像頭面前晃動手指,可以從電腦客戶端上看到實時晃動手指的視頻,此時人為快速傾斜機身,這時橫滾角與初始值的角度差值已經(jīng)小于-25°,4個旋翼立即停止了轉動。這表明在極端條件下,控制進程和視頻傳輸進程都能夠做到實時響應,達到了預期的設計目標。

      通過以上的測試,證明了將四軸飛行器控制進程和視頻傳輸進程都設置為實時進程,將控制進程優(yōu)先級設置為-99,視頻傳輸進程設置為-98,并且將兩個進程的時間片都設置為5 ms后,無論四軸飛行器處在何種條件下,這兩個進程都可以做到快速的實時響應,從而達到了設計目標。

      結 語

      本文利用Linux操作系統(tǒng)支持的實時進程策略對四軸飛行器的控制進程和視頻傳輸進程進行了優(yōu)先級和時間片的修改,使得這兩個進程都可以達到實時響應。

      編者注:本文為期刊縮略版,全文見本刊網(wǎng)站www.mesnet.com.cn。

      圖7 視頻實時傳輸同時四軸飛行器自動檢測并停止旋轉

      [1]胡劍華.基于ARM-Linux實時嵌入式飛行控制系統(tǒng)設計與實現(xiàn)[D].南京:南京航空航天大學,2010.

      [2]張桂蘭,王飛超.Linux內核完全公平調度器的分析及模擬[J].中國科技信息,2009(4).

      [3]鄒勇,王青,李明樹.Linux 內核的實時支持的研究與實現(xiàn)[J].計算機研究與發(fā)展,2002(4).

      [4]龐慶霈.四旋翼飛行器設計與穩(wěn)定控制研究[D].合肥:中國科學技術大學,2011.

      [5]TI.德州儀器的BeagleBone Black介紹[EB/OL].[2015-05].http://news.cecb2b.com/info/20130718/888742.shtml.

      猜你喜歡
      開發(fā)板資源分配旋翼
      改進型自抗擾四旋翼無人機控制系統(tǒng)設計與實現(xiàn)
      大載重長航時油動多旋翼無人機
      新研究揭示新冠疫情對資源分配的影響 精讀
      英語文摘(2020年10期)2020-11-26 08:12:20
      基于STM32的四旋翼飛行器的設計
      電子制作(2019年9期)2019-05-30 09:41:48
      一種基于價格競爭的D2D通信資源分配算法
      測控技術(2018年7期)2018-12-09 08:57:56
      Microchip最新推出兩款PIC32 Curiosity開發(fā)板
      淺析單片機開發(fā)板的設計與制作
      電子制作(2017年22期)2017-02-02 07:10:14
      四旋翼無人機動態(tài)面控制
      Mouser為您呈上開發(fā)關鍵之STMicroelectronics Nucleo開發(fā)板
      Arduino和Atmel發(fā)布Arduino Zero開發(fā)板
      英吉沙县| 宝兴县| 友谊县| 东至县| 兴国县| 安徽省| 大埔县| 新乡市| 麻城市| 曲阳县| 南陵县| 贵州省| 崇信县| 浙江省| 嵩明县| 宿州市| 永胜县| 凤山县| 辉县市| 突泉县| 丹巴县| 曲水县| 通州区| 玉田县| 潜山县| 张家界市| 瑞丽市| 普兰县| 四会市| 治多县| 盐津县| 正安县| 郯城县| 梅州市| 临朐县| 嘉荫县| 巨野县| 固阳县| 霍林郭勒市| 白城市| 元阳县|