Unitree G1 EDU SDK 入門:SDK2、ROS 2 與 CycloneDDS 安全連線

如果目標是進行 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。

專案普通 G1G1 EDU開發判斷
Secondary Development/YESSDK 專案應書面確認 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++ SDK2Ubuntu 20.04、GCC 9.4.0編譯並讀取原生訊息直接套用 ROS 2 依賴
Python SDK2Python 3.8+、cyclonedds 0.10.2快速讀取與記錄狀態把 Python 便利性當成即時保證
unitree_ros2 HumbleUbuntu 22.04+Humble,推薦發現話題並讀取狀態假設所有 G1 功能完整支援
unitree_ros2 FoxyUbuntu 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 和頻率
Unitree G1 實拍照片
這張 CC0 照片展示 G1 外觀,但不能據此確認 EDU 選件、SDK 權限或韌體設定。 來源:Sayanesy / Wikimedia Commons。授權:CC0 1.0

第一次成功應定義為穩定讀到狀態資料

首次連線要在機器人固定、周圍清空、現場監護和物理停止手段就緒的條件下進行。先讓系統靜止,不釋出運動或力矩命令;確認裝置型號、關節數量、電池狀態和控制模式都與記錄一致。

在 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 硬體介面解釋了狀態介面、命令介面和控制器管理器需要怎樣對應真實裝置。

以五個步驟整理Unitree G1 EDU SDK 入門:SDK2、ROS 2 與 CycloneDDS 安全連線的判讀重點
依正文與一手資料整理的繁體中文實務卡。來源:Physical AI Lab。

從實驗室網路走向共享網路時要重新劃定權限

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、關節與電池狀態,再完成停止、工作區和型號核對後,才進入受限控制測試。

已核驗的官方資料

最後查核:2026 年 8 月 6 日