為什麼要做機器人動力學分析?請牛人詳細、易於理解的闡述一下

本人沒有學過控制,想知道為什麼要做機器人動力學分析?我知道,做機器人運動學分析,可以知道機械臂的末端位置和姿態以及機器人的運動範圍,這就可以知道機器人的操作空間有多大,可以知道要想實現末端手的固定位置和姿態的操作該怎麼操作電機,這對機器人的應用和操作很重要。對機器人做靜力學分析可以知道結構的設計需求、電機的功率等。但是,對機器人的動力學分析呢?我可以知道機械臂在某位置的速度、加速度以及實現該動作所需要的力和力矩,但是這有什麼用呢?


謝邀。
前面的答案從理論方面進行了解釋,我來舉幾個生活中的例子來類比一下,不是百分百對應,但本質一樣,需要多聯想,主要靠意會,意會。
如果以後想到更適合更貼切的例子,本回答將不定時更新。

我們經常在網路/電視上看到軍事人員為了提高瞄準射擊的穩定性,會通過在槍械上掛載一定的額外重量(水壺、磚頭、沙袋)的方式來鍛煉手臂力量,提高穩定性,例如這樣:

ok,現在想像一下你在做同樣的事情,只不過我們換成單臂持手槍。
先來一個最簡單的動作,在槍上掛一個裝了1L(1kg)水的水壺,然後抬起手臂並保持穩定(1kg並不困難,一般的筆記本重量大約在1.5~2kg,試著感受一下),瞄準10米外的靶子。

很簡單吧,接下來我們增加一點點難度,假設掛著你手臂上的水壺會不定時的隨機的改變它的重量,可能會變輕,也可能會變重,這時會發生什麼情況?
對,你無法很好的一直瞄準目標了。
當水壺突然變輕時,由於你本來的用力大於實際所需,胳膊會往上抬,偏離目標;
當水壺突然變重時,由於你本來的用力小于于實際所需,胳膊會往下掉,同樣偏離目標;
但是不管哪一種情況,偏離目標後,你都可以通過觀察手臂朝向與靶標的差距,重新進行瞄準(當然前提是沙袋不要變得太重導致你舉不起來)。

////////////////在這裡需要插入一丟丟控制理論的知識///////////////////

你通過眼睛觀察到了偏差,大腦就會控制手臂移動去減小偏差,與此同時眼睛仍在觀察,直到最終瞄準目標,這種基於「偏差/誤差/error」進行控制的方法稱為反饋控制,PID控制器就是經典的反饋控制之一。
很顯然,如果你無法看到需要瞄準的目標,或者雖然你看到了目標但是無法判斷到底有多少偏差,那麼就無法進行瞄準。即,沒有偏差,就無法進行反饋控制。
偏差是反饋控制的基礎,也是這種控制策略一些缺點的主要原因。控制之前需要等待產生偏差,會導致控制系統響應變慢。
人通過眼睛來完成絕大部分任務的過程都可以看做是反饋控制,更具體的,由於視覺的存在,有一個專用名詞,即「視覺伺服 Visual Servo」。
很多人在研究如何給機器人加上一雙好用的眼睛,只不過距離人眼+人類大腦的水平還差的太遠。

在射擊運動中,你可以認為在人的大腦中產生了一個用於射擊的反饋控制器,用於控制人手精確的射擊目標。
只不過有的人大腦中的控制參數不行,給定一個目標後,瞄準時間長,射擊準確度差(初學射擊的人);
而有的人蔘數調的好,通過大量的練習/訓練(肉身完成一次訓練時間巨長的學習),可以達到快速瞄準,精準涉及的目的(射擊運動員);

///////////////////趕快回來繼續動力學//////////////////////////

為什麼會發生偏離目標的情況?
因為你不知道沙袋會在什麼時候改變重量,也不知道沙袋會變重還是變輕以及變化量是多少,所以在沙袋變化的瞬間你只能以一個舊的穩定狀態的出力來處理一個新的狀態,導致了控制效果變差。

因此簡單的反饋控制無法快速處理這種時變非線性的情況

而現實的情況是,機器人上所使用的關節控制器/電機控制器絕大部分使用經典的PID演算法,因此在這種情況下也會面臨這樣的問題(絕大部分機器人內部都會配備兩種控制器,一種是用來控制電機的關節驅動器,裡面通常是傳統的PID控制,只能控制一個或者少數幾個電機/關節的轉動;另一種類似於人類的大腦,用來處理上層的感知,規劃,通信以及協調各電機/關節控制器等任務)。

