• 
    

    
    

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

      ?

      基于Unity物理引擎的多旋翼無人機仿真模型①

      2022-09-20 04:12:16石百玉
      計算機系統(tǒng)應(yīng)用 2022年9期
      關(guān)鍵詞:腳本螺旋槳旋翼

      石百玉, 高 岑

      1(中國科學(xué)院大學(xué), 北京 100049)

      2(中國科學(xué)院 沈陽計算技術(shù)研究所, 沈陽 110168)

      采用虛擬仿真技術(shù)構(gòu)建現(xiàn)實場景仿真系統(tǒng)已經(jīng)是各行各業(yè)應(yīng)用場景中比較成熟的一種技術(shù)應(yīng)用模式. 虛擬仿真技術(shù)可以通過三維建模搭建可重復(fù)過程的特性很好的解決現(xiàn)實物理世界中不易復(fù)現(xiàn)的各類場景, 從而進行相關(guān)應(yīng)用問題的分析. 應(yīng)用虛擬仿真技術(shù)構(gòu)建的仿真系統(tǒng)能夠在降低實物成本和保證人員安全的前提下,在逼真的虛擬環(huán)境中為用戶提供高真實感的體驗, 并全程實現(xiàn)量化數(shù)據(jù)的跟蹤, 進而有效提高用戶對實際場景的應(yīng)變決策能力. 隨著近幾年各行業(yè)中信息化建設(shè)水平的不斷提高, 在軟硬件配套設(shè)施及相關(guān)工程管理技術(shù)發(fā)展創(chuàng)新的推動下, 虛擬仿真信息化過程也不斷演進變化, 從單純的三維模型建模、三維模型展示、三維場景過程展示向?qū)嵕胺抡婕皵?shù)據(jù)實時交互反饋評估等方向發(fā)展. 在此基礎(chǔ)上, 與各行業(yè)相匹配的虛擬仿真系統(tǒng)應(yīng)運而生, 作為評估過程、演練演習(xí)的重要手段.

      Unity 是行業(yè)領(lǐng)先的跨平臺實時3D開發(fā)引擎, 廣泛的應(yīng)用在各種專業(yè)技術(shù)領(lǐng)域, 可用于創(chuàng)作、運行實時互動的2D和3D內(nèi)容. 基于 Unity3D開發(fā)的虛擬仿真系統(tǒng)為用戶提供了豐富的學(xué)習(xí)條件與逼真的虛擬環(huán)境. Wang 等人[1]提出Unity在虛擬仿真和虛擬現(xiàn)實等方面具有廣泛應(yīng)用的價值.

      目前, 隨著相關(guān)領(lǐng)域的迅速發(fā)展, 多旋翼無人機廣泛的應(yīng)用在警備、城市管理、農(nóng)業(yè)、地質(zhì)、氣象、電力、搶險救災(zāi)、視頻拍攝等行業(yè). 多旋翼無人機集成了飛行控制、慣性導(dǎo)航、光電偵察等多種設(shè)備于一身的復(fù)雜裝備, 其價格昂貴、壽命有限, 不便用戶直接使用無人機進行訓(xùn)練來提高操作技術(shù)[2]. 在虛擬仿真技術(shù)發(fā)展背景下, 使用虛擬仿真無人機提高用戶操作能力,能夠減少訓(xùn)練成本, 擴展無人機應(yīng)用領(lǐng)域, 對探索更加科學(xué)有效的訓(xùn)練方法具有重大意義.

      對于虛擬仿真來說, 根據(jù)仿真應(yīng)用的需求, 對應(yīng)用領(lǐng)域的相關(guān)屬性進行科學(xué)的抽象和相應(yīng)的描述, 是從現(xiàn)實世界邁進仿真世界的重要前提. 模型是仿真活動的基礎(chǔ). 仿真模型不僅僅是使用數(shù)學(xué)公式對系統(tǒng)模型的運行規(guī)律進行建模, 而且還對虛擬環(huán)境和虛擬對象的視覺外觀、物理特性進行建模.

      馬忠麗等人[3]、王小青等人[4]、彭玉元等人[5]的相關(guān)研究, 重點在于仿真平臺系統(tǒng)的設(shè)計應(yīng)用, 將重點放在系統(tǒng)的設(shè)計上, 取得了較好的成果, 但并沒有對無人機的仿真模型進行深入的研究.

      1 多旋翼無人機運動分析

      研究無人機仿真模型, 首先需要分析多旋翼無人機的基本組成和飛行原理.

      多旋翼無人機通常由機架、動力系統(tǒng)、控制系統(tǒng)組成. 多旋翼無人機機身常見布局如圖1所示, 包括三旋翼、四旋翼、六旋翼和八旋翼等.

      圖1 多旋翼無人機旋翼常見布局

      本文以QuadX型四旋翼無人機為例, 分析多旋翼無人機飛行原理. 無人機采用4個旋翼作為直接動力源, 通過改變機架上不同位置的電機轉(zhuǎn)速來調(diào)整飛行器自身的姿態(tài)實現(xiàn)空間內(nèi)6自由度運動, 即垂直、俯仰、滾轉(zhuǎn)、偏航運動. 將機頭前進方向右側(cè)的電機命名為M1, 以機身逆時針方向?qū)⑵渑c電機命名為M2,M3, M4. 通常M1, M3逆時針旋轉(zhuǎn)、M2, M4順時針旋轉(zhuǎn)來使相鄰電機的以不同轉(zhuǎn)向來抵消扭矩.

      將4個電機的轉(zhuǎn)速同時增大或減小即可實現(xiàn)垂直運動; 將M1、M3的轉(zhuǎn)速增加或者將M2、M4的轉(zhuǎn)速減小, 實現(xiàn)向右偏航. 反之, 實現(xiàn)向左偏航; 將M1、M2的轉(zhuǎn)速減小或者將M3、M4轉(zhuǎn)速增加時, 四旋翼會產(chǎn)生前傾的扭矩, 實現(xiàn)俯仰運動, 螺旋槳拉力的垂直分力抵消重力, 在前進方向的分力使四旋翼向前飛行,如圖2所示. 同理可知無人機左右飛行原理. 其他機身布局飛行原理相似.

      圖2 無人機前進運動

      2 四旋翼無人機建模

      本節(jié)就多旋翼無人機進行控制模型進行建模, 主要包含動力系統(tǒng)建模和控制系統(tǒng)建模. 其中信號傳遞如圖3所示.

      圖3 模型信號傳遞

      2.1 無人機動力系統(tǒng)建模

      無人機動力系統(tǒng)建模分為3部分: 螺旋槳建模、電機建模、電池建模.

      多旋翼無人機常采用定槳距螺旋槳, 根據(jù)Dai等人[6]的螺旋槳建模方法, 螺旋槳拉力T (單位: N)和轉(zhuǎn)矩M (單位: N·m)表示如下:

      其中, CT為拉力系數(shù), CM為轉(zhuǎn)矩系數(shù), ω為螺旋槳轉(zhuǎn)速, DP為螺旋槳直徑, ρ為空氣密度. 文獻[7]給出CT,CM的計算公式為:

      其中, HP為螺旋槳槳距, DP為螺旋槳直徑, BP為槳葉數(shù), 同時給出了參數(shù)的平均取值: A=5, ε=0.85, λ=0.75,ζ=0.5, e=0.83, Cfd=0.015, α0=0, K0=6.11.

      目前, 多旋翼無人機使用無刷直流電機, 對于無刷直流電機轉(zhuǎn)速N有:

      其中, KV為電機KV值, 定義為電機輸入電壓每增加1伏特電機空轉(zhuǎn)轉(zhuǎn)速增加的轉(zhuǎn)速, 單位為RPM/V; U為電機輸入電壓. 在不考慮電機機械損耗和電機負(fù)載轉(zhuǎn)矩情況下, 視電機轉(zhuǎn)速N為螺旋槳轉(zhuǎn)速.

      對于電池模型, 主要目的是利用電池電壓計算電機轉(zhuǎn)速, 進而根據(jù)螺旋槳模型求得某電壓下螺旋槳產(chǎn)生的拉力和轉(zhuǎn)矩. 因此簡化放電過程, 假設(shè)放電過程中電壓保持不變, 忽略電池、電調(diào)、電機內(nèi)阻的損耗, 只關(guān)注電池總電壓.

      考慮到模型的擴展性和易維護性, 根據(jù)模塊化編程思想, 創(chuàng)建Propeller類實現(xiàn)螺旋槳模型的拉力、扭矩算法, 便于模型升級與擴展. 為了減少機器計算量, 在構(gòu)造方法中將固定已知的參數(shù)提前計算存儲. 電機類Motor、電池類Battery同理. 其中Motor類以引用的形式調(diào)用Propeller類、Battery類的方法, 以屬性的形式獲取或賦值當(dāng)前電機的電壓參數(shù), 實現(xiàn)在Unity腳本生命周期中, 每固定0.02 s調(diào)用一次的FixedUpdate()方法, 部分代碼如下:

      var rotateSpeed = getRotateSpeed(EngineVol);var Pull = _Propeller.getPull(rotateSpeed);var counterTorque =_Propeller.getTorque(rotateSpeed) * Mathf.Sign((float)Direction);motorRigidbody.AddForce(transform.up * Pull); bodyRigidbody.AddTorque(bodyRigidbody.transform.up * counterTorque);

      其中motorRigidbody、bodyRigidbody分別是電機三維模型、無人機三維模型的Rigidbody組件; Direction為枚舉類型當(dāng)前電機轉(zhuǎn)向, 順時針賦值1, 逆時針賦值-1, 調(diào)用Mathf.Sign()方法獲得符號, rotateSpeed的值由式(6)求得.

      Rigidbody.AddForce()、Rigidbody.AddTorque()方法是Unity腳本API, 作用分別是向 Rigidbody 添加力、相對扭矩.

      至此, 無人機動力系統(tǒng)建模完畢.

      2.2 無人機控制系統(tǒng)建模

      控制系統(tǒng)要解決機體在哪、姿態(tài)如何、如何飛行的問題, 其中姿態(tài)估計是控制模型的決策的基礎(chǔ), 姿態(tài)估計主要目的是估計姿態(tài)角, 測量加速度、角速度和位置等信息, 解決機體位置、機體姿態(tài)的問題.

      多旋翼無人機通常使用IMU傳感器單元進行無人機的姿態(tài)估計, 使用GPS傳感器確定無人機的位置.慣性測量單元(inertial measurement unit, IMU)包括加速度計和陀螺儀, 用來檢測和測量物體加速度與旋轉(zhuǎn)運動的傳感器.

      在Unity, 可直接調(diào)用Rigidbody.angularVelocity腳本API即可得物體的角速度, Transform.position可獲得物體位置. 創(chuàng)建Sensors類封裝該API, 但Unity的腳本API中并沒有可直接獲得加速度的方法, 因此根據(jù)加速度表達(dá)式(7)間接求出物體加速度, 角加速度同理.

      在Unity腳本生命周期中, 每固定0.02 s調(diào)用一次FixedUpdate()方法, 調(diào)用間隔時間較短, 視為Δt. 線加速度計算代碼如下:

      previousVelocity = currentVelocity;currentVelocity = rgb.velocity;acceleration = new Vector3((currentVelocity-previousVelocity).x/FixedUpdateTime,(currentVelocity-previousVelocity).y/FixedUpdateTime,(currentVelocity-previousVelocity).z/ FixedUpdateTime);

      將上述代碼寫入FixedUpdate()方法中, 即可計算出物體每一固定幀的運動線加速度, 其中rgb為物體剛體Rigidbody組件, previousVelocity、currentVelocity為Vector3類型變量, FixedUpdateTime為float型變量,值為0.02f即FixedUpdate()的調(diào)用周期.

      解決完機體在哪、機體姿態(tài)的問題后, 接下來需要解決如何飛行的問題, 這需要Controller類能夠從Sensors類中獲取機體姿態(tài)信息并根據(jù)輸入的控制指令計算出達(dá)成目標(biāo)姿態(tài)所需的拉力和力矩, 然后對無人機電機進行動力分配, 實現(xiàn)無人機的運動控制.

      為了使輸出能夠符合期望的輸入指令, 通常情況下選擇PID控制器. PID控制是應(yīng)用最廣泛的一種工業(yè)控制算法, 距今已有近百年的歷史. 由于四旋翼無人機為數(shù)字控制系統(tǒng), 選用離散式PID. 離散式PID控制器分為位置式和增量式兩種算法形式. 其中增量式計算結(jié)果只與最近3次的偏差有關(guān), 解決位置式積分運算的誤差積分積累問題, 因此該控制系統(tǒng)模型選用增量離式PID控制算法. 離散式PID控制其表達(dá)式如下:

      由式(8)得:

      即:

      其中, KP、KI、KD分別為比例系數(shù)、積分系數(shù)和微分系數(shù), u(k)是第k次采樣時刻的計算結(jié)果, e(k)是第k次采樣時刻控制器的偏差. 實現(xiàn)代碼實現(xiàn)如下:

      float err = pid.exp-pid.act;float increment =pid.kp * (err-pid.errK1) + pid.ki * err +pid.kd * (err-2.0f * pid.errK1+pid.errK2);pid.output+=increment;pid.errK2=pid.errK1;pid.errK1=err;

      代碼中, 以結(jié)構(gòu)體形式定義PID對象, 結(jié)構(gòu)體內(nèi)存儲PID控制參數(shù)、期望值、目標(biāo)值、兩次誤差值和輸出值, 以引用形式傳入PID算法中, 在算法中讀寫相關(guān)參數(shù), 即代碼中結(jié)構(gòu)體變量pid.

      當(dāng)輸出量與被控制系統(tǒng)呈線性關(guān)系時, 單極PID能獲得較好的效果. 而多旋翼無人機通??梢院喕癁橐粋€二階阻尼系統(tǒng)[8], 是非線性系統(tǒng). 螺旋槳轉(zhuǎn)速和升力是平方倍關(guān)系, 單極PID在多旋翼無人機上很難取得好效果. 而串級PID控制系統(tǒng)提高了穩(wěn)定性、可靠性和有效性, 克服了傳統(tǒng)PID 精度不高的問題[9].

      串級PID控制就是兩級PID控制串聯(lián)在一起, 分為內(nèi)環(huán)PID控制和外環(huán)PID控制, 外環(huán)的輸出作為內(nèi)環(huán)的輸入, 如圖4所示. 對無人機的3個姿態(tài)角做PID控制, 外環(huán)輸入反饋的是角度數(shù)據(jù), 內(nèi)環(huán)輸入反饋的是角速度數(shù)據(jù). 這樣即使外環(huán)數(shù)據(jù)劇烈變化, 而內(nèi)環(huán)數(shù)據(jù)不會發(fā)生突變.

      圖4 串級PID控制系統(tǒng)示意圖

      確定了控制算法后, 分析控制輸入值、輸出值和反饋值的關(guān)系. 在姿態(tài)控制中, 需要控制俯仰、橫滾、偏航3個姿態(tài)角, 即分別需要3個串級PID來控制無人機姿態(tài). 這3個串級PID的外環(huán)的輸入值都是其期望的姿態(tài)角度, 輸出值是期望的角速度; 內(nèi)環(huán)的輸入是外環(huán)輸出的期望角速度, 輸出值是期望的角加速度. 最終作用于物體后, 外環(huán)的反饋值是物體當(dāng)前的實際姿態(tài)角, 內(nèi)環(huán)反饋的是物體當(dāng)前的實際角速度. 在模型中,期望值由輸入控制腳本提供, 測量的實際值由前文提及的Sensors類提供. 同時還要對無人機的飛行高度進行串級PID控制, 以此實現(xiàn)無人機的懸停運動, 高度控制PID外環(huán)輸入是無人機實際高度, 內(nèi)環(huán)輸入是無人機垂直方向上的速度.

      在實際應(yīng)用時發(fā)現(xiàn), 俯仰、橫滾運動中, 俯仰、橫滾角取值范圍在-90°~+90°控制幅度較小, 測量值即可作為輸入的實際, 而偏航角取值范圍在-180°~180°,當(dāng)測量值超過180°時測量值符號會相反, 此時會造成輸入誤差, 需要特殊處理. 這里以向量方法求偏航角,構(gòu)造單位向量:

      由向量夾角公式:

      求得向量間夾角, 再由向量叉乘確定夾角方向, 其結(jié)果作為偏航角控制的測量值.

      對3個姿態(tài)角分別采用串級PID控制, 使多旋翼無人機控制系統(tǒng)的非線性多變量輸入多變量輸出控制問題簡化為兩變量輸入單變量輸出問題.

      根據(jù)QuadX形布局的多旋翼無人機的運動原理知,電機M1轉(zhuǎn)速對俯仰運動有負(fù)向作用、對橫滾有正向作用, 對偏航有正向作用; 電機M2轉(zhuǎn)速對俯仰運動有負(fù)向作用、對橫滾有負(fù)向作用, 對偏航有負(fù)向作用; 電機M3轉(zhuǎn)速對俯仰運動有正向作用、對橫滾有負(fù)向作用,對偏航有正向作用; 電機M4轉(zhuǎn)速對俯仰運動有正向作用、對橫滾有正向作用, 對偏航有負(fù)向作用. 于是有:

      其中, P1、P2、P3、P4分別代表驅(qū)動電機M1、 M2、M3、M4所需的PWM值, Ph為維持無人機飛行高度PWM值, Ppit、Prol、Pyaw分別為俯仰角、橫滾角和偏航角的所需PWM值, 最后結(jié)果值限制在電機驅(qū)動器能接受的范圍內(nèi). 將求得的輸入電壓分別驅(qū)動4個電機, 電機輸入電壓的改變引起電機轉(zhuǎn)速的改變, 進而改變整個系統(tǒng)的受力情況, 實現(xiàn)對無人機的姿態(tài)控制.

      在該模型中, 不考慮電機的飽和區(qū), PWM值為電機輸入電壓占電池總電壓的比值. 另外, 為了保證基本面姿態(tài)控制與抗風(fēng)性需求, 一般多旋翼無人機在飛行時控留有制裕度, 油門指令應(yīng)該小于0.9[7].

      至此無人機控制系統(tǒng)建模完畢.

      3 四翼無人機模型實現(xiàn)

      3.1 Unity腳本實現(xiàn)

      確定了多旋翼無人機的算法模型后, 著手對模型算法的實現(xiàn), 編寫Unity腳本來實現(xiàn)對無人機對象的邏輯控制. 綜合考慮各個腳本之間的關(guān)系, 設(shè)計UML時序圖如圖5.

      圖5 UML時序圖

      UserInput腳本用于處理用戶輸入, 在多旋翼無人機中的遙控中, 需要控制3個姿態(tài)角和油門, 一共4個方向軸上的控制, 因此需要在Unity Input Manager中設(shè)置4個軸向控制來相應(yīng)鍵盤輸入. 由于無人機的姿態(tài)控制可以維持無人機的姿態(tài), 在此設(shè)計油門輸入實際是控制無人機的飛行高度. 依據(jù)航模遙控“美國手”手柄模式, 設(shè)置鍵盤w、s控制油門; 鍵盤a、d控制偏航; 方向鍵上下控制俯仰; 方向鍵左右控制橫滾.

      UserInput腳本的輸入即為無人機的期望高度和期望姿態(tài), Controller腳本獲得無人機期望姿態(tài)后, 調(diào)用PID算法計算期望輸出, 并將動力分配給Motor腳本,而后將目標(biāo)轉(zhuǎn)速送入Propeller腳本中計算單個電機所產(chǎn)生的拉力和轉(zhuǎn)矩, 直接作用在無人機對象的剛體上產(chǎn)生力的作用, Sensors腳本實時監(jiān)控?zé)o人機對象的狀態(tài), 反饋給Controller腳本實現(xiàn)閉環(huán)控制. Controller腳本流程如圖6.

      圖6 Controller腳本流程圖

      3.2 Unity無人機對象組件設(shè)置

      在Unity中使用包圍盒碰撞檢測, 在游戲?qū)ο笊蠏燧dCollider組件實現(xiàn), 同時可以在腳本中實現(xiàn)碰撞后的受力效果, 無人機對象添加Collider效果如圖7.

      圖7 無人機對象

      在多旋翼無人機的運動中, 僅有機體位置和螺旋槳旋轉(zhuǎn)變化, 設(shè)置螺旋槳旋轉(zhuǎn)動畫會讓仿真更加逼真,給予用戶沉浸體驗. 創(chuàng)建Animator腳本, 該腳本獲取Motor腳本的電機轉(zhuǎn)速, 將其應(yīng)用到螺旋槳上, 使螺旋槳產(chǎn)生旋轉(zhuǎn)效果. 然而在現(xiàn)實中, 螺旋槳旋轉(zhuǎn)由于視覺暫留而產(chǎn)生模糊效果, 轉(zhuǎn)速越快模糊效果越明顯, 而在Unity的旋轉(zhuǎn)是在每渲染幀刷新對象狀態(tài), 使對象“瞬移”看起來不夠真實, 對此可以使用模糊紋理貼圖的代替三模模型旋轉(zhuǎn), 當(dāng)螺旋槳低速旋轉(zhuǎn)時使用真實三維模型旋轉(zhuǎn), 當(dāng)轉(zhuǎn)速逐漸提高時, 隱藏三維模型, 使用平面網(wǎng)格模型, 其材質(zhì)使用提前繪制出模糊紋理的透明圖片(圖8), 實際旋轉(zhuǎn)效果如圖9, 其中M1, M2沒有使用模糊紋理替換, 看出有很明顯差別.

      圖8 模糊紋理

      圖9 模糊紋理替換旋轉(zhuǎn)效果

      為了實現(xiàn)Unity中無人機的控制邏輯, 需要對無人機對象掛載所需的腳本及相關(guān)組件, 掛載組件方式如圖10.

      圖10 無人機GameObject組件掛載關(guān)系

      Rigidbody剛體組件是實現(xiàn)游戲?qū)ο笪锢硖匦员夭豢缮俚慕M件, 剛體為游戲?qū)ο筚x予物理屬性, 使游戲?qū)ο笤赨nity物理引擎的驅(qū)動下產(chǎn)生力的作用, 實現(xiàn)真實世界中的運動效果. 本文將無人機受力模型直接應(yīng)用在電機對應(yīng)位置, 來仿真現(xiàn)實物體的受力狀態(tài), 從而免去了對模型的剛體數(shù)學(xué)建模.

      在Drone對象中, Body是無人機機體三維模型對象, Camera是云臺相機三維模型對象, Motors是所有電機、螺旋槳三維模型對象的父物體.

      Motors對象中, Motor_1等是無人機的電機對象,每個電機對象中的Fixed Joint組件將電機剛體和父物體剛體固定在一起; 其中Motor腳本用于對父物體產(chǎn)生實際的力和扭矩.

      在Motor腳本中, 計算螺旋槳產(chǎn)生的拉力扭矩并直接作用電機的剛體上, 電機模型剛體帶動整個無人機剛體運動. 所有的電機模型所產(chǎn)生的總拉力、總扭矩的作用效果由Unity物理引擎實現(xiàn). 值得注意的是,在Controller腳本的初始化中, 根據(jù)4個電機的位置將無人機的重心設(shè)置在對角電機連線的交點處, 否則無人機在飛行過程中可能產(chǎn)生不穩(wěn)定的效果.

      另外Prop_1等是螺旋槳三維模型, 以Motor_1等對象作為父物體, 這樣可以使螺旋槳跟隨電機對象; 而Prop_Blur1等為上述模糊紋理螺旋槳對象.

      4 運行效果

      實驗分別以無人機懸停、俯仰、滾轉(zhuǎn)、偏航運動效果作為實驗結(jié)果, 實驗中無人機數(shù)據(jù)參數(shù)如表1.

      表1 無人機數(shù)據(jù)參數(shù)

      4.1 PID參數(shù)整定

      無人機的姿態(tài)控制采用串級PID控制算法, 內(nèi)環(huán)的輸出是最終結(jié)果, 所以先調(diào)內(nèi)環(huán)參數(shù), 再調(diào)外環(huán)參數(shù).經(jīng)過實驗測試, 確定該無人機姿態(tài)控制PID參數(shù)如表2.

      表2 無人機PID參數(shù)

      在PID參數(shù)整定過程中, 使用Unity調(diào)用Debug.Log()方法將無人機姿態(tài)數(shù)據(jù)實時打印出來, 將打印結(jié)果使用 Matlab 描繪控制曲線如圖11.

      圖11 PID姿態(tài)控制曲線

      由圖11可見, 在調(diào)整偏航角時會影響到俯仰和滾轉(zhuǎn)運動, 產(chǎn)生較大波動. 為解決此問題, 使機體在一定誤差范圍內(nèi)調(diào)整完俯仰、滾轉(zhuǎn)運動后再調(diào)節(jié)偏航運動,實驗結(jié)果如圖12所示, 可見限制偏航運動在一定程度上增加了穩(wěn)定性, 同時限制偏航運動的俯仰滾誤差與偏航響應(yīng)時間呈現(xiàn)負(fù)向關(guān), 限制誤差值越小, 偏航響應(yīng)越慢.

      圖12 限制偏航運動的PID姿態(tài)控制曲線

      運行場景, 使用鍵盤控制無人機飛行, 進行姿態(tài)控制, 無人機能夠?qū)崿F(xiàn)俯仰控制前進后退、 滾轉(zhuǎn)控制左移右移、偏航實現(xiàn)左轉(zhuǎn)右轉(zhuǎn), 如圖13所示.

      圖13 無人機模型實際運行效果

      5 結(jié)論與展望

      本文基于Unity物理引擎, 對四旋翼無人機這種典型非線性、多變量、欠驅(qū)動系統(tǒng)進行建模, 將無人機受力直接應(yīng)用在電機對應(yīng)位置, 更貼近現(xiàn)實物體受力狀態(tài), 免去了對模型的剛體數(shù)學(xué)建模, 使建?;睘楹?在模型的姿態(tài)控制采用串級PID算法對無人機姿態(tài)進行控制, 飛行實驗結(jié)果證明控制該模型的穩(wěn)定性、有效性, 滿足無人機仿真要求. 該模型既滿足了仿真模擬的真實性又簡化了建模過程, 為無人機仿真模擬提供了一條新思路. 不過本文沒有考慮電機、電調(diào)、電池等物理特性、螺旋槳的氣動阻力等, 有待進一步研究.

      猜你喜歡
      腳本螺旋槳旋翼
      酒駕
      改進型自抗擾四旋翼無人機控制系統(tǒng)設(shè)計與實現(xiàn)
      大載重長航時油動多旋翼無人機
      安奇奇與小cool 龍(第二回)
      基于CFD的螺旋槳拉力確定方法
      基于STM32的四旋翼飛行器的設(shè)計
      電子制作(2019年9期)2019-05-30 09:41:48
      數(shù)據(jù)庫系統(tǒng)shell腳本應(yīng)用
      電子測試(2018年14期)2018-09-26 06:04:24
      快樂假期
      四旋翼無人機動態(tài)面控制
      3800DWT加油船螺旋槳諧鳴分析及消除方法
      廣東造船(2015年6期)2015-02-27 10:52:46
      清徐县| 广灵县| 开封市| 禄丰县| 章丘市| 高邑县| 平舆县| 台湾省| 慈利县| 伊通| 鹿泉市| 鲁山县| 和静县| 五家渠市| 呼和浩特市| 华坪县| 普兰县| 大关县| 勐海县| 盐边县| 电白县| 芦山县| 虞城县| 沅陵县| 左贡县| 五华县| 罗定市| 西华县| 衡阳市| 黄梅县| 濮阳市| 永新县| 和林格尔县| 色达县| 上栗县| 枞阳县| 神木县| 新沂市| 奉节县| 育儿| 定边县|