如果目標是進行 SDK 開發,第一步不是安裝 ROS 2,而是確認訂單和裝置屬於 G1 EDU。Unitree 官方產品表把普通 G1 的 Secondary Development 標為“/”,G1 EDU 則標為“YES”;普通 G1 的 13,500 美元起價也不是 G1 EDU 價格,EDU 仍需 Contact sales。
軟體路徑同樣不能混用:C++ SDK2 的官方預編譯基準是 Ubuntu 20.04 與 GCC 9.4.0,unitree_ros2 則推薦 Ubuntu 22.04 與 ROS 2 Humble,並以 CycloneDDS 0.10.2 為機器人側相容基準。安全的首次驗證是透過乙太網和 DDS 持續讀到 IMU、關節與電池狀態,而不是直接執行行走、特技或力矩示例。
二次開發前先把普通 G1 與 G1 EDU 分開
Unitree G1 官方產品表同時列出普通 G1 和 G1 EDU,但兩者的開發定位不同。普通 G1 的 Secondary Development 沒有支援標記,G1 EDU 才寫有 YES。採購時應在合約、銘牌和設定清單中確認 EDU 版本、手部、腰部、腕部、計算模組與可用介面,而不是隻根據外觀判斷。
普通 G1 的起價為 13,500 美元,頁面明確不含稅和運費;G1 EDU 的價格為 Contact sales。這兩個狀態不能合併成“13,500 美元即可獲得 SDK 開發版”。如果還在選擇型號,可先看宇樹 R1、G1、H1 與 H2 比較和宇樹機器人價格與購買指南。
G1 EDU 約 35 千克以上,官方自由度範圍為 23 至 43,取決於腰、手與腕部選項;約 2 小時電池時間也是製造商給出的近似值,而非每種動作下的保證。開發程式碼必須讀取實際關節設定和韌體能力,不能把某個示例的關節陣列直接套到所有 G1 EDU。
| 專案 | 普通 G1 | G1 EDU | 開發判斷 |
|---|---|---|---|
| Secondary Development | / | YES | SDK 專案應書面確認 EDU 設定 |
| 公開價格 | 13,500 美元起,不含稅運 | Contact sales | 普通版價格不能替代 EDU 報價 |
| 自由度 | 按具體設定 | 23 至 43 | 程式碼與訊息需匹配實機 |
| 使用風險 | 動力人形機器人 | 動力人形機器人 | 均需隔離區、監護與停止措施 |
SDK2、Python 介面和 ROS 2 是三條不同的環境路徑
unitree_sdk2 官方倉庫是 C++通訊與控制庫。目前 README 給出的預編譯環境為 Ubuntu 20.04 LTS,支援 aarch64 與 x86_64,編譯基準包括 CMake 3.10 以上、GCC 9.4.0 和 Make。這一組要求不能自動替換成 ROS 2 Humble 環境。
unitree_sdk2_python是另一條 Python 路徑,要求 Python 3.8 以上,並列出 cyclonedds 0.10.2、NumPy 和 OpenCV。Python 介面方便讀取和原型驗證,但不表示所有底層示例都與 C++倉庫一一對應。
unitree_ros2 官方倉庫透過 ROS 2 與 Unitree DDS 訊息和示例互動,測試組合包括 Ubuntu 20.04+Foxy,以及推薦的 Ubuntu 22.04+Humble。專案應先選一條主路徑,建立可復現容器或主機記錄,再討論是否把其他介面放進同一系統。
| 路徑 | 官方目前基準 | 適合的首次目標 | 常見誤區 |
|---|---|---|---|
| C++ SDK2 | Ubuntu 20.04、GCC 9.4.0 | 編譯並讀取原生訊息 | 直接套用 ROS 2 依賴 |
| Python SDK2 | Python 3.8+、cyclonedds 0.10.2 | 快速讀取與記錄狀態 | 把 Python 便利性當成即時保證 |
| unitree_ros2 Humble | Ubuntu 22.04+Humble,推薦 | 發現話題並讀取狀態 | 假設所有 G1 功能完整支援 |
| unitree_ros2 Foxy | Ubuntu 20.04+Foxy | 維護既有環境 | 隨意更換 CycloneDDS 分支 |
CycloneDDS 版本、網路卡和地址必須同時匹配
Unitree 的 ROS 2 說明指出,機器人側使用 CycloneDDS 0.10.2。Foxy 流程示例構建 releases/0.10.x,Humble 流程則可以跳過單獨構建步驟。這裡的含義是遵循目前官方相容路徑,而不是“版本越新越好”;升級 DDS 後應重新驗證發現、序列化和 QoS 行為。
官方乙太網示例把開發 PC 設為 192.168.123.99、掩碼 255.255.255.0,並要求在 CYCLONEDDS_URI 中寫入真實網路介面。第一次連線時應關閉與機器人無關的 Wi-Fi、VPN 和多餘 DDS 介面,記錄網路卡名稱、路由與防火牆狀態,避免把發現失敗誤判成機器人故障。
網路連通只證明 IP 層可達,不能證明訊息類型、QoS 和韌體完全一致。先確認倉庫分支、訊息包與實機版本,再透過`ros2 topic list`觀察機器人實際暴露的話題;不要根據部落格或另一型號的命名猜測控制話題。遇到感測器有資料而命令無反應時,可參考ROS 2 感測器與命令 QoS逐項比較可靠性、歷史深度和截止期限。
| 檢查層 | 只讀驗證 | 失敗時先排查 |
|---|---|---|
| 乙太網 | PC 與機器人網段可達 | IP、掩碼、網路卡、VPN、防火牆 |
| DDS 發現 | 能看到預期參與者與話題 | CYCLONEDDS_URI、介面、版本 |
| 訊息 | 狀態訊息持續更新且欄位合理 | 訊息定義、倉庫分支、韌體 |
| QoS | 訂閱穩定,無異常丟失 | reliability、history、depth 和頻率 |

