此文章之範例適用於下列條件:
TMflow 軟體版本: 1.76.6300 或以上。
TM 手臂硬體版本:所有版本皆適用。
其他特殊軟硬體需求: 無 (額外軟硬體需求,若無則可忽略不寫)
請注意,新舊版本之差異可能導致操作介面、步驟上會有所差異。
問題描述 #
對稱性問題
物體具對稱性,如圓柱體,立方體,導致3D模型比對時,發生比對的VisionBase被旋轉,以下為旋轉範例
取物姿態問題
3D取物時,有2個位置是我們必須教導的,當前位置,及取物位置,其中繞線及過度旋轉易發生於當前位置至取物位置之間,若是能計算出兩個位置之間的旋轉關係,進而補正,就能避免過度旋轉發生
以立方體為例,手臂上有外掛相機,若是固定當前位置,並教導了一個取物姿態如左圖,相機方向為朝前,而下一次比對時卻是另一種結果,手臂的TCP就要旋轉去取物,若是相機上有線,或許會發生纏繞的情形
VisionBase原理 #
VisionBase旋轉原理
若是能計算出當前位置與要確實要下去取物的姿態,其旋轉多少角度,便能將旋轉較多的情形,VisionBase的RZ加上180度進行補正
如何調整旋轉角
先藉由相機拍攝物件取得視覺座標,走VisionBase至物體的正上方,再調整RZ至相機適當的位置,假設此文章之後的RZ調整後為90度,線及相機均不會有大轉的問題,此時以這個相機位置方向調整XYZ至當前位置
調整VisionBase
假設調整後的RZ為90,接著就可以計算當前位置的RobotBase及取物位置的VisionBase轉換成RobotBase的旋轉關係,若是須旋轉角度大於90度,我們就將VisionBase的RZ加上180度,使其走較不會繞線的RZ方向
TMflow設定及實例 #
TMflow設定
以取對稱之白色箱體為例,置於相機下方,透過手臂於當前位置走置箱體的取物位置,過程中透過編輯Flow來避免相機繞線
- Initial_point
- 初始位置,此為拍照點位
- Find_box
- 相機進行拍攝,尋找箱體位置並給出visionbase
- 透過visionbase走到取物位置
- Current_position
- 為當前位置,建立此位置時,相機及繞在手臂上的線材須順暢
- Calculate_Rotation
- 計算當前位置及取物位置之間的旋轉關係
- 須先建立以下變數
- Calculate_Rotation
- 計算旋轉設定如下
- If node
- 判斷RZ的旋轉是否小於90度
- Yes : 不改變visionbase的取物位置
- No : 將visionbase的取物位置的RZ加上180
- 判斷RZ的旋轉是否小於90度
實例執行
若是執行視覺任務後,找到的視覺座標如下,我們透過display將var_Record_Rotation呈現出來,RZ座標近乎為0,表示取物位置將與當前位置沒有過多的旋轉,所以可以直接走我們visionbase下的取物位置
若是執行視覺任務後,找到的視覺座標如下,找到另一個方向的箱體,RZ座標旋轉超過90度,表示取物位置將與當前位置旋轉過多,若是沒有調整取物位置的RZ,將會出現右方繞線情形,而調整取物位置,將加上180,就能改善過度繞線旋轉問題