---
# System prepended metadata

title: 建立 UR10 + Robotiq 2F-140 自訂模型流程筆記
tags: [Isaac-Lab, Isaac, Isaac-Sim]

---

# 建立 UR10 + Robotiq 2F-140 自訂模型流程筆記

> 以下內容來自 Nvidia 深度學習學院課程 -- 「Train Your Second Robot in Isaac Lab」

---

## 一、任務說明

本次任務是將 **UR10 機械手臂** 與 **Robotiq 2F-140 夾爪** 組合成單一機器人模型，
並為後續在 **Isaac Lab** 進行控制策略訓練做準備。

訓練目標：
讓機械手臂的當前姿態（current pose）對齊到指定的目標姿態（goal pose）。

---

## 二、整體流程概念

Isaac Sim 與 Isaac Lab 的角色分工如下：

1. **Isaac Sim**：建立與模擬機器人環境（相當於「模擬舞台」）。
2. **Isaac Lab**：在模擬環境中訓練控制策略（相當於「學習平台」）。
3. **完整流程**：
   設定模型 → 在 Lab 中訓練 → 回到 Sim 驗證成果。

---

## 三、OpenUSD 的基本觀念

Isaac Sim 與 Omniverse 的底層架構皆建立於 **OpenUSD**。
OpenUSD 讓模型之間的組合具備「非破壞性」與「可重複使用」特性。

常見三個核心概念：

| 概念                       | 說明             | 作用        |
| ------------------------ | -------------- | --------- |
| Reference（參照）            | 引用外部模型，不直接複製內容 | 模型共享與即時更新 |
| Payload（載入）              | 載入模型實體，會佔用檔案空間 | 適合獨立場景使用  |


**為什麼重要：**
使用 Reference 能同時保留模型關聯與靈活性，
這是製作機器人組合模型的核心機制。



---

## 四、開啟 Isaac Sim 並設定引用模式

### 1. 啟動 Isaac Sim

進入 Isaac Lab 目錄後開啟終端機：

* Linux

  ```
  ./isaaclab.sh --sim
  ```
* Windows

  ```
  .\isaaclab.bat --sim
  ```

若使用獨立安裝版本，也可直接啟動 Isaac Sim。

### 2. 設定引用模式

進入：

```
Edit → Preferences → Stage → Import
```

將 **Drag & Drop USD Method** 設為 `reference`。

**理由**：
設定為 Reference 模式能確保場景以非破壞式方式引用模型，
而非複製完整內容，讓整個檔案更輕量且易於更新。

<p style="display:flex; align-items:center; justify-content:center;">
  <img src="https://hackmd.io/_uploads/SJAKoJTpex.png" width="90%">
</p>>

---

## 五、加入 UR10 機械手臂模型

在 **Content Browser** 前往：

```
/Isaac/IsaacLab/Robots/UniversalRobots/UR10/
```

將 `ur10_instanceable.usd` 拖入 **Stage Panel**。

**說明**：
Instanceable 模型可被多次重用，能節省記憶體，
也可在不同場景重複引用相同基底。

---

## 六、加入 Robotiq 2F-140 夾爪模型

在 **Content Browser** 前往：

```
/Isaac/Robots/Robotiq/2F-140/
```

將 `Robotiq_2F_140_physics_edit.usd` 拖入 **Stage Panel**。

---

## 七、移除多餘的 Articulation Root

在 **Stage Panel** 中選取 `Robotiq_2F_140_physics_edit`。
在 **Property Editor** 右側找到 **Physics Articulation Root**，
點擊紅色 X 移除。

**理由**：

* 每個「Articulation Root」代表一個獨立的關節系統。
* 若機械手臂與夾爪都有各自的 Root，Isaac Sim 會視為兩個分離剛體。
* 我們希望整體作為一個統一的機械鏈（UR10 → 夾爪），
  所以必須保留單一 Root（UR10 的那個）。

<p style="display:flex; align-items:center; justify-content:center;">
  <img src="https://hackmd.io/_uploads/r1m43JaTxl.png" width="90%">
</p>>

---

## 八、將夾爪掛載至手臂末端

### 1. 暫時關閉位置保留設定

進入：

```
Edit → Preferences → Stage → Authoring
```

將 **Keep World Transform When Reparenting** 關閉。
Isaac Sim 5.0 版本可設為 **Ask**。

