MR.城堡最近一直在趕書稿,五月份和機(jī)械工業(yè)出版社簽合同的時(shí)候還感覺截稿日期還遙不可及,眨眼之間是大半已過,人生短暫,早晨發(fā)芽生長,晚上割下枯干,誠如是也。
還好書稿已完成70%左右,但專欄文章很多內(nèi)容都寫到書稿里去了,因此好久沒能夠更新,未來會(huì)根據(jù)大家的需求在專欄中放出一些內(nèi)容,如果大家有自己希望了解的無人機(jī)內(nèi)容,卻還沒有在專欄文章或Live中出現(xiàn),也可以私信MR.城堡,我會(huì)在Live或未來的書稿中認(rèn)真考慮各位朋友的建議并有針對(duì)性的進(jìn)行準(zhǔn)備。
熟悉無人機(jī)的朋友一定常常聽到姿態(tài),這兩個(gè)字,無人機(jī)工程師一定覺得這實(shí)在太熟悉了,方位余弦,四元數(shù),可能有些朋友也用過指數(shù)表示方法。Ok,這些內(nèi)容確實(shí)不難,本文也會(huì)直接給到大家相關(guān)公式,可以拿來在程序中直接使用。但MR.城堡不知道各位有沒有過濾過這些問題:無人機(jī)為什么需要姿態(tài)描述?旋轉(zhuǎn)為什么有三個(gè)呢?為什么耦合不直接用自由度表示出來呢?為什么要12個(gè)狀態(tài)(說15個(gè)狀態(tài)的朋友,線性加速度也放了進(jìn)去,后文將告訴你這是不必要的),未來有沒有可能需要更多狀態(tài)?這些姿態(tài)表示方法有什么區(qū)別?有沒有其它姿態(tài)表示方法呢?什么叫做萬向節(jié)鎖死呢?為什么鎖死就控制不了?等等
這些問題有些工程師可以憑直覺得到答案,有些比如未來是否需要更多狀態(tài)?為什么選擇某一種姿態(tài)描述方式?萬向節(jié)鎖死的本質(zhì)解釋,以及不能控制的原因?等等,可能就會(huì)比較吃力,然而這些卻很重要,當(dāng)我們把這些理論與無人機(jī)系統(tǒng)實(shí)物聯(lián)系起來時(shí),不但可以用更低的成本,做出更好的產(chǎn)品,更能豐富我們對(duì)無人機(jī)的理解,形成對(duì)技術(shù)和趨勢(shì)的預(yù)判。
通過前面的專欄文章:城堡里學(xué)無人機(jī):無人機(jī)導(dǎo)航之玩轉(zhuǎn)坐標(biāo)系,城堡里學(xué)無人機(jī):如何處理GPS數(shù)據(jù)獲取無人機(jī)狀態(tài)信息?,我們知道無人機(jī)如何獲取位置和速度狀態(tài),并轉(zhuǎn)換到NED坐標(biāo)平面內(nèi)。但這并不足以讓我們?nèi)媪私鉄o人機(jī)的運(yùn)動(dòng)情況,換句話說,相同的位置中,無人機(jī)可能有不同的運(yùn)動(dòng)姿態(tài)。舉例來說,一架多旋翼無人機(jī)在不同時(shí)間經(jīng)過位置:P=[X,Y,Z]時(shí),前一次為水平飛行,后一次為垂直飛行。雖然位置坐標(biāo)相同,但運(yùn)動(dòng)方式卻如此不同。這時(shí)我們需要一些額外的信息才能夠精確描述無人機(jī)的飛行狀態(tài),這也就是本文所涉及的內(nèi)容:無人機(jī)姿態(tài)。
上面是用一個(gè)簡(jiǎn)單的例子說明一下,但不具有普遍性,下面從理論上淺析一下為什么外環(huán)信息出來了還要內(nèi)環(huán)姿態(tài)。
多旋翼無人機(jī)的姿態(tài)可以通過機(jī)體坐標(biāo)系和NED坐標(biāo)系之間的關(guān)系來進(jìn)行定義。在多旋翼機(jī)型介紹中,大家已經(jīng)了解了多旋翼無人機(jī)的姿態(tài)控制方式。很容易看出多旋翼無人機(jī)具備六個(gè)自由度(Degree of Freedom, DOF),沿機(jī)體坐標(biāo)系三軸的線性運(yùn)動(dòng)以及繞機(jī)體坐標(biāo)系三軸進(jìn)行的旋轉(zhuǎn)運(yùn)動(dòng)。
然而很容易看出來的內(nèi)容,想搞清楚why卻往往并不容易。
關(guān)于自由度,在結(jié)構(gòu)力學(xué)或者分析力學(xué)中,它的定義是:確定一個(gè)體系的位置所需要的獨(dú)立坐標(biāo)的個(gè)數(shù)。物理有的時(shí)候比較抽象,大家可以直接通過線性代數(shù)里的線性空間來理解,線性空間中我們說到一個(gè)子空間,它的維度(Dim)就是張成(Span)這個(gè)空間的一組基(Basis)中相互獨(dú)立向量的個(gè)數(shù),我們可以在這里將dimension和DOF等同起來。因此,力學(xué)中的“獨(dú)立坐標(biāo)”,可以理解為“相互獨(dú)立的基向量”。有興趣的朋友可以結(jié)合流形,微分同胚來理解(當(dāng)然,對(duì)于工程師而言,還是可以直接轉(zhuǎn)換到矩陣變換的范疇內(nèi))
在無人機(jī)中有6個(gè)自由度,意味著我們需要六組基坐標(biāo)來描述它的完整位置,這六組基就是無人機(jī)所在的R^3空間中的三個(gè)坐標(biāo)軸,以及圍繞三個(gè)坐標(biāo)軸的姿態(tài)角。從位置到運(yùn)動(dòng),就是導(dǎo)數(shù)了,這時(shí)6*2=12個(gè)狀態(tài)。我們并不需要更多的向量來描述無人機(jī)位置,因此也不需要更多狀態(tài)來描述無人機(jī)的運(yùn)動(dòng),雖然有時(shí)候?yàn)榱朔奖銓?shí)現(xiàn)某些功能,或者擴(kuò)展我們對(duì)于“運(yùn)動(dòng)”的理解,我們想要控制它的受力狀態(tài),我們會(huì)增加一些控制行為,比如針對(duì)加速度的控制,但這些變量不是描述無人機(jī)運(yùn)動(dòng)所必須的。
姿態(tài)的英文詞匯有兩個(gè)“attitude”或者“orientation”后者的意義更為明顯,可以理解為“取向”“指向”,常用于衛(wèi)星姿態(tài)描述中。
有多種方法對(duì)無人機(jī)旋轉(zhuǎn)運(yùn)動(dòng)進(jìn)行描述,最常見的是方向余弦和四元數(shù)及指數(shù)表現(xiàn)形式。但無論是哪一種,我們都可以理解為是按照某種表現(xiàn)方式提供一組基向量,來描述無人機(jī)位置的三個(gè)自由度。但是它們卻因?yàn)樗惴ǖ牟煌?,具有不同性質(zhì),這些性質(zhì)將決定我們對(duì)它們的選擇。
1)歐拉角
無人機(jī)圍繞機(jī)體系三軸的運(yùn)動(dòng)可以分解為:繞Xb軸的橫滾運(yùn)動(dòng),繞Yb軸的俯仰運(yùn)動(dòng)以及繞Zb軸的偏航運(yùn)動(dòng)。歐拉角直觀地將無人機(jī)旋轉(zhuǎn)姿態(tài)轉(zhuǎn)化為機(jī)體坐標(biāo)系和NED坐標(biāo)系之間的夾角關(guān)系。
一說到角度,一定是同一個(gè)平面內(nèi)線和線的關(guān)系或者相交平面之間的關(guān)系。在無人機(jī)坐標(biāo)系中需要大家建立起六個(gè)面的抽象圖形,機(jī)體坐標(biāo)系下三個(gè)平面:
以及NED坐標(biāo)系下三平面:
當(dāng)我們確立了這六個(gè)平面之后,就可以描述無人機(jī)姿態(tài)了。我們定義橫滾角,俯仰角,偏航角來分別描述無人機(jī)的橫滾運(yùn)動(dòng),俯仰運(yùn)動(dòng),偏航運(yùn)動(dòng)。
2)方向余弦
實(shí)現(xiàn)從NED坐標(biāo)系到機(jī)體坐標(biāo)系的數(shù)據(jù)變換有什么意義呢?無人機(jī)的旋轉(zhuǎn)運(yùn)動(dòng)相對(duì)于無人機(jī)自身是沒有任何意義的,因?yàn)樗鄬?duì)于自己永遠(yuǎn)是沒有運(yùn)動(dòng)的,只有相對(duì)于地面(參考坐標(biāo)系)才有意義。因此我們要用NED和機(jī)體坐標(biāo)系間的關(guān)系來表述無人機(jī)旋轉(zhuǎn)運(yùn)動(dòng),無疑,矩陣就是描述旋轉(zhuǎn)最好的工具了。
我們可以把無人機(jī)任意一次旋轉(zhuǎn)按次序拆分為三個(gè)部分:繞軸的偏航運(yùn)動(dòng)、繞軸的俯仰運(yùn)動(dòng)、繞軸的橫滾運(yùn)動(dòng)。每一次運(yùn)動(dòng)用一個(gè)旋轉(zhuǎn)矩陣來描述就成為了下面的形式:
大家一定注意到這三個(gè)矩陣都是斜對(duì)稱陣,喜歡矩陣的朋友可以自行思考一下,肯定可以挖掘出很多有趣的內(nèi)容。容易得到從NED到機(jī)體坐標(biāo)系的坐標(biāo)變換矩陣(方向余弦矩陣):
從機(jī)體坐標(biāo)系到NED坐標(biāo)系的方向余弦矩陣很容得到:
如此一來,我們就很容易實(shí)現(xiàn)兩個(gè)坐標(biāo)系下信息的相互轉(zhuǎn)換。
3)不唯一與奇異性
在任何系統(tǒng)中,控制工程師首先關(guān)注的是系統(tǒng)方程解的唯一性和存在性。
歐拉角非常直觀,但也存在兩個(gè)問題:1.不唯一2.奇異性。這兩者分別對(duì)應(yīng)了解的唯一性和存在性。這兩個(gè)問題從直觀上比較難以描述,但從數(shù)學(xué)上借助方向余弦可以很清楚的解釋。
不唯一性:舉一個(gè)例子,令
這時(shí):
很容易看出,這種不唯一性是由三角函數(shù)的周期性引起的,不唯一性可能會(huì)出現(xiàn)系統(tǒng)運(yùn)動(dòng)不按照我們期望的方式進(jìn)行。
奇異性(局部):如果我們令:
這會(huì)帶來什么問題呢?在后面介紹無人機(jī)數(shù)學(xué)模型時(shí),三個(gè)歐拉角與無人機(jī)本身的旋轉(zhuǎn)角速度是通過一個(gè)矩陣進(jìn)行關(guān)聯(lián)的:
此時(shí),零出現(xiàn)在分母上,這時(shí)控制器就沒有辦法處理被控對(duì)象的數(shù)學(xué)模型了,也就是我們所說的解不存在的情況,也將因此無法實(shí)現(xiàn)有效控制。這就是常說的“萬向節(jié)鎖死”。數(shù)學(xué)描述是不是非常直觀明了呢?
上面的情況導(dǎo)致歐拉角的姿態(tài)描述方式在某些姿態(tài)情況下不可使用,這對(duì)于無人機(jī)控制而言是會(huì)帶來一定風(fēng)險(xiǎn)的。因此我們需要在另外一種描述方法可以對(duì)無人機(jī)所有的姿態(tài)進(jìn)行描述。
4)四元數(shù)
四元數(shù)是一種全局的姿態(tài)描述方法,換句話說,當(dāng)使用四元數(shù)描述姿態(tài)的時(shí)候,縱使
再次出現(xiàn),描述方法依然有解。我們 直接驗(yàn)證一下就可以了,首先看一看如何從歐拉角獲取四元數(shù):
然后再對(duì)四元數(shù)進(jìn)行歸一化處理:
q1,q2,q3的歸一化處理與q0相同。
請(qǐng)大家注意,此時(shí),縱然出現(xiàn)90°的姿態(tài)角,由于沒有出現(xiàn)分母為零的情況,因此依然有解。這只是很直觀的驗(yàn)證,結(jié)合指數(shù)姿態(tài)表示方法:
而四元數(shù)的不唯一性可以通過下式看出:
因此,帶入
時(shí),R矩陣式一樣的。
很容易獲得從四元數(shù)到歐拉角的轉(zhuǎn)換公式:
5)程序?qū)崿F(xiàn)
從歐拉角到四元數(shù)的程序?qū)崿F(xiàn)非常直接,并不需要想一般算法那樣進(jìn)行離散化,因?yàn)檫@里的轉(zhuǎn)換公式并不對(duì)應(yīng)時(shí)域函數(shù),而是直接對(duì)應(yīng)變量值,所以只要我們通過傳感器獲得可靠的姿態(tài)數(shù)據(jù)值后就可以直接帶入公式求得對(duì)應(yīng)姿態(tài):
quat[0] = chphi0 * chtheta0 * chpsi0 + shphi0 * shtheta0 * shpsi0; quat[1] = -chphi0 * shtheta0 * shpsi0 + shphi0 * chtheta0 * chpsi0; quat[2] = chphi0 * shtheta0 * chpsi0 + shphi0 * chtheta0 * shpsi0; quat[3] = chphi0 * chtheta0 * shpsi0 - shphi0 * shtheta0 * chpsi0;
如是而已。
6)指數(shù)表現(xiàn)形式
指數(shù)表現(xiàn)形式在實(shí)際使用中比較少,但是對(duì)于理解另外兩種旋轉(zhuǎn)表現(xiàn)方式很有助益。它是既不是全局的,也具有奇異性。有興趣的朋友可自行了解,推薦《A Mathematical Introduction to Robotic Manipulation》這本書。
相信大家通過本文應(yīng)該可以直接獲取無人機(jī)姿態(tài)數(shù)據(jù)的轉(zhuǎn)換公式,并根據(jù)不同旋轉(zhuǎn)運(yùn)動(dòng)描述方法的特點(diǎn)結(jié)合自己的需求進(jìn)行數(shù)據(jù)轉(zhuǎn)換(基坐標(biāo)變換?不知這樣的詞匯合適么)。
有時(shí)我們面對(duì)的研究對(duì)象是可以碰觸的物理數(shù)實(shí)體,比如無人機(jī),這當(dāng)然會(huì)給我們帶來很多好處,但過分陷入到直觀感受的依賴中,很有可能將自己引入主觀的誤區(qū),就像一場(chǎng)狩獵游戲,好狐貍總是想方設(shè)法用獵人自己的思維來迷惑他。而數(shù)學(xué)卻能簡(jiǎn)潔,工整,清晰的將我們研究對(duì)象的本質(zhì)揭露出來,很多情況下這是我們憑自己的直觀感受難以挖掘的,這也正如好的偵探,最后得出的結(jié)論也許很難在感情上接受它,卻無法否認(rèn)它是更加接近真相的推斷。在無人機(jī)研究中暢快的運(yùn)用數(shù)學(xué)就猶如身臨一場(chǎng)狩獵或者探案冒險(xiǎn),抽絲剝繭,能得到一點(diǎn)點(diǎn)結(jié)論都會(huì)讓自己心情久久暢快,有時(shí)會(huì)讓自己驚訝的一天都沉迷其中,這種快樂也可以算作研究無人機(jī)的副產(chǎn)品吧:)。
有很多朋友私信或者值乎詢問無人機(jī)行業(yè)中的職業(yè)選擇與發(fā)展規(guī)劃等方面的內(nèi)容,MR.城堡計(jì)劃在第二次Live中進(jìn)行相關(guān)分享,歡迎有興趣的朋友一起來探討這個(gè)話題。
2025-08-28 11:13
2025-08-27 14:14
2025-08-26 13:50
2025-08-23 20:37
2025-08-22 10:33
2025-08-18 14:20
2025-08-13 11:12
2025-08-13 10:55
2025-08-08 09:53
2025-08-07 09:28