如何能改善這種情況呢?

一個自然而然的思路就是想辦法知道什麼時候水壺的重量會發生變化,以及變化到多重,提前告知你,你就可以在水壺重量變化的一瞬間加把勁或者略微放鬆一些來保持手臂的水平,繼續瞄準目標(當然這是理想情況,人類的精度控制水平是很模糊的,這裡需要意會,你懂的)。

這種提前把那些會影響你動作的外界因素告知大腦以提高控制精度的方法,在控制理論中被稱為前饋控制

在這個例子中,有哪些外界因素需要提前告知呢?

水壺的質量以及變化的時間。
其中,質量Mass這個參數就屬於動力學的範疇(終於講到動力學了,呼~)。
在這裡我們把水壺當成了一個點來考慮,假設水壺換成了一個棍子橫在你的胳膊上,你就要考慮這個棍子的重心Center of Mass在什麼地方了,畢竟重心在不在胳膊的上方差別很大。
重量變化這個假設對應到機器人上是很常見的,各關節在運動過程中相互位置發生變化,由於重力產生的力也隨之變化,例如手臂伸直和垂下兩種狀態,對肘關節的力量輸出要求是不一樣的。
質量和重心兩個參數與平動有關,涉及到轉動時就要換成另外一組動力學參數,即慣量inertia慣性主軸axes of moment,就不再說具體例子了。
這是引入動力學的第一個好處,可以顯著提高控制的準確性和響應速度


我們繼續,現在射擊任務要求有一些變化。

你需要射擊10次目標,每次射擊前都要求手臂先回到垂直向下狀態,然後抬起射擊,最終完成10次射擊的時間越短越好。
假設一開始水壺是空的,相當於沒有額外負載,你輕車熟路,每次都使勁全力快速舉槍、射擊、放下,20秒完成了10次射擊,成績優異。(20秒是我瞎掰的)
再來一次,不知道誰使壞給你掛上了一個裝滿水的純凈水桶,估摸有20來公斤吧,你渾然不知,仍然全力舉槍。
啊~!good bye,肱二頭肌。

舉槍時,手臂末端畫出了一個圓弧,我們稱這個圓弧為路徑規劃Path Planning,然後為了更快的完成任務,我們盡全力賦予了這個圓弧運動一個速度(按照之前的假設,2s一次射擊),整個過程我們稱之為軌跡規劃Trajectory Planning

當槍的重量遠低於手臂力量時,你以多大速度舉槍不會有太大影響,因為這在你的肌肉承受範圍之內。但是如果你需要舉起的力量超出了合理範圍(例如前面所說單手橫舉滿的純凈水桶),你仍然要以2s的時間完成一次完整動作,就會造成肌肉拉傷,因為不合理的速度/加速度要求超出了肌肉的物理限制
肌肉如此,機器人的電機也是如此,只不過人對於手臂的控制沒有那麼精確,而電機有精確的參數。
這裡用到的參數就是電機的力矩/轉矩Torque,由力矩和慣量就可以得到所允許的最大加速度。
因此動力學的第二個作用,是在規劃機器人的運動時,充分考慮機器人動力系統的限制,在不損壞電機的情況下,規划出符合要求的軌跡(時間最短、功耗最優等)。

ok,槍打完了,我們換另一個的例子。
基本上每個人都有過細微調整某些重物位置的經歷,例如調整衣櫃位置,對準設備的螺絲孔等等,由於比較重,力氣小了推不動,稍微用點力,又推過了,神煩。
這是由於摩擦力是非線性的,靜摩擦很大,而動起來之後速度較低時的動摩擦又比較小,動靜之間切換時控制對象變化過快導致控制精度變差。
在電機低速控制中,有一種速度忽快忽慢的「蠕動」現象就是由於這個原因引起的。
因此,在高精度機器人控制中,也要考慮摩擦力的影響。
除此之外,由於參考系變化「產生」的科氏力,也在基本的動力學方程中,感興趣的可以回去翻翻教科書。
摩擦力和科氏力同樣是動力學的範疇

暫時先這些,以後有時間繼續填坑。

其實最開始想到以射擊練習作為例子來解釋機械臂動力學時,腦子裡第一個反應是Howard。

