新手朋友們最頭痛的問題之一就是姿態,翻開書本全是非常複雜的數學過程,完全不理解,今天我們聊點輕鬆的,可能會幫助你對姿態有一些新的認識。

0.為什麼需要姿態

我們先忘掉固有的姿態概念,先把在空間中擺放飛行器的狀態叫做「姿勢」。

我們高中以前學習物理知識,通常是把物體當做質點來進行分析的,所以只需要描述物體的加速度,速度,位置就夠了,但是實際上的情況更加複雜,只有位置不夠,想像一下,如果你讓你的朋友幫你停車,你只說一個位置,他可能會停的千奇百怪,車頭朝前,車頭朝後,甚至是斜著給你停。飛機就更加複雜,在天上飛,在同一個位置可能會出現的無數種「姿勢」。

實際上控制器就相當於你的朋友,你必須描述清楚你需要什麼樣的「姿勢」,它才能幫你完成控制,實現這個「姿勢」,

如果是車,這種「姿勢」比較好描述,比如你和你的朋友都拿上指南針,然後告訴你的朋友把車頭朝著北偏東多少度,這樣他就可以完美的完成你的任務。

所以我們也需要找到一個好的方法描述這個空間中的「姿勢」。

1.如何描述「姿勢」

我們完全可以像停車一樣,自己找一種描述方法,來解決這個問題,但是自己找的方法可能沒有你現象中的那麼好用。

我們先來看看前輩們是如何解決這個問題的。

現在我們常說的姿態其實是用剛體旋轉的形式描述在空間中的「姿勢」。

首先建立一個導航坐標系(地理坐標系){E}(北東天)然後在飛機上建立一個機體坐標系{B}(前右上),將兩個坐標系原點重合。

假設初始狀態是我們的機體坐標系與導航坐標系重合的(機頭朝北),當前的機體坐標系與導航坐標系是不重合的,那麼我們所說的姿態,就是飛機從初始狀態旋轉到當前狀態的過程。

所以姿態的本質是個旋轉過程。

為什麼通過旋轉這種方式可以解決我們的姿勢問題呢?因為只要你清晰的描述了這個旋轉過程,那麼不論是誰來操作這個旋轉,都能將飛機從初始狀態,旋轉到當前狀態。

2.姿態是個動詞

不論你用什麼數學工具來描述姿態(歐拉角,四元數,旋轉矩陣,軸角),它其實都是在描述一個旋轉過程,所以姿態其實是個動詞。

舉個栗子,當前飛行器姿態為b1,

用我們新手最喜歡的歐拉角表示可以表示為(a,b,c)將其轉換成一個旋轉矩陣

這個旋轉矩陣表示的就是當前姿態b1,因為他是歐拉角變換過來的。

同時他是個旋轉矩陣,如果一個{E}系下的向量左乘該旋轉矩陣,就可以得到該向量在b1機體坐標系下的表示。

想想看我們經常說的E系下的重力轉換到機體坐標系不就用的這個表達式嗎?

發現姿態的動詞屬性了嗎?而且聰明的你,應該還發現了不同旋轉的描述有不同的優勢。

歐拉角非常適合觀察,給我們很容易想到它大概的姿態,但是卻很難實現這個動作,給人的感覺就是名詞屬性強,動詞屬性弱。

旋轉矩陣正好相反,看見一個旋轉矩陣,完全不知道這代表什麼樣的姿態,但是旋轉矩陣是可以直接參與運算的,使得坐標變換非常容易。(動詞屬性強,名詞屬性弱)

3.總結

一旦你能理解姿態的本質是旋轉,你再去深入學習會有不一樣的感受。

1.我們的問題核心是如何描述飛機在空間中的「姿勢」,可以自己設計一套方法,但是我們通常使用旋轉的方式來描述「姿勢」這個旋轉過程我們稱作「姿態」。2.姿態這個旋轉過程,是從初始狀態轉換到當前姿態的過程。

3.數學界的前輩們早就研究出了很多工具用來描述旋轉包括,四元數、歐拉角、旋轉矩陣、軸角等。

4.歐拉角最適合觀察,而其他形式可以直接參與運算,直接參與運算的工具使我們的坐標轉換非常方便。5.雖然歐拉角是三個數字,但是它描述的是旋轉,有很多隱藏條件,比如旋轉順序等等,所以歐拉角直接相減沒有意義。

還記得我們之前問過一個問題嗎?為什麼我們姿態更新的一定要求出歐拉角而不是角速度積分得到的三個獨立角度嗎?因為目前我們的飛控代碼都是建立在這套旋轉體系之上的,如果你要使用其他方式描述「姿勢」,你就得重新設計姿勢的求解過程,以計算姿勢誤差的方法。

歡迎加我的個人微信交流。

關注微信公眾號【zinghd的思考】,分享無人機乾貨。

推薦閱讀:

相關文章