運動規劃
運動規劃會將任務目標轉換為符合機器人運動學、碰撞檢查與動作限制的運動軌跡。
在完成姿態估測後,系統已經知道目標物件相對於機器人的位置。接下來,機器人必須決定如何從目前的姿態移動至目標位置,同時避免超出 Joint Limit,並避免與自身或周圍環境發生碰撞。
在機械手臂的工作流程中,運動規劃主要回答以下問題:
- 機器人是否能到達目標位置?
- 應使用哪一組關節組態?
- 移動過程中如何避免碰撞?
- 需要哪些接近與離開動作?
- 產生的軌跡是否適合執行?
產生的軌跡會傳送至機械手臂動作階段進行執行與監控。
在機械手臂工作流程中的角色
典型的運動規劃流程如下:
Object Pose → End-Effector Target → Inverse Kinematics → Collision-Free Path → Time-Parameterized Trajectory
規劃器通常需要以下資訊:
- 機器人目前的關節狀態
- 機器人模型與規劃配置
- 目標姿態或關節空間目標
- Workspace 中的碰撞對象
- 關節、位置、方向與路徑約束
輸出通常是一條關節軌跡,其中包含各關節的位置與時間資訊;若套用了 Time Parameterization,則還會加入 Velocity 與 Acceleration。
運動規劃負責產生這條軌跡;如何將軌跡傳送至規劃器並驅動實體關節,將在 機械手臂動作 中說明。
機器人模型與規劃配置
規劃器在評估可行性與碰撞之前,需要一份正確的機器人模型。
| 元件 | 用途 |
|---|---|
| URDF/Xacro | 描述 Robot Link、Joint、Limit 與 Collision Geometry |
| SRDF | 定義 Planning Group、End Effector、Named State 與 Allowed Collision |
| Joint State | 描述機器人目前的關節配置 |
| TF | 維護 Robot Link 與外部 Frame 之間的關係 |
| Kinematics Configuration | 定義 Inverse-Kinematics Solver 與相關搜尋參數 |
| Execution / Controller Configuration | 定義啟用執行功能時,如何將規劃完成的軌跡傳送給機器人 |
Controller Configuration 是執行 Trajectory 所必需的,但僅計算 Motion Plan 時不一定需要。
Visual Mesh 可讓機器人在 RViz 中更容易辨識,而簡化後的 Collision Geometry 則通常用於提高碰撞檢查效率。
Robot Driver、URDF、MoveIt Configuration 與 Controller 所使用的 Joint Name 與 Link Name 必須保持一致。
從物體姿態到末端執行器目標
偵測到的物體姿態通常不是可以直接傳送給規劃器的姿態。
操作應用必須將物體姿態轉換為一個或多個夾爪目標姿態:
object pose
|
+--> pre-grasp pose
+--> grasp pose
+--> lift pose
+--> pre-place pose
+--> place pose
+--> retreat pose
這些 Target 需要考慮:
- End Effector 與 Tool Center Point 之間的 Transform
- 預期的抓取方向
- 指爪或夾爪尺寸
- 安全的接近距離
- 物件尺寸與方向
- 放置位置與堆疊高度
例如,抓取姿態可以位於方塊中心,而預抓取姿態則會在其上方保留 Offset,讓機器人能沿著受控方向接近目標。
逆向運動學 Inverse Kinematics(IK)
Cartesian Target 描述 End Effector 應位於何處,但 Robot Controller 實際控制的是個別 Joint。
**Inverse Kinematics(IK)**會尋找一組或多組關節配置,使 End Effector 能到達指定的位置與方向。
IK Request 可能在以下情況失敗:
- 目標位於機器人可達 Workspace 之外。
- 在該位置無法達成指定姿態。
- 所需關節會超出其 Limit。
- 解答會造成碰撞。
- 解算器無法在時間內找到解答。
由於機器手臂對同一個目標可能存在多組 IK 解答,因此不同解答可能會影響 Path Length、Clearance,以及與 Singularity 的距離。
使用 MoveIt 進行規劃
MoveIt 2 是 ROS 2 Manipulator 常用的 Motion Planning Framework。它會整合 Robot Model、Current State、Target、Planning Scene、Kinematics 與 Planning Algorithm。
簡化後的 MoveIt Planning Flow 如下:
- 讀取最新的機器人狀態。
- 更新規劃場景與碰撞物件。
- 定義目標姿態或關節空間目標。
- 視需要求解 Inverse Kinematics。
- 在 Robot Configuration Space 中搜尋滿足設定限制的無碰撞路徑 。
- 根據設定的速度與加速度限制,對路徑進行時間參數化。
- 回傳軌跡,供驗證或執行。
MoveIt 可使用 OMPL 提供的 Sampling-Based 規劃器。適合的規劃器與參數會依機械手臂、工作空間、條件與目標而有所不同。
規劃場景與碰撞檢測
規劃場景用來表示機器人及其周圍環境。
內容可以包含:
- 機器人碰撞幾何
- 工作臺、安全牆、夾具或工作邊界
- 必須避開的物件
- 安裝於夾爪的物件
- 允許碰撞關係
碰撞檢查必須同時考慮:
- Self-Collision: Robot Link 彼此發生碰撞。
- Environment Collision: 機器人與外部物件發生碰撞。
抓取物件後,應將該物件附加至規劃場景中的 End Effector。這樣規劃器在規劃 Lift 與 Transfer Motion 時,才能將被抓取物件的尺寸納入考量。
規劃場景的可靠程度取決於其輸入資料。如果碰撞檢查缺失或不準確,即使數學上產生了有效路徑,在真實 Workspace 中仍可能不安全。
限制條件與軌跡限制
運動規劃必須遵守系統的物理限制與任務限制。
常見的限制包括:
- 關節位置限制
- 最大關節速度與加速度
- End-Effector Position 或 Orientation Constraint
- 工作邊界
- 指定的接近方向
- 在整段 Motion 中都必須持續成立的 Path Constraint
在找到幾何路徑後,Time Parameterization 會為每個 Waypoint 指定 Timestamp、速度與加速度。
在軌跡傳送給控制器之前,這些數值都必須符合設定限制。
在初期整合階段,降低速度與 Acceleration Scaling 是有幫助的,但這並不能取代碰撞檢查或安全評級硬體功能。
範例:方塊 Pick-and-Place 規劃
在彩色方塊工作流程中,Pose Estimation 會提供目標方塊的位置與近似方向。接著 Application 會產生所需的夾爪姿態。
簡化流程如下:
- 將選定方塊的姿態轉換至 Robot Base Frame。
- 在方塊上方產生預抓取姿態。
- 從當前狀態規劃至預抓取姿態。
- 規劃一段受控的接近動作到抓取姿態。
- 抓取成功後,將方塊附加至 Planning Scene 中的 End Effector。
- 規劃離開姿態,使物件離開工作區域。
- 在目標位置上方產生放置姿態。
- 規劃 Transfer、Placement 與 Retreat Motion。
- 規劃返回等待姿態的動作。
如果目標無法到達或規劃失敗,Application 不應假設前一步驟成功而直接繼續下一個動作。系統應回報失敗,並在安全的情況下進入預先定義的恢復或等待狀態。
了解 Robotic Suite 範例
原始即時 Manipulator Demo 使用 MoveIt,根據偵測到的方塊姿態規劃機器手臂動作。
可下載的離線範例則不同:它會在 RViz 中重播先前錄製的 Perception Result、/joint_states 與 TF 資料。
因此,即使沒有原始相機或 Manipulator,使用者仍可以觀察整個工作流程,但播放過程中不會重新計算新的 MoveIt 規劃。
此範例主要展示 Perception Result 與 Robot Motion 如何整合,而若要部署至其他 Manipulator,仍需要:
- 對應機器人的 URDF/Xacro 與 MoveIt 配置
- 正確的運動學與路徑規劃群組
- 相機到機器人座標轉換
- 與實際工作空間相符的規劃場景
- 相容的機器人驅動與關節控制器
- 抓取、放置、異常處理與恢復機制等任務邏輯
請參考 Manipulator
驗證運動規劃
在允許執行之前,應確認:
- 啟動狀態與機器人目前的關節狀態一致。
- 目標姿態使用預期的坐標系。
- IK 解符合所有關節限制。
- 軌跡在目前的規劃場景中沒有碰撞。
- 速度與加速度均符合要求。
- End-Effector 的 Approach 與 Retreat Direction 適合該任務。
- 最終姿態與夾爪避讓空間合實際操作。
- 如果環境或目標已改變,規劃結果仍然有效。
在將工作流程連接至實體硬體之前,可以先使用 RViz 視覺化機器人模型、目標姿態、規劃場景與規劃軌跡。
重點整理
- 運動規劃會將目標轉換為經過碰撞檢測的機器人軌跡。
- Object Pose 必須轉換為符合任務需求的 End-Effector Pose。
- MoveIt 依賴正確的機器人模型、當前姿態、TF Tree 與規劃場警。
- IK 用來判斷 Cartesian Target 是否能透過有效的關節姿態到達。
- 碰撞檢查必須同時考慮機器人、環境與被搬運的物件。
- Robotic Suite 範例只會重播已錄製的動作,不會產生新的規劃。
- Valid Plan 必須先完成檢查,才能傳送給控制器。
下一步: 將驗證完成的軌跡傳送至控制器,並在機械手臂動作中監控執行狀態。