本來後兩個例子應該放幾張圖,但是高鐵上實在不方便,見諒。


歡迎關註:
OnionBots - 知乎專欄


受到 @韓峰濤和 @丁有爽的啟發,舉一個非常簡單的例子現學現賣一下,如有錯誤請輕拍。

考慮下面這個一軸的機械臂(連桿長L,質量不計),它的目標就是把黑色重物(質量M)從正下方距離L的藍點送到正上方距離L的紅點那裡。設重力加速度為g。假設沒有摩擦,電機沒有轉角、功率限制,只有力矩限制|	au|leq T,並且T=frac{1}{2}MgL

下面我們來從不同的角度看看這個設計可不可行。

運動學上來看木有一點問題:假如把軸放在原點,Forward kinematics的解應該是egin{bmatrix}x\
z
end{bmatrix}=egin{bmatrix}Lsin	heta\
Lcos	heta
end{bmatrix}吧。	heta=-180^circ	heta=0^circ的時候分別能到達藍點和紅點,所以肯定沒問題,妥妥的。

靜力學上乍一看也沒問題:不就	au=-MgLsin	heta嘛,最高點和最低點的時候都不用費勁兒,妥妥的。
但再仔細一看:不對啊,假如從-180^circ緩慢地往上轉,臨界情況需要的力矩是	au=MgL>T。這力矩不夠咋整啊?換個大電機?

那是不是不換大電機就無解了呢?然而並不是的。
動力學搬出來再想想:系統的動力學模型是
[
ML^{2}ddot{	heta}-MgLsin	heta=	au
]
由於是個二階無阻尼振蕩系統,其實完全可以通過左右搖擺~~搖上去的啊!
(此處應有驗證實驗視頻。。。)


因此,此處說明了在進行設計的時候,除了考慮運動學和靜力學之外,還應考慮動力學。當然這只是一個極度簡化的例子,但希望對於你的理解有幫助。

雖然只有四個贊,不過還是編了個程序驗證了一下:
鏈接:http://pan.baidu.com/s/1pLU2IJT 密碼:hf0q
用了簡單的SMC和一些tweaks。通過模擬可以發現,起始點在最底部的話,即使是朝一個方向沖也是沖不上去的,必須利用系統振蕩的特性盪上去。


機器人的動力學分析可以實現機器人各個關節之間的協同控制,如果僅採用運動學方法,雖然可以實現需要實現的功能,但相對於動力學控制更浪費能量,響應速度更慢;在一些要求高動態響應的場合,基本上都需要採用動力學分析才可以實現。一般而言,位置控制的帶寬相對於轉矩控制的帶寬要低的多。
其次,機器人的模擬和建模需要需要機器人的動力學模型,也只有通過動力學模型才可以更真實的模擬機器人的工作狀況,舉例來說,只有通過動力學分析,我們才可以確定機器人各個關節動態過程中的出力狀況,進而確定每個關節所需要電機及驅動器性能;
再者,對機器人做靜力學分析可以知道結構的設計需求、電機的功率等實際上是不嚴格的,機器人靜力學分析僅適用於穩態狀況下的分析,並不適合動態過程的分析;只有通過動態過程的分析才可以確定機器人的結構要求、電機功率等。很多情況下,穩態情況(靜力學)的計算結果如果直接應用於機器人的設計,往往會導致災難性後果。
最後,機器人的很多功能僅採用運動學分析根本無法完成,舉例來說,我們希望機器人抓取一個杯子,那麼此時,我們便需要控制機器人末段出力,使得末段出力不能太大從而導致杯子損壞,也不能太小從而導致抓取失敗,而此時採用運動學分析僅可以控制位置,很明顯此時運動學分析不能滿足我們的需要。


瀉藥。。。鄙人算不上什麼大牛,故爾拋磚引玉,希望能多打開些思路。
首先要明確的是幾個術語:Kinematics, Dynamics, Kinetics, 還有Statics.前面的幾個表面上從英語語法上看是近義詞,不過在機器人學科中卻有著明顯的不同:
Kinematics只考慮運動本身而不考慮造成運動的原因;比如「物體的運動改變了多少」。解決的問題和運動的「幾何學」相關聯(相關內容見下圖)。

內容來自:第3版的Introduction to Robotics Mechanics and Control
Dynamics在研究物體運動的同時研究造成運動的原因(力或力矩),比如「為什麼物 體的速度發生了變化」(見下圖)

