---
# System prepended metadata

title: 從頭開始學 Isaac Sim 07 -- 串接 ROS 2 Humble
tags: [Isaac-Sim]

---

從頭開始學 Isaac Sim 07 -- 串接 ROS 2 Humble
===

到目前為止，我們的 SimpleRobot 已經能移動、看見（RGB 相機）與感知（Lidar）。接下來要做的，就是把這些資料串接到 ROS 2 Humble，讓我們能在 RViz 進行即時可視化，並與外部應用整合。

### 1 安裝 ROS 2 Humble

在 Ubuntu 22.04 [安裝 ROS 2 Humble](https://docs.ros.org/en/humble/index.html)（建議使用 Debian package 安裝方式）。

參考官方指令，安裝後確認 `ros2 topic list` 能正確執行。

額外安裝 Isaac Sim ROS 2 Bridge 所需的 vision_msgs 套件。

ROS 2 是整個生態系統的中樞，沒有正確安裝與初始化，就無法接收 Isaac Sim 傳出的感測器資料。vision_msgs 則是橋接套件的必要依賴。

### 2 啟動 Isaac Sim 並開啟專案


開一個 Terminal，先執行 source `/opt/ros/humble/setup.bash。`

> 如果有把 source 寫進 .bashrc 或是 .zashrc 就不用每次都做。

進入你的專案資料夾後，使用 ./isaac-sim.sh 啟動 Isaac Sim（可能需要一點時間載入）。

在 Isaac Sim 裡選 File → Open Recent，打開上一個模組儲存的 SimpleRobot 場景。

這樣可以確保 Isaac Sim 啟動時就繼承 ROS 2 環境變數，才能順利與 ROS 2 溝通。

### 3 啟用 ROS 2 Bridge 擴展

在 Isaac Sim 裡選 Window → Extensions。搜尋「ROS2」，找到 ROS 2 Bridge 擴展。確認它已啟用，如果沒啟用就打勾啟用。

> ROS 2 Bridge 提供 OmniGraph 節點，讓 Isaac Sim 能把感測器數據轉成 ROS 2 Topic。

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

### 4 建立 Lidar 資料串流的 ActionGraph

新建一個 ActionGraph，命名為 ROS2_LidarStream。在下方的 ActionGraph 窗格，使用左方的搜尋框新增以下節點：

- On Playback Tick（每幀觸發）
- Isaac Read Lidar Beams（讀取 Lidar 數據）
- Isaac Read Simulation Time（讀取模擬時間）
- ROS 2 Publish Laser Scan（輸出為 ROS Topic）


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




連線方式：

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


在 ROS2 Publish Laser Scan 裡設定：

- TopicName = scan_lidar
- FrameID = sim_lidar

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


> 這樣能確保每幀都讀取 Lidar 數據，並以正確的時間戳發送到 ROS 2。

#### 注意事項

如果 Lidar 偵測到自己的輪子，請把它的高度調高一點。

### 5 在 RViz 中查看 Lidar 數據

在 Isaac Sim 按 Play，開始串流數據。

在 Ubuntu Terminal：
```
source /opt/ros/humble/setup.bash
```

ros2 topic list 確認有 scan_lidar。

rviz2 開啟 RViz。

在 RViz 裡：

Fixed Frame 設成 sim_lidar

Add → By Topic → laser scan → OK

現在可以看到紅點代表的障礙物。（非常淺的紅色）

> RViz 是 ROS 的標準可視化工具，透過它能即時觀察 Lidar 偵測到的環境，驗證串流是否正確。

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


### 6 Summary

到這裡，我們已經完成：

1. 安裝 ROS 2 Humble 並設定環境
2. 啟動 Isaac Sim 並啟用 ROS 2 Bridge 擴展
3. 建立 Lidar 資料串流的 ActionGraph
4. 在 RViz 即時觀察 Lidar 資料

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