天天看點

《機器人與數字人:基于MATLAB的模組化與控制》——3.2節線速度和角速度

本節書摘來自華章社群《機器人與數字人:基于matlab的模組化與控制》一書中的第3章,第3.2節線速度和角速度,作者[美]顧友諒(edward y.l.gu),更多章節内容可以通路雲栖社群“華章社群”公衆号檢視

3.2線速度和角速度

為了求得給定的3×1位置向量p∈瘙綆3所表示平移運動的瞬時速度,即通常的剛體運動的線速度,可以簡單地對位置向量p按時間求導,即v=。但是在求導之前,需要先完成一些準備工作,必須先把位置向量p投影到一個固定的基礎坐标系上,而不能是移動的坐标系上。也就是說,如果pi目前投影到一個非固定坐标系i上,那麼必須找到坐标系i相對于基礎坐标系的方向矩陣rib,在計算線速度vb=b之前,需要先求pb=ribpi。原因很明顯,vb=b=ibpi+ribi≠ribi,除非rib是常數矩陣,然而計算很繁瑣而且這表明坐标系i是不動的。

相比之下,求解一個坐标系i相對于基礎坐标系的角速度ω的過程,比線速度求解過程要複雜得多。因為并沒有一個有效的3×1向量來唯一表達坐标系的旋轉運動。隻有數學中的so(3)群可以唯一地、穩妥地表示坐标系的方向和旋轉運動。一般來說,一個3×1的角速度ω并不完全是某個3×1向量的時間導數。換言之,不存在角位置向量ρ∈瘙綆3,使得ω=,除非旋轉運動是繞着一個固定軸進行的,如二維自旋。當使用外微積分時,第一類微分σ=ωdt 是不恰當的,也通常是不閉合的。

為了更好地了解和洞察三維旋轉運動和方向的本質,需要尋找角速度ω的傳統定義和旋轉矩陣r∈so(3)的時間導數之間的關系。

基于旋轉矩陣r∈so(3)的正交特性,可以得到,rrt = i。兩邊分别對時間求導,可得出:

用rt右乘,其中rt可以在式(210)中求出,同時注意第2章中所有的機關斜對稱矩陣k所擁有的特性,最後可以得到

這個簡潔的公式,即Ω=rt,直接得到一個關于的坐标系的方向變化速率與傳統坐标系旋轉角速度ω之間的關系。

為了更好地了解由式(310)得到的式子Ω=rt的幾何意義,用矩陣r10表示給定坐标系1相對于基礎坐标系0的方向。希望坐标系1通過改變方向得到坐标系2,坐标系2相對于基礎坐标系的方向用矩陣r20表示。是以,兩個方向的“差”可以表示為r21=r01r20=(r10)tr20,在k過程中,将式(29)和式(211)應用在r21上,能夠求出做這樣方向變化的和k。直覺看來,這種方向的變化既可以用矩陣r21關于時間的變化率來表示,也可以用式(38)中定義的傳統角速度ω=k來表示。

現在,式(310)給出了一種重要的、緊密的關系式。因為機關向量k是關于坐标系1的,是以Ω=ω×也應該投影到坐标系1上,而不是基礎坐标系上。注意,當利用k過程從矩陣r21中确定了和k以後,機關向量k就要作為固定的軸保持不動,直到r21變化完成。如果方向再次變化,如從坐标系2到坐标系3的變換r32,那麼要再次計算出新的和 k。一般來說,新的k不必和第一次産生的相同。這意味着式(38)定義的傳統角速度中的機關向量k是暫時固定的,但并不是一直不變的。

舉一個簡單例子,假設一個坐标系繞本身的z軸以ρ rad/s的角速度旋轉。根據式(22),這個旋轉運動的矩陣可以寫成:

是一個斜對稱矩陣,其相應向量剛好是這個特定坐标系繞z軸旋轉的三維角速度ω=(00ρ)t,這個向量隻有z分量是非零的。

又如,計算歐拉角的導數,并證明從式(310)導出的簡潔的等式Ω=rt的實用性。設一個rollpitchyaw歐拉角形成的旋轉矩陣為r。根據式(37)有

這個結果表明了rollpitchyaw歐拉角的時間導數和角速度ω之間的關系。因為式(312)右邊的一列()t時間導數的3×3系數矩陣不再是機關矩陣或常數矩陣,是以第一類微分σ=ωdt幾乎是不成立的。換句話說,歐拉角的角速度ω不可能是rollpitchyaw歐拉角的時間導數。

按照相同的過程,可以求出zyz歐拉角的導數和角速度ω之間的關系。這項工作留作本章結尾部分的練習題。

在将來的計算過程中,通常有這樣一個問題:如果一個斜對稱矩陣s(a)=a×變化了,其相應的向量a是否會被投影到一個新的坐标系上?

類似的,在式(310)中,怎樣将關于坐标系1的角速度ω1對應的斜對稱矩陣Ω1轉換成關于基礎坐标系的Ω0?假設重新投影用旋轉矩陣r來表示,希望知道s(ra)的表達式是什麼。事實上,可以使用s(ra)r和rs(a)的元素間相乘的展開來證明,即

上式意味着,如果=0,則ω=。但是,在k過程中,k軸對于一個給定方向變化r的旋轉過程,僅僅是暫時固定的,并不是永久固定的。事實上,在下一章将看到,對于角速度ω,即使投影到一個固定的基礎坐标系上,第一類微分ωdt=σ也并不是閉合的,即在許多一般的執行個體中,它的第二類微分dσ≠0。

此外,如果使用第2章中引用的對偶數值計算,在求解角速度ω時,從數值上計算所需要的更容易,而且不需要任何符号操作。假設一個符号旋轉矩陣是機器人的兩個關節轉角θ1和θ2的函數,即:

式中,si=sinθi且ci=cosθi,i=1, 2。假設指定一個時間點,θ1=π/6且θ2=π/3,機關為弧度,同時,1=04,2=-06,機關為弧度/秒。用θi+i替代給定矩陣r中的每一個θi,

然後把對偶旋轉矩陣r∧=r+拆分出實數部分和對偶部分,利用matlab直接就能得到數值上的r和,并進一步得到Ω=rt。

是以,角速度的解ω=(-030000519604000)t。