在第3版的Introduction to Robotics Mechanics and Control一書中,作者Craig很明確的指出了Dynamics的研究對象。
Kinetics是20世紀中期Dynamics的叫法,與Dynamics沒有本質的區別。
Statics是靜力學,研究「為了使物體保持平衡狀態力和力矩應該滿足的條件」
回到題主的問題「動力學分析有什麼用」,我曾經和題主一樣的困擾,因為我本科的畢業設計就是製作一個機械臂,可當我製作的時候我才發現,真正有用的是逆動力學和編程,Dynamics analysis似乎是一個雞肋的存在,這是為什麼呢?我翻來覆去的想,把各種roboticcs的教材看了一遍又一遍尋找答案,終於得出了我自己的結論,雖然我不知道這樣的結論是否正確:
運動學,解決了機械臂的末端位置和位姿以及機器人的運動空間範圍,從而明確可以怎麼操作電機以實現期望的運動;但是,但是,但是,這是建立在你已經有一個機械臂的基礎上的!如果沒有呢?如果你要靠自己去設計一個能夠實現你的要求的機械臂呢?你是知道了「做機器人運動學分析,可以知道機械臂的末端位置和姿態以及機器人的運動範圍,這就可以知道機器人的操作空間有多大,可以知道要想實現末端手的固定位置和姿態的操作該怎麼操作電機;對機器人做靜力學分析可以知道結構的設計需求、電機的功率等。可是你該如何安排造成期望運動的力,力矩,角加速度等等變數配合你的結構設計呢?這才是Dynamics的意義——Dynamics根本就是為了實實在在的從最開始「造」一個機械臂而存在的,歐拉方程,拉格朗日方程根本上揭示了造成運動的各種變數所需要遵循的法則,這些法則是製作一個真正的機械臂所繞不過去的!
這,就是我們為什麼要研究動力學分析的原因。這是我做畢業設計後得出的最大最寶貴的經驗。
僅僅是個人觀點,並非完全正確,歡迎交流 : )


淺顯直觀地解釋機器人控制為什麼需要動力學建模

  • 問題引出

一開始,人們想要控制機器人運動時,一般根據目標軌跡與機器人的逆模型,反算出所需的力矩,再把這個力矩發送給電機,這樣就大功告成啦(圖1)。然而事實卻不盡人意,機器人著了魔似得,竟然不聽我們的話跑偏了。事後分析,發現了影響了我們對機器人的控制:外界的擾動。

圖1 開環控制框圖
討厭的擾動來源與哪呢。它主要有兩個:一個是環境施加的,比如人為對機器人施加力,風帶來的力等等(環境擾動),這種擾動我們一般可通過改變環境,使其處於較小的狀態;另一個來源是由於建模不精確和系統參數辨識不精確帶來的(系統擾動)。要想機器人聽話,我們就得想方設法幫助機器人消除系統擾動,逃離魔掌。環境擾動一般可通過改變對象所處的環境來減小,我們這裡更關心如何消除系統干擾的影響。

  • 模擬研究

瓦特創造性地將系統的輸出反饋到控制器中,經過後來人的完善,奠定了PID反饋控制在控制中舉足輕重的地位(圖2)。我們結合Simulink(圖3)做個簡單的模擬研究。

圖2 PID閉環控制框圖

圖3 SImulink建模圖

先在無擾動的情況下整定好一組PID參數值,然後測試了兩種不同程度的擾動(小擾動(1*sin)-圖4,大擾動(10*sin)-圖5),可以看出,當擾動較小時,PID可以將其壓制地很好,可當擾動過大時,PID就有心無力了......

圖4 小擾動Amp=1

圖5 大擾動Amp=10

  • 理論解釋

我們只結合控制框圖,來直觀的解釋模擬的結果。外界擾動經過反饋迴路後,會產生一個附加擾動,試想如果附加擾動能抵消外界擾動,那擾動不就消除了嘛,這也是PID反饋控制能壓制外界擾動的原理(圖6)。

圖6 PID工作原理

