在上一篇文章《運(yùn)動學(xué)似乎已經(jīng)足夠了,為什么還需要動力學(xué)》中,我們談到了動力學(xué)要研究的幾個問題以及研究動力學(xué)的用途。 這篇文章的閱讀量出乎意料地比其他文章多。 是不是大家都和筆者一樣對這個問題感到困惑呢? 不管怎樣,如果你還沒有讀過那本書,CC 建議你看一下。
剛體動力學(xué)
我們知道,機(jī)械臂由關(guān)節(jié)和連桿組成:關(guān)節(jié)可以對與其連接的連桿施加特定方向的力; 連桿有質(zhì)量和尺寸(因此慣性張量不能忽略),不會變形。 的剛體。 可見,機(jī)械臂動力學(xué)的本質(zhì)是剛體動力學(xué)。
大學(xué)物理里的剛體動力學(xué)我們都應(yīng)該學(xué)過,但CC在這篇文章中依然會詳細(xì)推演。 為什么? 因為仔細(xì)瀏覽這部分內(nèi)容并清楚、透徹地理解它們對于理解更復(fù)雜的機(jī)械臂動力學(xué)問題非常重要。 如果您認(rèn)為自己已經(jīng)熟悉剛體動力學(xué),可以跳過本節(jié)。
剛體動力學(xué)研究剛體的運(yùn)動狀態(tài)與其所受到的外力之間的關(guān)系。 這種關(guān)系可以用歐拉運(yùn)動定律來描述。 歐拉運(yùn)動定律是牛頓第二定律的擴(kuò)展,即眾所周知的 F = ma; 如果說牛頓定律描述的是抽象的“物體”或“粒子”(),那么歐拉定律則將其延伸到無數(shù)個聚集在一起形成的特定體積剛體。
歐拉第一運(yùn)動定律(牛頓定律)
歐拉第一定律描述了剛體的線性運(yùn)動 ( ) 與其所受到的外力之間的關(guān)系。
首先,引入線動量( )的概念,它等于物體(粒子)的質(zhì)量乘以線速度。 根據(jù)牛頓第二定律(d(mv)/dt = ma = F),線動量的變化率等于物體所受的外力。
剛體可以看作是一個無限集合,剛體的線性動量等于這些線性動量的總和。 由于剛體的性質(zhì),作用在剛體上任意一點(diǎn)的外力同樣作用在所有點(diǎn)上,導(dǎo)致它們的線性動量發(fā)生變化。所以我們有
方程的右側(cè)可以轉(zhuǎn)換為對剛體質(zhì)量的積分:
矢量r表示剛體上各點(diǎn)在一定參考系中的位置矢量。
請注意,質(zhì)心(質(zhì)心)定義如下:
(下標(biāo)cm代表質(zhì)量)
所以我們有:
最后我們得出結(jié)論:剛體的線動量是剛體的質(zhì)量與其質(zhì)心線速度的乘積。 這個結(jié)論表明,在考慮剛體直線運(yùn)動時,只需要考慮質(zhì)心的直線運(yùn)動即可。
歐拉第一定律指出,剛體的線性動量的變化率等于其上的外力:
顯然,線速度的導(dǎo)數(shù)就是線加速度,因此歐拉第一定律也可以寫成如下形式。 (經(jīng)過大量推導(dǎo),結(jié)論與牛頓定律幾乎相同)
歐拉第二運(yùn)動定律
歐拉第二定律描述了剛體的角運(yùn)動 ( ) 與其所經(jīng)歷的力矩(力)之間的關(guān)系。 扭矩這個概念相信大家都很熟悉。 當(dāng)力作用時,它相對于另一點(diǎn)O有一個力臂。力臂與力的叉積就是力矩。 (扭矩是矢量,不是標(biāo)量,方向指向物體旋轉(zhuǎn)的方向。把這個關(guān)系記錄為叉積,理解會清晰很多!還有,注意叉積的順序)
與線動量類似,我們還引入角動量( )的概念:質(zhì)點(diǎn)相對于某一固定點(diǎn)的角動量等于其質(zhì)量與角速度的乘積。 顯然,角速度(相對于該固定點(diǎn))等于該固定點(diǎn)到粒子的位置向量與粒子的線速度(相對于該固定點(diǎn))的叉積。
那么角動量可寫為:
從牛頓定律 F = ma 出發(fā),將方程兩邊與位置向量叉乘可得:
所以我們可以得到類似于“物體線動量的變化等于對其施加的外力”的結(jié)論:物體的角動量的變化率等于其受到的扭矩,即
現(xiàn)在,我們再次需要將這個結(jié)論擴(kuò)展到由無數(shù)集合組成的剛體; 這部分比第一定律的推導(dǎo)麻煩一點(diǎn)。
首先我們需要推導(dǎo)剛體角動量的表達(dá)式,仍然將其視為無限集,則有
請注意歐拉運(yùn)動定律,我們用角速度和位置矢量的叉積代替了線速度。 對于剛體來說,剛體上每一點(diǎn)的角速度都是相同的,所以我們可以把它放在求和之外。 將上面的方程寫成體積積分,我們有:
上圖中p上方的小尖頭稱為叉積算子(Cross)。 該運(yùn)算符將兩個向量的叉積轉(zhuǎn)換為矩陣乘法向量運(yùn)算。對于 3×1 向量,我們有
這里,我們將上圖積分方程中括號[]內(nèi)的部分定義為慣性張量I:
關(guān)于慣性張量,限于篇幅,我們不再詳細(xì)討論。最終,我們得到剛體的角動量表達(dá)式為
與力是線性動量的變化率類似,剛體所經(jīng)歷的扭矩 ( ) 定義為剛體的角動量的變化率。 為了找到扭矩、角速度和角加速度之間的關(guān)系,我們可以求出上式兩邊的導(dǎo)數(shù):
dw/dt顯然是剛體的角加速度,但是dI/dt是什么呢? 它是張量對時間的導(dǎo)數(shù),不一定等于0! 我們知道,張量是剛體上各點(diǎn)相對于靜止參考系的位置向量進(jìn)行一定運(yùn)算后的體積積分。 這些位置向量隨著剛體的旋轉(zhuǎn)而旋轉(zhuǎn); 類似地歐拉運(yùn)動定律,一點(diǎn)的線速度等于角速度,對位置向量求叉積,可得:
(不是嚴(yán)格推導(dǎo)!只是一種理解方式。)
最后我們得到
用表格總結(jié)剛體動力學(xué):
牛頓歐拉法推導(dǎo)機(jī)械臂動力學(xué)
在花了這么多篇幅詳細(xì)推導(dǎo)剛體動力學(xué)的歐拉運(yùn)動方程之后,我們終于可以看看機(jī)械臂的動力學(xué)了。 解決機(jī)器人手臂動力學(xué)的最終目標(biāo)是,如果我們需要控制機(jī)器人沿著某個軌跡運(yùn)動(不要忘記軌跡是位置與時間的函數(shù)),需要多大的扭矩(旋轉(zhuǎn)關(guān)節(jié))或力(平移關(guān)節(jié))關(guān)節(jié))是由每個關(guān)節(jié)的驅(qū)動器施加的? 聯(lián)合的)。
用牛頓歐拉方法推導(dǎo)機(jī)械臂的動力學(xué),需要兩個步驟:第一步是“速度和加速度的前向傳遞( )”:從基點(diǎn)開始,依次計算每個環(huán)節(jié)的速度和加速度,所有到終點(diǎn)執(zhí)行器的方式; 齊次序列為“逆?zhèn)髁Γāぃ保簭哪┒藞?zhí)行器所受的外力出發(fā),反算出各關(guān)節(jié)的扭矩/力。 牛頓-歐拉推導(dǎo)機(jī)器人手臂動力學(xué)的方法是一種遞歸算法。
首先,查看連桿的角速度。 每個連桿的角速度等于前一個連桿的角速度加上其關(guān)節(jié)旋轉(zhuǎn)引起的角速度(對于平移關(guān)節(jié),此項為0); 據(jù)此,我們可以得到連桿角速度的傳遞公式。 通過對公式兩邊求導(dǎo),我們可以進(jìn)一步得到角加速度的傳遞公式。
其中 θ 是關(guān)節(jié)位置(旋轉(zhuǎn)關(guān)節(jié)的角度),Z 是關(guān)節(jié)的旋轉(zhuǎn)軸。 注意,上面的公式并沒有表明每個向量使用的幀。 在實(shí)際計算中,需要使用旋轉(zhuǎn)矩陣將不同參考系中的向量映射到同一參考系中。
對于線速度,每個連桿的線速度等于前一個連桿(質(zhì)心)的線速度、前一個連桿的旋轉(zhuǎn)引起的線速度和平移關(guān)節(jié)的線速度之和。 對方程兩邊求導(dǎo)即可得出線性加速度的傳遞公式。
其中d是關(guān)節(jié)位置(平移關(guān)節(jié)的平移位置),Z是關(guān)節(jié)平移方向,p是從前一個連桿的質(zhì)心到當(dāng)前連桿的位置向量。
有了速度和加速度的傳遞公式,我們就可以根據(jù)歐拉運(yùn)動方程很容易計算出各連桿的慣性力和轉(zhuǎn)動慣量:
現(xiàn)在我們來分析每個連桿上的應(yīng)力。 從牛頓第三定律我們知道,力的作用是相互的,所以我們可以用fi來表示每個連桿對前一個連桿施加的力,用ni來表示它所受到的力矩。
如圖所示,我們有
那么每個關(guān)節(jié)的扭矩/力是
一張圖總結(jié)了這個復(fù)雜的過程(對于六自由度機(jī)械臂):
我們的標(biāo)題圖概念化了這個過程:
一個簡單的例子
為了讓大家更好地理解牛頓歐拉遞歸法的求解過程(也更好地理解這個方法有多么復(fù)雜),這里舉一個簡單的例子——一只只有一個旋轉(zhuǎn)關(guān)節(jié)的機(jī)械臂。
其中,連桿長度為l,質(zhì)心位于l/2處。
階段,我們可以找到速度、加速度和慣性力。 注意,式中的s1表示sinθ1,c1表示cosθ1,g是重力加速度。
階段,我們可以發(fā)現(xiàn)
最后我們得到
牛頓歐拉法的思想非常直觀,過程也非常漫長和復(fù)雜。 在下一篇文章中,CC將為您講述少一點(diǎn)簡單粗暴多一點(diǎn)優(yōu)雅智能的拉格朗日方法。