---
# System prepended metadata

title: 從頭開始學 Isaac Sim 04 -- 添加控制器
tags: [Isaac-Sim]

---

從頭開始學 Isaac Sim 04 -- 添加控制器
===

### 1 建立 Differential Controller

在前面，我們讓 SimpleRobot 能手動移動。不過這樣還需要我們自己去調參數，每一次模擬都要重新部屬，非常不方便。

所以在這節，要學會建立一個「差速控制器」（Differential Controller），讓機器人能透過控制訊號自動去移動。

### 2 什麼是 Articulations（關節系統）

首先要先理解一個核心概念：Articulations。它的作用就是讓物理引擎能正確計算「機器人骨架與輪子」的運動關係。

可以把它想像成「骨架系統」：如果 Mesh（網格）是雕像的外表，Collider（碰撞體）是保護罩，那 Articulation 就像是「骨頭與關節」，讓你的機器人能真的動起來，而不是一個死板的模型。


### 3 建立 Articulation Root

操作方式很簡單：

1. 在 Stage 視窗找到 SimpleRobot 的 xform
2. 右鍵 → Add → Physics → Articulation Root

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

> 若想確認有無加入成功，到右下角的 Property 視窗中，檢查有無 Articulation Root 的區塊。

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


**為什麼要先做這一步？**
因為控制器必須有「能夠驅動的骨架」，否則它不知道該怎麼去推動機器人。這就像你要開車，得先確定車子真的有輪子和引擎。



### 4 加入 Differential Controller

接著我們要透過 OmniGraph 建立控制器，在 4.5 與 5.0 版本中操作如下：

1. 在上方選單 Tools → Robotics → OmniGraph Controllers → Differential Controller
2. 這時候會跳出一個設定視窗

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

在這裡我們需要設定以下參數：

* Robot Prim：加入 SimpleRobot
* Wheel Radius（輪子半徑）：假設直徑是 0.75，那半徑就是 0.375
* Wheel Distance（輪距）：設定為 1.5
* Joints（控制關節）：選擇後輪的兩個關節，因為我們要靠後輪來驅動


### 5 認識 OmniGraph 節點

建立完成後，在 Stage 裡會多出一個 Graphs 資料夾，裡面有 differential\_controller。

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


打開之後，你會看到四個節點：

1. On Playback Tick：每一幀（Frame）都會觸發後續節點，就像心臟跳動一樣。
2. Differential Controller：計算機器人移動的速度指令。左邊是輸入，右邊是輸出。
3. Articulation Controller：把速度指令轉換成輪子轉動，讓機器人真的跑起來。
4. MakeArray：用來放要控制的關節名稱，可以是一個，也可以是一組。

最後在 differential\_controller 上點擊右鍵，找到 Open Graph 就可以在下方的 Action Graph 畫面會看到 4 個方塊，彼此之間有連線，像是一條訊號流動的管線。

<div style="display:flex; align-items:center; justify-content:center; gap:20px;">
  <img src="https://hackmd.io/_uploads/BJaEeY6txg.png" width="30%">
  <img src="https://hackmd.io/_uploads/Sk15gKTFee.png" width="52%">
</div>

### 6 測試控制器

現在按下 Play，會發現機器人靜止不動，因為預設的 Desired Linear Velocity（期望線速度）是 0。

你可以打開 Differential Controller，把它調成：

* Desired Linear Velocity = 1 → 向前移動
* Desired Linear Velocity = -1 → 後退
* Desired Angular Velocity = 1 → 旋轉

> Differential Controller 可以從 Action Graph 或是 Stage 直接打開。

###  7 Summary

這一步我們成功讓 SimpleRobot 擁有「自動駕駛的基礎骨架」：

* Articulations 負責讓物理正確運算
* Differential Controller 負責把指令轉換成運動
* OmniGraph 節點則把這整個流程串接起來

現在你的機器人已經能透過差速控制器移動，不再需要手動拖拉參數。下一步，我們會用鍵盤來操作，能夠更直覺地控制它的行走方向。


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