下是完整的 micro-ROS(ESP32) ↔ ROS 2(主機) 透過 UART 的通訊測試流程,包含硬體接法、程式架構、Agent 啟動與 topic 測試,幫助你確認 UART 通訊是否正常建立。
🎯 測試目標
ESP32(透過 UART)使用 micro-ROS client 發布 ROS 訊息 →
ROS 2 主機接收這些訊息並使用 ros2 topic echo
印出內容
🛠️ 硬體準備
裝置 | 功能 | 備註 |
---|---|---|
ESP32 | micro-ROS client | USB/UART 與主機連接 |
Ubuntu PC / Pi | ROS 2 + micro-ROS Agent | 可為主機或容器執行環境 |
UART 線 | ESP32 <-> Host | RX ↔ TX, TX ↔ RX, GND 接一起 |
🧱 整體架構圖
🔧 步驟 1:ESP32 韌體製作
修改 firmware/apps/app.c
發布 topic:
設定 UART 傳輸方式:
編譯 + 燒錄:
🖥️ 步驟 2:主機端啟動 micro-ROS Agent
在 Host 或容器內執行以下指令:
-
若有成功連線,會看到:
🧪 步驟 3:驗證 ROS 2 topic
打開另一個終端機:
✅ 補充小技巧
項目 | 指令或備註 |
---|---|
查看連接埠 | ls /dev/ttyUSB* |
改 UART 波特率 | configure_firmware.sh 內可修改 |
Agent log 更多細節 | 加上 -v6 或 --debug |
✅ 成功驗證代表你已建立:
-
ESP32 ➜ UART ➜ micro-ROS Agent ➜ DDS ➜ ROS2 topic 完整鏈路!
==============================================================
以下是完整的 ESP32 micro-ROS Subscriber 範例,可以讓 ESP32 接收來自 ROS 2 主機端送出的 topic 資料,並在 ESP32 上執行對應動作(例如改變 LED 狀態、數值顯示、控制馬達等)。
🎯 目標
ESP32 透過 UART 接收 ROS 2 主機傳送的 topic 資料(std_msgs/msg/Int32
),並透過 callback 函式做處理,例如顯示收到的數值。
📁 修改 firmware/apps/app.c
✅ app.c(ESP32 micro-ROS Subscriber)
🔧 編譯 + 燒錄
🖥️ ROS 2 主機端發送測試指令
在主機端執行以下指令傳送數值到 ESP32:
-
ESP32 端會列印:
🧪 可以進一步做的應用
收到數值 | ESP32 行為範例 |
---|---|
1 | 開啟 LED |
0 | 關閉 LED |
其他數值 | 控制馬達、顯示器、蜂鳴器等 |
✅ 測試完成條件
你看到:
-
Agent 顯示 ESP32 連線成功
-
ESP32 成功列印收到的 ROS topic 資料
代表「Subscriber from ROS2 ➜ ESP32」通訊鏈路運作正常!
沒有留言:
張貼留言