第一次成功應定義為穩定讀到狀態資料
首次連線要在機器人固定、周圍清空、現場監護和物理停止手段就緒的條件下進行。先讓系統靜止,不釋出運動或力矩命令;確認裝置型號、關節數量、電池狀態和控制模式都與記錄一致。
在 ROS 2 路徑中,先 source 正確環境並執行`ros2 topic list`,再使用倉庫中的 G1/H1/H1-2 狀態讀取示例,例如`read_low_state_hg`,觀察 IMU、關節位置、速度與電池訊息是否持續更新。倉庫存在 G1 低層與狀態示例,說明可以從這些訊息入手,但不能據此宣稱 G1 所有功能均已完整 ROS 2 化。
把只讀資料儲存下來,記錄時間戳、頻率、空值、跳變和斷連恢復。可用rosbag2 記錄、回放與 QoS 指南建立第一次基線。只有在狀態鏈路可重複、訊息與實機設定匹配後,才有條件評估下一階段的受限命令。
| 順序 | 動作 | 透過標準 | 此時不要做 |
|---|---|---|---|
| 1 | 核對 G1 EDU 與設定 | 訂單、銘牌、關節和韌體一致 | 按普通 G1 假設開發權限 |
| 2 | 固定網路卡與 DDS 環境 | 穩定發現參與者和話題 | 同時開啟多條不明網路路徑 |
| 3 | 讀取低層狀態 | IMU、關節、電池持續且合理 | 傳送行走或力矩命令 |
| 4 | 記錄並重連 | 斷連後按流程恢復且紀錄完整 | 把一次成功當成相容證明 |
控制示例必須在模型、模式和停止鏈確認後再執行
低層控制示例可能繞過高層行為保護,特技或行走示例也會讓約 35 千克以上的機器人迅速進入人員空間。Unitree 明確提醒人形機器人結構複雜、動力強,應與人員保持足夠安全距離;部分功能仍處在開發或測試過程中。
下一階段應先限定單個關節或低幅動作、設定速度與角度上限、確認支撐和落腳空間,並安排一名不負責敲命令的安全觀察員。急停與保護停機的職責不同,可在機器人急停與保護停機中先釐清。沒有物理停止手段時,不應以軟體終端中斷代替。
如果準備接入 ros2_control,還要先理解官方 Unitree 訊息路徑與通用硬體介面之間的適配層,不能因為兩者都使用 ROS 2 就假定已經相容。ros2_control 硬體介面解釋了狀態介面、命令介面和控制器管理器需要怎樣對應真實裝置。

從實驗室網路走向共享網路時要重新劃定權限
DDS 自動發現對實驗室除錯很方便,卻可能在共享網路中暴露參與者、話題和命令面。第一次連線可使用與其他辦公裝置隔離的有線網段,隨後再設計認證、存取控制、紀錄和更新流程。不要把機器人控制介面直接暴露到網際網路。
ROS 2 與 DDS 機器人安全可用於檢查參與者身份、金鑰、網路分割槽和最小權限。開發 PC 還應固定依賴版本,儲存倉庫 commit 或 tag,並記錄韌體、訊息包和 CycloneDDS 版本,避免數週後無法復現首次連線。
這套入門流程的終點不是讓 G1 EDU 走起來,而是得到一條可審計的證據鏈:買的是支援二次開發的設定,軟體環境符合官方目前說明,網路和 DDS 穩定,狀態訊息與實機一致,停止與權限邊界已經建立。動作開發應在這條基線之上逐級擴充。
常見問題
普通 G1 也能直接使用 SDK2 和 ROS 2 開發嗎?
不能僅憑普通 G1 的價格和外觀這樣判斷。Unitree 產品表只在 G1 EDU 的 Secondary Development 一欄標記 YES;開發專案應向銷售確認 EDU 訂單設定、韌體、介面與權限。
Ubuntu 22.04 與 ROS 2 Humble 是否是官方推薦組合?
是,unitree_ros2 目前把 Ubuntu 22.04+Humble 列為測試且推薦的組合。但 C++ SDK2 預編譯基準是 Ubuntu 20.04 與 GCC 9.4.0,兩條路徑不應無計劃混裝。
G1 EDU 第一次連線應該執行哪個動作示例?
先不要執行動作示例。用`ros2 topic list`和`read_low_state_hg`等只讀路徑確認 DDS、IMU、關節與電池狀態,再完成停止、工作區和型號核對後,才進入受限控制測試。
已核驗的官方資料
- Unitree:G1 與 G1 EDU 官方產品表
- Unitree Robotics:unitree_sdk2
- Unitree Robotics:unitree_sdk2_python
- Unitree Robotics:unitree_ros2
最後查核:2026 年 8 月 6 日