無人機系列之飛控演算法

2021-07-26 18:19:41 字數 4391 閱讀 7601

一.無人機的分類

按飛行平台構型分類:無人機可分為固定翼無人機,旋翼無人機,無人飛艇,傘翼無人機,撲翼無人機等.

圖1 無人機平台構型

多軸飛行器multirotor是一種具有三個以上旋翼軸的特殊的***。旋翼的總距固定而不像一般***那樣可變。通過改變不同旋翼相對轉速可以改變單軸推進力的大小,從而控制飛行器的執行軌跡.

圖2 多軸飛行器

圖3 各類變模態平台

二.無人機的系統架構

圖4 無人機系統架構

三.飛控系統簡介

導航飛控系統之導航子系統功能:向無人機提供位置,速度,飛行姿態,引導無人

機沿指定航線安全,準時,準確的飛行。

 獲得必要的導航要素:高度,速度,姿態,航向

 給出定位資訊:經度,緯度,相對位移

 引導飛機沿規定計畫飛行

 接收控制站的命令並執行

 配合其它系統完成各種任務

1.飛控系統功能:

導航飛控之飛控子系統功能:完成起飛,空中飛行,執行任務,返航等整個飛行過

程的核習系統,對無人機實現全權控制與管理,是無人機的大腦。

 無人機姿態穩定與控制

 與導航子系統協調完成航跡控制

 起飛與返航控制

 無人機飛行管理

 無人機任務管理與控制

 應急控制

2.飛控系統--感測器:

飛控系統常用的感測器包括:

角速率感測器陀螺儀

圖5 陀螺儀

加速度感測器

圖5 加速計

氣壓計和超聲波

圖5 聲納與氣壓二合一

圖6 gps示意圖

光流

從二維影象序列中檢測物體運動、提取運動引數並且分析物體運動的相關規律

 光流是空間運動物體在觀測成像平面上的畫素運動的「瞬時速度」

 用於飛行器的動態定位和輔助慣性導航

 lucas kanade演算法

這個演算法是最常見,最流行的。它計算兩幀在時間t到t + δt之間每個畫素點位置的移動

圖7 光流演算法示意圖

 地磁感測器

圖8 磁力計

四.飛控系統的關鍵演算法

1.關鍵演算法流程框圖

圖9 關鍵演算法流程框圖

2.姿態解算

(1)init函式初始化,建立3x3矩陣r。

(2)磁力計修正,得到誤差corr:先計算得到誤差角度mag_er,再用_wrap_pi函式做約束,再計算corr值,相當於機體座標系繞地理座標系n軸(z軸)轉動arctan(mag_earth(1), mag_earth(0))度。

(3)加速度計修正更新誤差corr:將陀螺儀計算得到的矩陣第三行(即重力加速度部分)轉換到b系,再將加速度測得重力加速度(_accel - 機體加速度)的資料歸一化(本身屬於b系),將這兩個的值進行叉乘即測得誤差。具體過程:歸一化的n系重力加速度通過旋轉矩陣r左乘旋轉到b系,即k為歸一化的旋轉矩陣r(b-e)的第三行,總的受到合力的方向(_accel)減去機體加速度方向(_pos_acc)得到g的方向,即總加速度(加速度獲取)減去機體運動加速度(第五部分)獲取重力加速度,然後姿態矩陣的不是行就是列來與純重力加速度來做叉積,算出誤差。因為運動加速度是有害的干擾,必須減掉。演算法的理論基礎是[0,0,1]與姿態矩陣相乘。該差值獲取的重力加速度的方向是導航座標系下的z軸,加上運動加速度之後,總加速度的方向就不是與導航座標系的天或地平行了,所以要消除這個誤差,即「_accel-_pos_acc」。然後叉乘z軸向量得到誤差,進行校準 。

(4)對誤差corr進行pi控制器中的i(積分),得到_gyro_bias,再對_gyro_bias做約束處理。

(5)使用修正的資料更新四元數,並把_rates和_gyro_bias置零便於下次呼叫時使用。

圖10 姿態解算

3.姿態控制

3.1.姿態角度控制

計算誤差值e_r:

(1)獲取目標姿態target,並構建目標姿態旋轉矩陣。

(2)通過控制四元數獲取當前狀態的旋轉矩陣dcm。

(3)取兩個矩陣中的z軸向量,即yaw-axis。

(4)計算roll,pitch誤差,得到誤差值e_r:通過r_z%r_sp_z叉乘當前姿態的z軸和目標姿態的z軸的誤差大小(即需要旋轉的角度)並旋轉到b系(即先對齊z軸)。

(5)計算yaw的權重.

(6)構造e_r_cp反對稱矩陣,通過羅德里格公式旋轉得到roll,pitch旋轉後的矩陣r_rp。

(7)計算yaw的誤差,進一步更新誤差值e_r:roll_pitch旋轉後的矩陣的x軸和目標姿態的x軸的誤差,乘上yaw的權重。

計算e_r_d:

(1)目標姿態旋轉矩陣獲取四元數。

(2)對四元數的虛部取出賦值給e_r_d,再對其進行歸一化處理。

(3)對四元數的實部取出。

(4)計算e_r_d:通過虛部與實部的一系列計算得來。

計算direct_w

進一步更新誤差值e_r:通過e_r *  (1 - direct_w) + e_r_d * direct_w。

得到_rates_sp角速度變數:對e_r進行p控制,再進行約束

3.2.姿態角速度控制

獲取當前角速度值rates:通過_ctrl_state資料結構(當前姿態資訊)把需要的有效資料賦值給rates。

獲取目前角速度值_rates_sp。

計算得到角速度差rates_err。

對角速度差rates_err進行pd控制,還需要加乙個前饋。

發布控制量_att_control。

圖11 姿態控制

無人機飛控

無人機是無人駕駛飛機的簡稱 unmanned aerial vehicle 是利用無線電遙控裝置和自備的程式控制裝置的不載人飛機,包括無人 固定翼機 多旋翼飛行器 無人飛艇 無人傘翼機。廣義地看也包括臨近空間飛行器 20 100 公里空域 如平流層飛艇 高空氣球 太陽能無人機等。從某種角度來看,無人...

中國國內無人機開源飛控系統簡介

無人機多旋翼四旋翼四軸飛控,各種名詞真是讓人熱血沸騰,從大一開始接觸以來,恨不得全部將知識掌控囊中,但是紙上得來終覺淺,便只能斷斷續續地進行學習。其中對於中國國內的無人機開源飛控系統也基本有個了解,各家的基本全部買了個遍,正好有機會就記錄一下,給眾人分享一下。ps,大家知道,無人機裡面大疆賣得最好,...

飛控 如何學習無人機 入門篇

我把無人機分成3個大模組 目的 組裝無人機,享受駕駛無人機的樂趣。目的 了解無人機的本質 目的 實現乙個具體功能,比如 室內懸停,避障,全自動a點飛到b點等等 通過 知識 使用 工具 完成自己的目標,程式語言 作業系統 等等在飛控開發裡能夠使用就行 開發需要解決具體的問題,前提是你知道一定的無人機知...