回顧之前我們介紹的系統擾動來源。如果我們只用PID反饋控制,相當於我們不需要任何動力學建模,那我們最終設定的PID參數並不能完美適合系統,相當於引入了很大的系統擾動,這樣我們不能完美地控制機器人。既然我們靠反饋無法把擾動全壓下去,那我們是否可以考慮,通過預測外界擾動,再通過前饋補償來解決呢?如圖7。這樣,如果外界擾動是10,我們前饋補償可以消滅掉9,那剩餘的1可由PID反饋輕鬆消滅掉。於是乎,我們需要構建一個由PID反饋控制+基於系統建模的前饋控制的控制器。

圖7 前饋+反饋控制


簡單說,動力學是解決運動與力的。設計到力與力矩的部分,都需要動力學。


以3W問題分析——
1.運動學是「是什麼」的問題:機器人的目標狀態是什麼?
2.動力學是「怎麼樣」的問題:怎麼樣達到這種目標狀態?
3.電機是完成一個動力學使命,和運動學之間沒有直接關係。

拿寫字類比——
1.運動學:這個字的什麼樣子,筆順是什麼。
2.動力學:手寫筆順的快慢、輕重是什麼。
3.電機及其指令:你的肌肉,以及它怎樣伸縮。
人是高級生物,2和3的步驟都在本能中。而機器人,則123都需要人為處理。

現在題主覺得2不重要,可能是因為一些簡單問題。
丟開動力學分析,也許可以讓機器人晃晃悠悠走一步路,但不可能讓機器人盡善盡美跳一支舞。


動力學和控制關係比較大

1.最基本的,那簡單的動力學分析為例,首先肯定要知道對象的固有頻率。如果是一個柔性較大的對象,那麼基頻的作用可以大致確定控制帶寬,避免產生較大的振動。也可做頻譜規劃,將控制對象與其他一些干擾源頻率錯開,避免共振。

2.其次,為了建立較為精確的控制模型,動力學模型的建立也是必不可少的,常用方法是分析力學。正如其他答主說的,輸入經過模型才會有輸出,只有知道精確的模型後設計控制器,才能得到精確的輸出。

3.說到控制模型,那不可避免的一個問題就是模型降階了,因為一個真實的物體肯定是無限自由度的系統(儘管常看作剛體),但隨著振動越來越受關注,貼近真實情況的模型就很有必要了。而無線維度和高維的模型顯然是不利於計算的,如何平衡理論和工程,中間就靠模型降階了(通過合理的截取或截斷,將模型階數降低,既不影響模型準確性,又使其可用於控制系統設計)。常用的方法有慣性完備性、模態價值分析和內平衡降階等,視需要選擇。

4.我估摸著題主問這個問題,是因為覺得給一定的輸入,執行機構一定會達到想要的輸出,這也就是舵機和電機的區別?這方面我並不是很清楚,畢竟不怎麼接觸,看看其他答主的吧~


動力學主要是用來建模,然後用於理解機器人設備的運動特性和控制的。運用動力學建立正確的模型,之後的控制才能夠精確穩定。如果不建模,運用自適應系統,同樣可以做到很高的精度,但總還是存在誤差的,這就好比用直線去擬合三次函數曲線,總歸會有誤差的。運用動力學模型對了,機器人控制就容易多了


等你買了一個兵人以後才發現姿勢不好擺的很,和你想像的根本不一樣。機器也是。


運動學前提是動力足夠,速度夠快,位置夠精確;
當這些條件足夠時,貌似動力學也可以不管?動力學是為了應付在動力不足,速度不夠,位置誤差等情況的?
還有運動對應的是位置控制,動力學對應的是力矩控制


建模用,沒有動力學的模型,你知道你用電機驅動以後機器人會怎麼運動?用多大的力會產生多大的加速度?動力建模是控制機械運動的第一步。


從 Mark W.Spong的簡單介紹中可以知道,運動學方程是不考慮產生運動的力和力矩,是一種幾何方式。而動力學方程則明確描述了力和運動之間的關係。


伺服驅動器,如果要精確完美的跟蹤你的位置信號,控制模型中需要動力學實時解算出數據,否則,僅靠運動學的位置信,控制精度無法保證。


動力學和運動學不同,動力學考慮到了力,也就是找到了各關節加速度,速度和每個關節的力矩之間的關係,要實現力控,必須先建立動力學模型。如果只需要知道位置和速度,那麼運動學模型和Jacobian就可以解決。


因為控制律的設計是基於模型的


推薦閱讀:

為什麼很多汽車工程師都說「NVH 是玄學」?

TAG:機器人 | 動力學 | 控制 | 工業機器人 |