Udacity机器人软件工程师课程笔记(十三)-运动学-机械手介绍及分类
運動學
在研究控制機械臂之前,有必要學習一些運動學知識,比如學習反向運動學內容,解決命令任意串行操縱器沿預先計劃的軌跡朝向目標的問題等等。
下面是一個大綱,介紹了“運動學-機械手介紹及分類”這個主題下的一些主要的內容。
- 自由度(DoF)
- 參考框架
- 廣義坐標
- 聯合類型
- 主要類型的串行機械手
- 串行機械手應用
1. 自由度
“自由度”(DoF)是指定義空間機制的位置或配置所需的最小變量數。
實例:兩個自由度的機械手
這是一個兩個自由度的機械手,其原點時p0(0, 0),中間節點p1, 和最終控制點p2。
下面使用matplotlib來完成對兩自由度機械臂的模擬。
import matplotlib.pyplot as plt
import numpy as np# 定義一個函數來計算機械手的位置
def compute_arm_config(link1_length, link2_length, joint0_angle, joint1_angle):joint1_x = link1_length * np.cos(joint0_angle)joint1_y = link1_length * np.sin(joint0_angle)p2_x = joint1_x + link2_length * np.cos(joint1_angle)p2_y = joint1_y + link2_length * np.sin(joint1_angle)return joint1_x, joint1_y, p2_x, p2_y# 隨機生成一個機械手的位置
link1_length = np.random.random() * 30 + 20
link2_length = np.random.random() * 30 + 20
joint0_angle = np.random.random() * 2 * np.pi
joint1_angle = np.random.random() * 2 * np.pijoint1_x, joint1_y, p2_x, p2_y = compute_arm_config(link1_length, link2_length, joint0_angle, joint1_angle)print("joint0_angle =", round(joint0_angle * 180 / np.pi, 1), "degrees")
print("joint1_angle =", round(joint1_angle * 180 / np.pi, 1),"degrees")
print("End Effector at x =", round(p2_x, 1),"y =", round(p2_y, 1))base_x = 0
base_y = 0plt.plot([base_x, joint1_x, p2_x], [base_y, joint1_y, p2_y])
# 畫出原點位置并以一個藍色正方形表示
plt.plot(base_x, base_y, 'bs', markersize=15, label='Base')
# 畫出節點1(joint-1)位置并以一個紅色圓形表示
plt.plot(joint1_x, joint1_y, 'ro', markersize=15, label='Joint-1')
# 畫出最終執行器的位置以一個綠色三角形表示
plt.plot(p2_x, p2_y, 'g^', markersize=15, label='End Effector')
# plot圖的x, y坐標范圍
plt.xlim(-100, 100)
plt.ylim(-100, 100)
plt.legend(fontsize=15)
plt.show()
以下為程序的輸出,因為機械手的坐標是隨機生成的,所以每次運行程序得到的圖形都不會一樣。
下面是compute_arm_config()函數的數學解釋。
x1=l1cos(Θ1)x_1=l_1cos(Θ_1)x1?=l1?cos(Θ1?)
y1=l1sin?(Θ1)y_{1} = l_{1}\sin(\Theta_{1})y1?=l1?sin(Θ1?)
x2=l2cos(Θ1+Θ2)x_2=l_2cos(Θ_1+Θ_2)x2?=l2?cos(Θ1?+Θ2?)
y2=l2sin?(Θ1+Θ2)y_{2} = l_{2}\sin(\Theta_{1}+\Theta_{2})y2?=l2?sin(Θ1?+Θ2?)
x2=l1cos(Θ1)+l2cos(Θ1+Θ2)x_2=l_1cos(Θ_1)+ l_2cos(Θ_1+Θ_2)x2?=l1?cos(Θ1?)+l2?cos(Θ1?+Θ2?)
y2=l1sin?(Θ1)+l2sin?(Θ1+Θ2)y_{2} = l_{1}\sin(\Theta_{1}) +\ l_{2}\sin(\Theta_{1}+\Theta_{2})y2?=l1?sin(Θ1?)+?l2?sin(Θ1?+Θ2?)
當我在編寫程序時,我忘記了在第二個節點的位置需要加上第一個節點的角度,這個失誤在以上的程序已經進行了更正。
2.廣義坐標
同樣的邏輯,計算一個2自由度機械手的末端執行器的位置可以應用到任何類似的n自由度系統的關節和鏈接約束到一個平面。對于每個新的關節/鏈接對,都要添加一定程度的自由度,并且需要一個額外的坐標來完整地描述系統的配置。
用于描述系統的瞬時配置(時間快照)的坐標通常稱為廣義坐標。“廣義”一詞指的是這樣一種概念:對于任意的系統,這些角可以是角、x和y坐標,甚至是一些沒有幾何意義的其他量。
在前面的2自由度手臂示例中,所使用的廣義坐標集由兩個關節角組成。但是,也可以用其他的廣義坐標,比如,第一個連桿的角度和末端執行器的x和y位置,或者關節和末端執行器的x和y位置。然而,在這些情況下,會有3和4個坐標,分別。這是因為關節和末端執行器的x和y位置不是獨立的。它們通過固定鏈接長度(L)的約束相互關聯
DoF =獨立廣義坐標個數
描述系統構型所需的獨立廣義坐標的個數等于自由度的個數。在2自由度機械手的練習中選擇了兩個特定的關節角度相對于一個特定的參考系,但是我們也可以很容易地選擇其他角度相對于其他參考系。事實上,描述一個系統的廣義坐標的可能選擇數是無限的,但明智的選擇是使用哪一組坐標最能簡化需要解決的問題。
在串行機械手的機器人技術中,經常會遇到“位型空間(configuration)”或“關節空間(joint space)”這個術語,它指的是機械手可能具有的所有可能構型的集合。理解位型空間對于路徑規劃和避障非常重要。
3.空間坐標
一個剛體在空間坐標中具有六個自由度
- 位置(x, y, z)
- 角度(α,β,γ)
一個點在空間中具有3個自由度
- 位置(x, y, z)
4.節點連接類型
機構學運動副
如圖所示,節點可以分為具有一個自由度(DoF)的低階對和具有兩個或三個自由度(DoF)的高階對。用于串行操作器,最常見的關節類型是轉動副和移動副,分別允許一個轉動自由度和一個平移自由度。
出于建模目的,高階對總是可以被低階對的集合所取代,因此在不失一般性的情況下,我們可以將注意力僅限于轉動副和移動副的1自由度的關節連接類型。
這里所示的系列機械手有n=3個關節:2個轉動關節(圓柱)和1個移動關節(正方形)。每個關節連接兩個連桿,所以連桿總數為n+1 = 4。注意,θ1θ_1θ1?描述的轉動連接地面和關節1和關節2之間的連桿上。因此,任意具有3個1自由度關節的串聯機械手的自由度總數為:
DoF=6(連接體的數量)?5(1自由度關節數量)DoF = 6(連接體的數量)- 5(1自由度關節數量)DoF=6(連接體的數量)?5(1自由度關節數量)
=6(3)?5(3)= 6(3)-5(3)=6(3)?5(3)
=3=3=3
結論:
對于只有轉動關節和/或移動關節的串行機械手,自由度的數量總是等于關節的數量。這個規則的例外是當機械手的兩端都是固定的(閉合鏈鏈),如下圖所示。
如果機械手的自由度超過了給定任務的要求,則稱為運動學冗余或過度約束。例如,如果用一個三自由度臂來定位平面上的剛體,它將有一個冗余度,因為只需要兩個廣義坐標來定位平面上的一個點。然而,為了同時控制平面上剛體的位置和方向,需要一個具有至少三個自由度的機械手。
運動學冗余機械手具有許多優點。額外的自由度意味著他們更靈巧(末端執行器可以達到更多的點與任意方向)和更好地避免障礙。因為它們在路徑規劃方面有更大的靈活性,它們也可以更有效地利用能源。然而,冗余是有代價的,需要更復雜的控制手段。
5.機械手類型
機械手大致有一下幾種類型
- 笛卡爾(PPP)
- 圓柱(RPP)
- 擬人(RRR)
- SCARA(RRP)
- 球形(RRP)
首先先介紹一下工作區的概念
工作區
工作空間是末端效應器可到達的所有點的集合,并且是在為任務選擇操縱器時的主要設計約束。
工作空間可以分為兩個區域:可到達的工作空間,即簡單術語工作空間所暗示的內容.
以及靈巧的工作空間。靈巧工作空間是末端效應器可以任意方向到達的所有點的集合。靈巧的工作空間是可到達工作空間的子集。
在許多情況下,例如,加工或涂漆,工具尖端必須以特定配置與環境相互作用以便具有期望的結果,從而確保任務完全位于操縱器的靈巧工作空間內是。但是,精確定義靈巧工作空間的邊界可能非常困難
(1)笛卡兒機械手(ppp)
笛卡爾機械手的前三個關節是具有相互正交平移軸的平移關節。
優點:
? 可以具有很高的定位精度
? 大型有效載荷(龍門架)
? 最簡單的控制策略,因為沒有旋轉運動
? 非常堅硬的結構
缺點:
? 所有固定裝置和相關設備必須位于其工作空間內
? 需要大的操作量
典型應用:
? 碼垛
? 重型裝配操作(例如汽車和飛機機身)
(2)圓柱機械手(RPP)
顧名思義,圓柱形機械手的關節是腕部中心相對于基部的圓柱坐標。
優點:
? 大,易于可視化工作范圍
? 它們的尺寸和有效載荷相對便宜
缺點:
? 平均速度低
? 比SCARA重復性更低
典型應用:
? 取決于尺寸,用于精密裝配的小型版本,用于材料處理的大型版本,機器裝載/卸載
(3)擬人機械手(RRR)
擬人化(有時稱為鉸接式)操縱器提供相對較大的工作空間和緊湊的設計。第一個旋轉關節具有垂直旋轉軸,可以被認為是模仿人類在腰部旋轉的能力。另外兩個旋轉關節具有垂直于“腰部”的旋轉軸,并且模仿一個DoF“肩部”和一個DoF“彎頭”。
優點:
? 大工作空間
? 設計緊湊
缺點:
? 位置精度和可重復性不如其他一些設計好
典型應用:
? 焊接,噴漆,去毛刺,材料處理
(4)SCARA(RRP)
SCARA,或選擇性順應裝配機器人手臂,是由山梨大學(日本)教授Hiroshi Makino在20世紀80年代初發明的。SCARA機器人通常采用單個旋轉腕部,其旋轉軸線平行于其他兩個旋轉關節。由于基部連桿通常容納用于前兩個關節的致動器,因此致動器可以非常大并且移動連桿相對較輕。因此,通過這種設計可以獲得非常高的角速度。臂在垂直(z軸)上非常堅硬,但在xy平面上相對柔順,這使其成為諸如將釘子或其他緊固件插入孔中的任務的理想選擇。
優點:
? 快速
? 結構緊湊
缺點:
? 需要大垂直運動的操作
典型應用:
? 平面環境中的精密,高速,輕型組裝
(5)球形(RRP)
像圓柱形機械手一樣,球形機械手的手腕中心也可以描述為眾所周知的坐標系。這種運動類型最著名的版本可能是斯坦福的Scheinman手臂,由Victor Scheinman于1969年發明。
它被制造商改編成為組裝和點焊產品的領先機器人,從用于汽車的燃油泵和擋風玻璃刮水器到用于打印機的噴墨墨盒。
優點:
? 大工作空間
缺點:
? 復雜坐標更難以可視化,控制和編程
? 精度低
? 比較慢
典型應用:
? 物料搬運
? 點焊
在這里沒有涉及的另一種類型,稱為并行機械手。并聯機械手具有許多變型,但它們的特征在于都具有至少一個閉合運動鏈。動力學和控制策略可能比串行操縱器復雜得多,但一般來說,由于它們的結構剛性,它們具有更精確的運動。
總結
以上是生活随笔為你收集整理的Udacity机器人软件工程师课程笔记(十三)-运动学-机械手介绍及分类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Udacity机器人软件工程师课程笔记(
- 下一篇: Udacity机器人软件工程师课程笔记(