機械臂的運動規劃,假如在笛卡爾空間規劃的步長足夠小,是否還需要在關節空間規劃?
如題
題主的問題答案是確定的,可以。@惺忪眼的回答是不是有一點誤解題主的問題了呢?舉個栗子,看是否是題主問題這種情況:例如我對於6軸通用機器人規划了一條末端直線,規定好控制周期為1ms,那麼我將起始到末端的每1ms的點都規劃好,分別進行求取逆解,再統一下發到運動控制器中。規劃末端路徑時候的速度可以自由規劃,例如走雙S曲線。這樣映射到關節空間內,每一個關節的速度就都是連續的,加速度也是連續的。前提是求取逆解得正確啊!我之前這麼做過,並且實驗沒有問題。
問題是當深入做下去時候,會發現一直規劃末端位置有很大弊端。
例如當我手動點擊Jog -Z方向時候,勉強可以按照上面的方法規劃,但我同時又點擊了Jog-X,對於空間的位置再按照上面方法求就很麻煩了。正確的辦法應該是利用雅克比做速度控制,外面加位置環,Robotics Vision and Control 這本書中給出的這樣子。這樣解決我上面說的同時走兩個方向速度都沒有問題了。看了一下感覺很多答主對題目的理解不太統一,題目本身也描述的不是很詳細。
我先猜測一下題主想表達的問題吧。我們知道機器人做運動插補有兩種模式:- 第一類:規劃好笛卡爾空間內的一系列點,機器人逐點運動。我們不關心點和點之間的具體軌跡,那麼這時候點和點之間的運動做的是關節空間的插補。即用逆運動得出每個點在關節空間目標,然後每個軸自己做插補。
- 第二類:規劃笛卡爾空間內的運動軌跡,比如直線,圓周等。這時我們做的是笛卡爾空間的插補。我們可以計算每個運動周期內,機器人末端的位置速度之類。然後每個運動周期用逆運動計算關節空間的參考量。
註:這裡我們不可能同時做兩類插補,關節空間和笛卡爾空間本身就有運動學上的對應關係。就好比,第一種相當於一個方程y=f(x),已知x去求y。第二種相當於已知y去求x。y和x同時已知是沒有意義的。
題主的意思大概是想問:做第一類運動的時候,如果點和點直接的距離足夠小,是不是可以近似於第二類運動,省去關節空間的插補?
我的看法是這樣,之所以我們在第一種情況下要做關節空間插補,是為了保證各個軸的同步性。每個軸同時達到目標位置,這樣機器人末端才是真正達到目標點。除非你每個點都讓機器人停下來,那無所謂,只要等到所有軸都運動完畢。如果機器人在經過這一系列點時是保持速度的,那麼一旦失去同步性,機器人是無法精確抵達每個點的。
當然有一種情況,你點步長小到只要一個運動周期,那這本身就做不了插補。這本質上已經等於第二種情況了。你已經把空間里每個運動周期的點都計算好了,自然不需要插補,也做不了更進一步的插補。在一般情況下,如果機械臂要走準確的笛卡爾空間軌跡,那麼在笛卡爾空間做軌跡規劃+逆解就好了。就目前計算機和實時操作系統的發展水平而言,完成1ms伺服刷新周期完全不在話下。所以題主的問題中不是還需不需要在關節空間中做軌跡規劃的事情,而是不能再做這樣的事情。再做的話,就會破壞笛卡爾空間軌跡的準確性。在工程中,為避免機械臂的每個關節在運動過程中產生過大的角加速度,控制器會將逆解好的關節角度序列點在緩衝區中做適當的平滑處理(以犧牲小區段笛卡爾空間軌跡的準確性為代價)。不過這個平滑處理只在角加速度超出閾值的情況下才起作用。
對於很多機械臂來說,一個末端位置可以對應不同的的關節姿態。那麼如果開始時採用了某些關節姿態而不是另一些關節姿態,就可能導致在後續的軌跡中無法達到所需的速度、加速度。甚至可能導致無法沿規定的軌跡繼續移動。
因此,只規劃末端位置,不規劃關節姿態,其結果在一些特定條件下,是不安全的。尤其是一個關節兩側的極限並不對稱的時候。我覺得應該是可以的,不過很多控制器都是自帶各種樣條差值的,直接調用就可以了,起碼我用過的運動控制卡都是自帶各種樣條差值的,用的時候寫一句話就行了。有很多應用應該是很難做到插值(個人理解,如果做了差值也會造成控制的滯後,關於這點歡迎討論),比如很多主從控制方案,主手的軌跡完全是不可預測的。在這種情況下,如果想讓位置和速度都跟隨的準確,應該只需要把笛卡爾系的期望位置和期望速度直接換算到關節空間就可以了吧~~上面感覺惺忪眼的答覆貌似更符合題主的提問
機器臂的運動規劃可以分為兩個層面:一是笛卡爾空間的路徑規劃(末端位姿);一是關節空間的運動參數設計(機器人構型)。實際作業中,機器人需要綜合考慮碰撞檢測、奇異點迴避、工作空間限制、軸超限保護等約束條件,更嚴格的還應考慮運動的平穩性(主要取決於關節速度、加速度)、關節力矩和關節力約束等等。如果在做路徑規劃的同時,考慮了這些因素,即路徑是採用高階樣條曲線插值或者擬合生成的,理論上是可以不再進行關節空間空間規劃的。但是,本質上還是考慮了關節空間的規劃,畢竟機械臂的末端位置與機器人關節參數之間不是一對一的映射關係,不可避免的要做類似於最優構態逆運動學解算的工作。所以,笛卡爾空間和關節空間的規劃是相互制約的,沒有隻考慮一點就可以把機械臂運動規劃做得很好的解決方案吧!
樓上幾位大神已經講了很多答案。如果只做粗插(粗插插補到的步長滿足精度要求),首先帶來的弊端是每步逆運動學的計算負荷相對大。如果直接在笛卡爾空間插補到底的話,各個軸的驅動器的閾值需要較為複雜的前瞻處理(lookahead)。笛卡爾空間軌跡精度需要正運動學來檢驗。
關節空間做插補的話,相關驅動器閾值能夠簡單的檢驗;由笛卡爾空間粗插到關節空間的軌跡,再做精插,其精插後的誤差也可以通過各個軸自己來track。
不管是只做粗插還是粗精插都做,其最後的插補周期要和關節驅動器的位置環的cycle time要一樣。
同意范奇 - 知乎大神的答案你的意思是在task space把路徑細分成一段一段小直線嗎,然後讓機器人走這些小直線段?這是一種路勁規劃的辦法,可以不需要joint space規劃,但是簡單粗暴。簡單:即使是很複雜的路徑,你也可以用這樣的細分的方法來完成路徑規劃。粗暴:這樣規劃的路徑你可以想像是這樣的,
這樣的路徑在形態上都不是連續的,跟談不上速度和加速度上的連續。
用這樣的方法規劃的路徑會讓機器人在每個線段上都會經歷加速,勻速,減速。機器人會在每個拐點停下來(速度為0)。你可以想像跳機械舞的那種卡頓感。雖然你把步長調得極小,人是看不出路徑的不連續了,但是機器人自己是知道的,這樣的路徑在機器人看來是費勁的,費時間的。樓主要問的是一個數學問題。
六軸機械手求逆解後,出現多解現象,適當處理後,逆解Θ是關於XYZ αβγ連續的函數。
即便如此,在XYZ αβγ對T做到二階導數連續(加速度連續)的情況下,僅僅能保證Θ對T可導(角速度存在,非無窮大);宏觀表現為:各軸在跨越象限的時候,角速度會出現速度突變,即出現奇點。
工程處理方法:
1、在單一象限內運動, 只要直角坐標系下規劃即可,保證關節規劃的連續性。
2、跨象限規劃:① 可在交界處,使用關節規劃。
缺點:循跡誤差增大;優點:運動連貫,處理簡單。
② 將過象限的軸,在交界處設置中間點。
缺點:運動不連續,中間會停頓,且計算量大。
要看伺服剛度 伺服剛度達不到就沒法走直線 末端抖動比較嚴重
推薦閱讀: