嵌入式運(yùn)動工程師必須知道智能電子設(shè)備如何放置在物理結(jié)構(gòu)中(“嵌入式”)以及每個組件如何相對于彼此移動(“運(yùn)動”)。在本文中,我想討論我們?nèi)绾蚊枋龊徒:笠粋€術(shù)語,運(yùn)動,我們通常認(rèn)為它非常簡單。
當(dāng)我們設(shè)計運(yùn)動系統(tǒng)時,我們會問如下問題:
運(yùn)動穩(wěn)定嗎?
我們怎樣才能讓動作更流暢、更優(yōu)雅?
實(shí)現(xiàn)所需運(yùn)動的最佳方法是什么?
為了以高技術(shù)可預(yù)測性回答這些問題,我們經(jīng)常使用可信賴的運(yùn)動學(xué)和動態(tài)模型。有時,我們在機(jī)械手冊、工程工具箱、維基百科或工程網(wǎng)絡(luò)上的其他地方找到的模型對于我們的場景來說已經(jīng)足夠了。有時,它們不成立,我們需要一個具有更強(qiáng)預(yù)測能力的模型。
一句經(jīng)常被引用的工程諺語說:“所有模型都是錯誤的。有些是有用的。” 毫無疑問,該原則也適用于 3D 運(yùn)動。一些運(yùn)動學(xué)和動力學(xué)模型在一種情況下可能是合適的,但在其他情況下則不夠。
對于運(yùn)動,普遍適用的方程可以處理多方向的 3D 旋轉(zhuǎn)和平移物體,而簡單方程只能處理平移和單向旋轉(zhuǎn)。簡單的方程式很有吸引力,因?yàn)樗鼈兗瓤焖儆趾唵巍O旅嫖覍⑼ㄟ^比較兩個系統(tǒng)來說明這個想法,這兩個系統(tǒng)需要不同的方法來建立適當(dāng)?shù)倪\(yùn)動學(xué)模型。
簡單的運(yùn)動分析
下圖顯示了一個簡單的齒輪系統(tǒng)。底部齒條驅(qū)動兩個齒輪和另一個齒條。讓我們假設(shè)兩個齒輪的中心是固定的,所以齒輪只是在旋轉(zhuǎn),而頂部齒條在 x 方向上移動。如果底部齒條以ν 1 = 1mm/s 的速度移動,頂部齒條的移動速度有多快(假設(shè)齒輪沒有損失)?
事實(shí)證明,我們需要的方程非常簡單。我們可以在這個例子中輕松定義角度信息:
每個齒輪的角速度 ( ω ) 僅等于一個角度 ( θ ) 的時間變化率。例如,對于較大的齒輪,我們可以說它的角速度用ω 1 = θ? 1來描述。
每個齒輪都圍繞其質(zhì)心旋轉(zhuǎn)。
通過將該系統(tǒng)本質(zhì)上視為 2D,我們可以安全地在分析中使用ν = τω 。應(yīng)用該關(guān)系來設(shè)計我們的系統(tǒng)會得出 ν 2 = ν 1。
轉(zhuǎn)向 3D
當(dāng)我們遇到 3D 運(yùn)動系統(tǒng)的零件在多個方向而不是圍繞其質(zhì)心旋轉(zhuǎn)時,我們該怎么辦?我們?nèi)绾味x角度?什么是角速度?
四軸飛行器的運(yùn)動是更復(fù)雜的 3D 運(yùn)動系統(tǒng)的一個合適示例。對于四軸飛行器,我們希望穩(wěn)定地控制它的位置(“它在哪里?它的速度有多快?”)和空間方向(“‘傾斜’角度是多少?”)。飛行中的四軸飛行器可以在 x、y 和 z 方向上平移并圍繞 x、y 和 z 旋轉(zhuǎn)(其中 xyz 是固定在空間中的三個正交方向)。
為了保持四軸飛行器穩(wěn)定,我們將使用陀螺儀測量每個軸的角速度,并將該信息反饋給控制算法。三軸陀螺儀將輸出三個角速度值,但請注意,這些角速度對應(yīng)于四軸飛行器上固定的軸。這些 xyz 軸與與四軸飛行器在空間中的位置、速度和加速度相關(guān)的 xyz 軸不同。可以說,將陀螺儀的輸出轉(zhuǎn)換為可被控制算法消化的東西是 3D 動力學(xué)模型派上用場的地方。
開始使用更強(qiáng)大的 3D 模型
一個更強(qiáng)大的 3D 運(yùn)動模型開始于:
將參考系分配給空間中固定的點(diǎn)。
將系統(tǒng)中的所有對象視為剛體。
為每個身體上的某個點(diǎn)分配一個參考系。
參考系是我所說的一組三個正交單位向量,它們連接到某個點(diǎn)。在本例中,唯一的對象是四軸飛行器,因此我們將其視為單個剛體。(我們將在這里忽略四軸飛行器上的其他部分。)我們會說參考系N 固定在地球上的一點(diǎn),由n? x、 n? y和 n? z組成。我們將參考框架D附加到四軸飛行器的質(zhì)心。參考系D由d? x、 d? y和 d? z組成。 上圖顯示了 CAD 中的簡化描述。
陀螺儀的測量結(jié)果將為我們提供關(guān)于d? x、 d? y和 d? z的角速度,對于控制算法,我們想知道這些值如何與n? x、n? y和n? z中的有意義的角度相關(guān)聯(lián)。 實(shí)現(xiàn)此目的的一種方法是通過圍繞固定在四軸飛行器機(jī)身上的軸進(jìn)行一系列簡單旋轉(zhuǎn)來定義四軸飛行器的方向。在這一步的開始,我們可以用d? x、d? y和d? z來表示四軸飛行器的角速度,它看起來像這樣:
在這項工作的最后,我們將使用旋轉(zhuǎn)矩陣以歐拉角的形式表示每個角速度。歐拉角為我們提供了一種精確描述物體在 3D 空間中的方向的方法。(請注意,歐拉角不一定對應(yīng)于我們所說的偏航、俯仰和滾動。)我們將以ω 1、ω 2和 ω 3的精確表達(dá)式結(jié)束。
由于四軸飛行器可以繞多個軸旋轉(zhuǎn),我們不再有簡單的ω 1 = θ? 關(guān)系,也不能用ν = τω 來概括地描述四軸飛行器上一點(diǎn)的速度。事實(shí)上,ω 1的方程 看起來像 ω 1 = φ? = cos α + α? - θ? sin φ 其中θ、φ和α 是歐拉角。ω 2 和ω 3的方程 不幸的是,同樣混亂。簡而言之,很容易看出 3D 系統(tǒng)的定義如何超出我們在傳統(tǒng)動力學(xué)資源中發(fā)現(xiàn)的范圍。有關(guān)這些計算的更多詳細(xì)信息,請參閱額外信用部分。
模擬復(fù)雜的運(yùn)動現(xiàn)象
當(dāng)我們對復(fù)雜的 3D 運(yùn)動現(xiàn)象建模時,區(qū)分標(biāo)量和矢量是關(guān)鍵。請記住,向量既有大小又有方向(例如,東北方向 25 mph),而標(biāo)量只有大小(25 mph)。當(dāng)我們將其他物理值(速度、加速度、線性和角動量、力、扭矩等)帶入我們的模型時,我們應(yīng)該首先將它們視為向量。例如,當(dāng)我們談?wù)撆ぞ貢r,指定它的方向(例如,關(guān)于正 z 軸)以及它的大小(5 Nm)是很有用的。
使用更復(fù)雜模型的好處是,您可以為任何由剛體組成的運(yùn)動系統(tǒng)精確定義與角度相關(guān)的所有量(方向、角動量、力矩和慣性積等) 。方程可能會變得粗糙,因此使用 MATLAB、Working Model或MotionGenesis等軟件程序通常是明智的。
請注意,如果我在齒輪示例中遵循 3D 模型方法,那么我會明確地將速度和角速度視為矢量。但同樣,齒輪示例中的運(yùn)動符合我簡化為 2D 運(yùn)動學(xué)方程的標(biāo)準(zhǔn),并且我避免了 3D 模型的時間繁重的定義。如果我有一個更復(fù)雜的運(yùn)動系統(tǒng),那么我必須將運(yùn)動學(xué)和動態(tài)量視為向量,否則我可能會面臨預(yù)測模型不佳的風(fēng)險。
對系統(tǒng)的運(yùn)動進(jìn)行精確建模可能是一件棘手的事情,但通過構(gòu)建一個穩(wěn)健的模型,我們可以更快地響應(yīng)更廣泛的問題。如果我們希望制作一個功能強(qiáng)大、平滑且優(yōu)雅的穩(wěn)定運(yùn)動系統(tǒng),那么我們必須決定哪種模型更合適。作為工程師,我們必須認(rèn)識到常見 2D 方程的局限性,以及解決 3D 運(yùn)動系統(tǒng)的其他合適工具。
有關(guān) 3D 運(yùn)動分析相關(guān)主題的更多資源和支持,請關(guān)注Simplexity 的產(chǎn)品開發(fā)博客。
額外學(xué)分
這是為四軸飛行器精確定義旋轉(zhuǎn)信息的一種方法:
我們將使用中間參考系來描述四軸飛行器的方向。我們將調(diào)用附加到四軸飛行器B的初始參考系。最初, b? x = n? x、b? y = n? y和b? z = n? z。參考系D仍然附著在身體上,最初,d? z = b? z = n? z。我們將首先圍繞b? z (這里等于d? z)旋轉(zhuǎn),然后我們將旋轉(zhuǎn)角度 + θ。 然后我們可以寫出 B 在N中的角速度是
然后我們將圍繞身體上的另一個固定軸d? y旋轉(zhuǎn),我們將把這個新的中間參考系稱為C。最初,? x = b? x、d? y = ? y = b? y和 ? z = b? z。 我們將圍繞 ? y旋轉(zhuǎn)角度 + φ。然后我們可以寫出 C 在 B 中的角速度是。
最后,我們將圍繞固定軸 d? x旋轉(zhuǎn)。最初,d? x = ? x,d? y = ? y和d? z = ? z 。我們將 圍繞d? x旋轉(zhuǎn)角度 + α。然后我們可以寫出D在C中的角速度是。
?
因?yàn)檫@是來自陀螺儀的數(shù)據(jù)格式。我們想根據(jù)我們的全球參考框架N重新表達(dá)這一點(diǎn)。
幸運(yùn)的是,這些旋轉(zhuǎn)中的每一個都在每個中間幀之間創(chuàng)建了一個旋轉(zhuǎn)矩陣,我們可以使用這些旋轉(zhuǎn)矩陣的乘法來表達(dá)
我們定義的角度。(我不會詳細(xì)介紹這部分,但它直接來自進(jìn)行這些中間旋轉(zhuǎn)。)結(jié)果如下:
請注意,我們可以通過以 _ _ _ _ _ _ _ _ _ d? 1、d? 2和d? 3。此外(通過重新排列),我們可以用? 1、? 2和? 3來表示每個歐拉角。例如:
唉,我們?yōu)樗妮S飛行器的角速度給出精確定義并使其可供控制算法使用的第一步已經(jīng)完成。
審核編輯:郭婷
評論
查看更多