在設計控制器之前,有個重要的問題要解決,就是如何計算期望姿態的誤差?因為大部分控制器都需要你告訴我這個誤差,然後才可以去調整,去減小這個誤差直到沒有誤差。
求誤差可太簡單了,不就是個減法嗎?
看起來很有道理,但是騙騙小孩子可以,騙我和我的讀者朋友們還差一點。
我有幾個問題代表大家問一下,首先姿態本質是旋轉,姿態的誤差其實是旋轉之間的誤差,那必須還是個旋轉,那麼直接相減還能表示旋轉嗎?也就是說相減得到的角度轉換成旋轉矩陣還是個正交矩陣嗎?
而且歐拉角是有隱藏條件的,就是旋轉順序,同樣是三個角 (10,20.30) ,x-y-z,y-x-z順序可是兩個不同的旋轉,如果我不告訴你它的旋轉順序,那其實它就是沒用的三個數,因為它根本就沒法還原成旋轉。但是我就沒見過有對控制器做先後順序處理的,roll,pitch,yaw的控制器都是同時啟動,沒有順序之分。
所以,憑什麼姿態誤差可以用歐拉角相減!!!
我仔細想了一下,估摸著又跟小角度假設有關。
歐拉角的旋轉順序有6種:
x-y-z,y-z-x,z-x-y,x-z-y,z-y-x,y-x-z
我們先看一下我們最最最熟悉的z-y-x順序的歐拉角對應的旋轉矩陣吧
這就是我們最熟悉的機體轉地理坐標系的旋轉矩陣
再看一下z-x-y順序的旋轉矩陣
你會發現每個順序的旋轉矩陣都不一樣,所以帶入同樣的三個角度,得到的矩陣是不一樣的,同樣一個向量左乘一個不同的矩陣,得到的向量肯定是不一樣的。
什麼是小角度假設呢?
就是角度很小時cos很接近1,sinx=x,兩個很小的數相乘為0,即:
一旦我們加上小角度假設後,你會發現所有不同順序的歐拉角對應的旋轉矩陣都可以變成以下的形式 :
就是說,在小角度的假設下,旋轉矩陣變的與旋轉順序無關了,所以控制器先後的問題解決了。
而且,這個矩陣一定是個正交矩陣。
所以如果當角度足夠小,你可以把這個誤差轉換成小角度下的旋轉矩陣,這個矩陣是個正交矩陣,而且與順序無關。
我去,真是不講道理啊,一說不通就給你上小角度假設,也不說多小的角度叫小角度,難道就沒人管這個事了嗎?就沒有其他跟有說服力的方法嗎?有什麼問題可以留言,下期我們再聊。