六軸機械手臂的奇異點

六軸機械手臂由六組不同位置的馬達驅動,每個馬達都能提供繞一軸向的旋轉運動,其位置可參照下圖。從自由度(Degree of Freedom)的概念來看,六軸機械手臂已經滿足三維空間中的六個自由度,理論上其末端End-Effector可以到達空間中任何位置及角度,但為什麼有時候機械手臂仍然會卡住呢?這是因為六軸機械手臂存在著一些奇異點(Singularity)。
 

Figure: 6-Axis Robot
 
當機械手臂進行直線運動模式(Linear Mode),系統並未事先計算好過程中的手臂姿態(Configuration),倘若在運動過程中遇到奇異點,會造成機械手臂卡住或跳錯誤,使人相當頭痛;但如果了解奇異點,就能在把普拿疼吃完之前使工作順利地完成了。
 
機械手臂的奇異點,依發生的原因可概括為兩大類:
 
1.    內部馬達可運作範圍的極限位置:
2.    根據不同型號的機械手臂中使用之馬達,會有不同的運作範圍限制,也就是工作空間(Workspace)的概念,本文不加以贅述。
3.    數學模型上的錯誤:
4.    也是本文要介紹的重點,如同其他數學上的奇異點,它發生於「無限」的情況下,例如:任何一個除以零的數;即便「無限」在數學的觀點中已經是個習以為常的概念,但在現實的物理世界中是無法達成的。
 
====以下簡述奇異點學理上的成因====

 

運動學上的奇異點解釋

運動學(Kinematics)中,將機器手臂視為由「剛體」以及可提供平移或旋轉的「關節 (Joint)」所組成,運動學探討剛體尺寸及關節參數對應於運動鏈末端的位置及運動路徑之關係,可再劃分為兩個部分:
 
1.    正向運動學 (Forward Kinematics):
2.    在給定已知的尺寸及關節參數的條件下,去求得運動鏈末端的位置及角度;在六軸機械手臂上,就是給定各軸角度,去求得末端的笛卡爾座標;一組給定的關節參數只對應唯一個末端座標。
3.    反向運動學 (Inverse Kinematics):
4.    欲求得任何可能的關節參數,使運動鏈末端達到特定位置及角度;在六軸機械手臂上,就是從已知的末端座標,去求得各軸角度參數的組合;與正向運動學不同,一個末端位置可以由不同的手臂姿態來達成,對應不只一組的關節參數。理論上,六軸機構的一個末端位置可對應多達十六組不同的關節參數。
 
而在反向運動學中,當末端位於奇異點時,一個末端位置會對應無限多組解;起因於運動學中使用Jacobian矩陣來轉換軸角度及機械手臂末端的關係,當機械手臂中的兩軸共線時,矩陣內並非完全線性獨立,造成Jacobian矩陣的秩(Rank)會減少,其行列式值(Determinant)為零,使得Jacabian矩陣無反函數,反向運動學無法運算,是為奇異點發生處。
 

 
 
========================

 
在手臂末端接近奇異點時,微小的位移變化量就會導致某些軸的角度產生劇烈變化,產生近似無限大的角速度,而這在現實世界中是不可能的。可參考以下影片:
 
(請點擊圖片播放)

 
 
影片中預先將要通過的奇異點標示出來,且機械手臂各路徑均設定為等速運動,以方便辨別比較奇異點對機械手臂運動之影響。開始時,機械手臂以等速運動,但當機械手臂接近奇異點時,手臂末端呈現幾乎停止的狀態下,進行姿態的調整,即為上述的微小位移量造成角度劇烈變化之現象。特別提醒,影片中的運動路徑並未真正經過奇異點,只是非常接近,若機械手臂經過奇異點,運動即會停止,並出現錯誤訊息之提示。
 
在此給奇異點一個簡單的解釋,即當機械手臂的其中兩個以上的軸共線時,會導致機械手臂發生無法預期的運動狀態。

 

常見的奇異點發生時機

由於奇異點與機械手臂的姿態相關,並不是一個給定的位置,所以要列出所有的奇異點是有難度的,不過在此依照奇異點發生的狀況不同,將六軸機械手臂的奇異點分為三個種類:
 
1.Wrist Singularity (腕關節奇異點):
當第4軸與第6軸共線,會造成系統嘗試著將第4軸與第6軸瞬間旋轉180度。
 

Figure: Wrist Singularity
 
2.Shoulder Singularity (肩關節奇異點):
當第1軸與腕關節中心C點(第5軸與第6軸之交點)共線,會造成系統嘗試將第1軸與第4軸瞬間旋轉180度。此類型有個特殊的情況,當第1軸與腕關節中心共線,且與第6軸共線時,會造成系統嘗試第1軸與第6軸瞬間旋轉180度,稱之為Alignment Singularity (對齊奇異點)。
 

Figure: Shoulder Singularity
 

Figure: Alignment Singularity
 
 
3.Elbow Singularity (肘關節奇異點):
當腕關節中心C點與第2軸、第3軸共平面時,會造成肘關節卡住,像是被鎖住一般,無法再移動。
 

Figure: Elbow Singularity
 
 
以上奇異點之示範影片可參考這裡,影片中以顏色深淺代表軸之角速度,可以明顯看出上述發生之角速度瞬間增大之現象。

 

如何避免奇異點

 
奇異點常發生於兩軸共線時,當機械手臂的軸數量增加時,發生奇異點的位置與機會同時增加。但因為機械手臂的自由度變多,也表示有更多可以避開奇異點的運動路徑可以選擇。六軸機械手臂擁有六個自由度,可以達到空間中任何位置,而七軸機械手臂就是為了避開奇異點而產生,多一個自由度來增加避開奇異點的路徑選擇性,也同時可進行複雜度更高的運動,因為這額外的軸,七軸機械手臂又被稱作Redundant Robot,下面影片是YASKAWA的MOTOMAN SIA七軸機械手臂。
 


 
也有人提出將工具與法蘭面(Flange)的關係進行調整,當工具的方向平行於法蘭面法線方向時,把工具調整一個微小的角度(5°~15°),可減少運動路徑遇到奇異點的機會。雖無法完全避免,但因成本低且可簡單地進行測試,不失為一個好方法。
 

Figure: Add a Small Angels
 
理論上,機械手臂到達奇異點時角速度無限大,為避免損壞,機械手臂製造商會以軟體進行保護,當速度過快時機械手臂停止,並產生錯誤訊息。使用者也可以限制機械手臂經過奇異點附近時的速度,使其緩慢地通過,避免停機。
 
而在ABB機械手臂控制器中,當第五軸角度為0°,即第四軸與第六軸共線時,會出現提醒訊息,並進行以下兩種步驟來避免奇異點問題:
 
1.    增加目標點,調整姿態,避免第五軸角度出現0°的情況,這也是有時機械手臂運行時會有一些無法預期的動作的原因。
2.    修改MOVEL指令為MOVEJ指令,在非必須以直線運動的工作需求下,使用關節運動取代直線運動,以MOVEJ指令可使機械手臂自主調整姿態避免運行至奇異點附近。
 
最有效的方法還是在電腦上的模擬軟體先行確認,嘗試將運動路徑調整至沒有奇異點。ABB的Robot Studio模擬功能可以監控運動路徑是否接近奇異點,方便在接近奇異點附近的位置修改路徑,以順利完成工作。

 
參考資料:
http://blog.robotiq.com/why-singularities-can-ruin-your-day
http://blog.robotiq.com/dealing-with-singularities-on-universal-robots
http://blog.robotiq.com/kinematics-why-robots-move-like-they-do
http://www.scimao.com/read/2391720