跳至主要内容

運動規劃

運動規劃會將任務目標轉換為符合機器人運動學、碰撞檢查與動作限制的運動軌跡。

在完成姿態估測後,系統已經知道目標物件相對於機器人的位置。接下來,機器人必須決定如何從目前的姿態移動至目標位置,同時避免超出 Joint Limit,並避免與自身或周圍環境發生碰撞。

motion-planning-flow

在機械手臂的工作流程中,運動規劃主要回答以下問題:

  • 機器人是否能到達目標位置?
  • 應使用哪一組關節組態?
  • 移動過程中如何避免碰撞?
  • 需要哪些接近與離開動作?
  • 產生的軌跡是否適合執行?

產生的軌跡會傳送至機械手臂動作階段進行執行與監控。


在機械手臂工作流程中的角色​

典型的運動規劃流程如下:

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 如下:

  1. 讀取最新的機器人狀態。
  2. 更新規劃場景與碰撞物件。
  3. 定義目標姿態或關節空間目標。
  4. 視需要求解 Inverse Kinematics。
  5. 在 Robot Configuration Space 中搜尋滿足設定限制的無碰撞路徑 。
  6. 根據設定的速度與加速度限制,對路徑進行時間參數化。
  7. 回傳軌跡,供驗證或執行。

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 會產生所需的夾爪姿態。

簡化流程如下:

  1. 將選定方塊的姿態轉換至 Robot Base Frame。
  2. 在方塊上方產生預抓取姿態。
  3. 從當前狀態規劃至預抓取姿態。
  4. 規劃一段受控的接近動作到抓取姿態。
  5. 抓取成功後,將方塊附加至 Planning Scene 中的 End Effector。
  6. 規劃離開姿態,使物件離開工作區域。
  7. 在目標位置上方產生放置姿態。
  8. 規劃 Transfer、Placement 與 Retreat Motion。
  9. 規劃返回等待姿態的動作。

如果目標無法到達或規劃失敗,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 必須先完成檢查,才能傳送給控制器。

下一步: 將驗證完成的軌跡傳送至控制器,並在機械手臂動作中監控執行狀態。