---
# System prepended metadata

title: 從頭開始學 Isaac Sim 06 -- 幫你的機器人裝感測器
tags: [Isaac-Sim]

---

從頭開始學 Isaac Sim 06 -- 幫你的機器人裝感測器
===

在上一章節裡，我們已經可以用鍵盤控制 SimpleRobot 移動。接下來，要讓它能「看見」與「感知」周遭環境，我們會幫它加上感測器。這裡會示範 RGB 相機與 2D Lidar 的安裝與設定，並透過視覺化工具來確認它們的輸出。

### 1 建立感測器的安裝位置

在 SimpleRobot 上新增一個 Xform，命名為 Front_Sensor。

用手動的方式，把它移到機器人前上方，作為感測器的固定基座。這時候它還只是一個座標系。

接著，必須在 Front_Sensor 上加上 Rigid Body。

> **為什麼要加上 Rigid Body？**
Xform 本身只是定位器，沒有物理特性。加上 Rigid Body 之後，才能透過 Joint 與車身建立物理關聯，並確保相機、Lidar 等子物件會隨著機器人移動，而不是固定在原地。這就像把行李架牢牢鎖在車頂一樣，之後裝的感測器才會跟著車子一起動。

另外，為了標記位置，需要新增一個小 Cube（縮放 0.1, 0.1, 0.1），作為感測器的可視化標記。

最後建立 Fixed Joint（固定關節），把 Front_Sensor 固定在 Cube 上（父物件 Cube → 子物件 Front_Sensor）。

> 選取（1）Cube（2）Front_Sensor > Add > Physics > Joint > Fixed Joint

這樣做是為了讓所有感測器都能跟著機器人移動，並集中管理。Xform 就像是「安裝架」，而小 Cube 則是「定位點」，方便後續放置相機與雷射。

 <div style="display:flex; align-items:center; justify-content:center; gap:20px;">
  <img src="https://hackmd.io/_uploads/BymPZYGcgx.png" width="40%">
  <img src="https://hackmd.io/_uploads/SJnYGKfcex.png" width="33%"></div>

#### Notes

建立 Fixed Joint 時，一定要確保 Cube 為 Body0、Front_Sensor 為 Body1。這樣能保持正確的主從關係，避免後續模擬不穩定或異常。

在 Fixed Joint 裡，Body0 通常被當成「主要物件」，Body1 會去跟隨它。如果 Cube（車身）是 Body0，Front_Sensor 就會乖乖跟著車身動。

反過來，如果 Front_Sensor 是 Body0，等於「車身要跟著感測器」動，這就不符合邏輯。


#### 已知問題
有時候無法直接在 Xform 上加 Rigid Body，可以先把子物件移走，再加上 Rigid Body，最後再移回去。

### 2 安裝 RGB 相機

把剛剛的小 Cube 改名為 Sensor_Mount。

在 Sensor_Mount 上新增 Rigid Body with Colliders Preset。

在 Sensor_Mount 上建立 Camera，命名為 Robot_Camera。

將相機旋轉 -90 度（Y 軸），讓它朝向前方。

把相機擺在 Sensor_Mount 的邊緣。

> 相機需要朝前，才能看到機器人的行進方向。Sensor_Mount 的設計，確保相機與其他零件不會互相干擾。

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


#### 檢查方式

在 Viewport 選單中，切換到 Robot_Camera，就能看到相機視角。

新增一些立方體、圓錐、圓柱當作障礙物，再切回 Robot_Camera 視角，確認它能「看見」。

想要同時觀察兩種視角，可以開啟 Window > Viewports → 開啟 Viewport1 與 Viewport2，一個保持 Perspective，一個切換到 Robot_Camera。


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


### 3 安裝 2D Lidar

選取 Front_Sensor > Create > Isaac > Sensors > PhysXLidar > Rotating。

把 Lidar 移到 Sensor_Mount 上方。

在 Raw USD Properties 中勾選 Draw Lines 與 Draw Points。

按下 Play，就會看到感測光束在旋轉。

Lidar 可以模擬真實雷射掃描，讓機器人偵測前方障礙物。

> 注意：這裡使用的是 Physics Lidar，必須讓場景中的物件具有物理屬性才能被偵測。


<div style="display:flex; align-items:center; justify-content:center; gap:20px;">
  <img src="https://hackmd.io/_uploads/rk7Pz9Mcel.png" width="74%">
  <img src="https://hackmd.io/_uploads/SkSOzcfqex.png" width="40%"></div>

檢查方式也很簡單，把障礙物選起來 > 右鍵 Add > Rigid Body with Colliders Preset。

再次按下 Play，這時候光束就會被障礙物阻擋，表示感測成功。

如果光束打到車輪，可以把 Lidar 往上移，或調整旋轉速度。

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


### 4 小結
到這裡，我們已經完成了：

1. 建立感測器的安裝架 Front_Sensor

2. 加上 RGB 相機，並驗證了視角輸出

3. 加上 2D Lidar，並成功偵測障礙物


現在 SimpleRobot 不僅能移動，還能「看」與「感知」，為之後的 ROS2 串接做準備。

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