**為什麼要關閉**：
關閉後重新掛接（Reparent）時，夾爪會移動以對齊新的父節點（UR10 末端）。
若保持開啟，位置不會變動，夾爪仍會漂浮在原處。

### 2. 掛接夾爪至 UR10 末端

在 **Stage Panel** 中，將夾爪拖曳到：

```
ur10_instanceable/ee_link
```

若出現提示，選擇 **Keep Prim Transform**。

此時夾爪會自動對齊至手臂末端位置。

---

## 九、恢復設定並整理層級結構

為保持場景清晰：

1. 開啟 Preferences → Stage
   將 **Keep World Transform When Reparenting** 開啟。
2. 將夾爪 Xform（`Robotiq_2F_140_physics_edit`）拖回 World 下層。
3. 若出現提示，選擇 **Inherit Parent Transform**。

**理由**：
這樣可保持結構簡潔，同時保留正確的物理位置。

---

## 十、Parenting（父子層級）原理說明

USD 場景中，每個物件稱為 **Prim**。
當一個 Prim 放在另一個 Prim 下方時，稱為 **Parenting（掛接）**。

* 預設行為是：保持世界座標不變（位置不動）。
* 若關閉「Keep World Transform」，物件會依父物件重新對齊。

這個機制能靈活控制模型在空間中如何繼承座標與運動。

---

## 十一、建立物理連結（Fixed Joint）

目前夾爪雖在手臂末端，但在物理層面尚未相連。
若按下 Play，夾爪會自由落下。

### 操作步驟

1. 展開機械手臂與夾爪的 Xform 層級。
2. 選取手臂的 `ee_link`。
3. 按住 Ctrl，選取夾爪的 `robotiq_base_link`。
4. 右鍵 → Create → Physics → Joint → Fixed Joint。

**說明**：

* Fixed Joint = 剛性連接，兩物體間不再有相對運動。
* 選擇順序會決定連接方向。
  （先選手臂，再選夾爪 → 表示從手臂連到夾爪。）

**結果**：
夾爪現在與手臂成為一個連動的物理系統。
按下 Play 時不再會下墜。

---

## 十二、儲存與驗證

1. 儲存場景為：

   ```
   UR-with-gripper.usd
   ```

   若使用 Brev 環境，建議儲存在 `/workspace/`。
2. 按左側 Play，驗證夾爪是否穩定附著。

**說明**：
這樣就完成了一個可重用的完整組合模型，
能直接在 Isaac Lab 中呼叫與訓練。

---

## 十三、補充：關鍵概念原理整理

| 名稱                    | 功能                | 在此任務的作用                   |
| --------------------- | ----------------- | ------------------------- |
| **Reference**         | 引用外部 USD 模型，不複製內容 | 用於同時載入 UR10 與 2F-140 模型   |
| **Payload**           | 載入模型實體（完整嵌入）      | 本任務未使用，避免檔案臃腫             |
| **Parenting**         | 在場景層級中掛接父子關係      | 將夾爪掛到 UR10 末端             |
| **Articulation Root** | 關節系統的起點，控制所有子關節   | 保留 UR10 的 Root，移除夾爪的 Root |
| **Fixed Joint**       | 剛性物理連接，無相對運動      | 讓夾爪與手臂成為一體，不會掉落           |

---

## 十四、總結表

| 步驟                      | 目的          | 原因說明              |
| ----------------------- | ----------- | ----------------- |
| 設定 reference 模式         | 以非破壞式引用模型   | 確保原始模型可更新與共享      |
| 加入 UR10 與夾爪模型           | 匯入元件        | 建立組合基礎            |
| 移除 Articulation Root    | 維持單一關節系統    | 避免重複物理系統          |
| 關閉 Keep World Transform | 讓夾爪自動貼合手臂末端 | 重新掛接位置正確          |
| 建立 Fixed Joint          | 物理連結手臂與夾爪   | 防止模擬時掉落           |
| 儲存整合 USD                | 建立可重用模型     | 用於後續 Isaac Lab 訓練 |


---
希望我的內容對你有所幫助，想看到更多內容歡迎追蹤我的 IG、Threads 等平台。
Threads：[@minimalist_shine](https://www.threads.com/@minimalist_shine)
IG：[@minimalist_shine](https://www.instagram.com/minimalist_shine/)