從頭開始學 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/)