Unitree Go2 SDK
Geliştirme Rehberi.
Unitree Go2, DDS (Data Distribution Service) tabanlı açık bir geliştirme mimarisiyle gelir. Ekosistemin merkezinde CycloneDDS üzerine kurulu resmî unitree_sdk2 (C++) framework'ü bulunur; çevresinde resmî Python arayüzü, ROS2 paketleri, MuJoCo simülatörü ve pekiştirmeli öğrenme çatısı yer alır. Tamamı BSD-3-Clause lisansıyla açık kaynaktır.
Bu rehber, Unitree'nin resmî geliştirici dokümantasyonunun ("Go2 SDK Development Guide") yapısını Türkçe olarak karşılar ve ekibimizin Go2 platform ailesiyle (Go2-W dahil) Türkiye'de yürüttüğü saha çalışmalarından edindiği birinci-el deneyimlerle tamamlar. Genel ekosistem bakışı için Unitree SDK Rehberi sayfamıza bakın — bu sayfa tamamen Go2'ye özeldir.
unitree_sdk2 (C++)
Resmî çekirdek SDK — CycloneDDS tabanlı; SportClient, düşük seviye kontrol ve Go2 örnek programları.
unitree_sdk2_python
Resmî Python arayüzü (paket adı unitree_sdk2py) — hızlı prototipleme, araştırma ve eğitim.
unitree_ros2
ROS2 Foxy/Humble entegrasyonu — robotun native DDS topic'lerine köprüsüz erişim.
unitree_mujoco
SDK kodunu gerçek robota geçmeden simülasyonda test etme; sim-to-real doğrulama.
unitree_rl_gym
Pekiştirmeli öğrenme çatısı — Train → Play → Sim2Sim → Sim2Real akışı.
Hangi Go2 Hangi SDK Yeteneğine Sahip?
Resmî Unitree spesifikasyon tablosu, resmî arayüz dokümanları ve topluluk teyitlerinin sentezine göre geliştirme yetenekleri modele göre şöyle dağılır:
| Yetenek | Go2 Air | Go2 Pro | Go2 X | Go2 EDU |
|---|---|---|---|---|
| Resmî ikincil geliştirme (SDK) | Desteklemez | Desteklemez | Kısmi* | Tam destek |
| Ethernet üzerinden DDS (kutudan çıktığı gibi)** | — | — | — | Evet |
| Düşük seviye kontrol (rt/lowcmd, tork/pozisyon)*** | — | — | — | Evet |
| Compute | 8 çekirdekli CPU | 8 çekirdekli CPU | 8 çekirdekli CPU | Opsiyonel Jetson Orin (Standard 40 TOPS / Plus 100 TOPS) |
* Go2 X'in kısmi desteği, topluluk bayi rehberlerine göre yalnızca uygulama katmanında Python scripting'dir.
** Topluluk kaynaklarına göre DDS erişimi kutudan çıktığı gibi yalnızca EDU'da açıktır.
*** Resmî arayüz dokümanları (sport servisleri, Motion Switcher, Motion Control V2.0) uygulanabilirliği açıkça "Go2 Edu model" olarak belirtir.
İki katmanı ayırmak önemli: Topluluk projeleri (ör. go2_webrtc_connect, go2_ros2_sdk) Air/Pro modellerinin WebRTC protokolü üzerinden kontrol edilebildiğini gösteriyor. Bunlar resmî olmayan topluluk çözümleridir; resmî SDK desteği anlamına gelmez. Topluluk kaynaklarına göre WebRTC üzerinden düşük seviye komut (rt/lowcmd) gönderilemez. WebRTC yolunun ayrıntıları için Go2/G1 WebRTC bağlantı rehberimize bakın. Ciddi geliştirme yapacaksanız doğru model Go2 EDU'dur — donanım ayrıntıları için Unitree Go2 ürün sayfasına bakabilirsiniz.
Ağ Kurulumu
Ethernet bağlantısı
Geliştirici bilgisayarınızı Ethernet kablosuyla robota bağlayın. Go2'nin dahili bilgisayarının IP adresi 192.168.123.161'dir.
Statik IP
Bilgisayarınızın Ethernet arayüzüne aynı segmentte statik IP verin (resmî dokümandaki örnekler: 192.168.123.99, 192.168.123.222; alt ağ maskesi 255.255.255.0).
Bağlantı testi
ping 192.168.123.161 ile bağlantıyı doğrulayın; yanıt gelmiyorsa kablo ve IP yapılandırmasını kontrol edin.
Arayüz adı
SDK örneklerini çalıştırırken robota bağlı ağ arayüzünün adı (ör. enp2s0; ip addr ile görülür) komut satırı argümanı olarak zorunludur. Yanlış ad 'channel factory init error' üretir.
Python ile Hızlı Başlangıç (unitree_sdk2_python)
Gereksinim: Python ≥ 3.8. Paket adı unitree_sdk2py; zorunlu bağımlılıklar cyclonedds==0.10.2, numpy, opencv-python. Repo, example/go2 altında front_camera, high_level (go2_sport_client.py, go2_utlidar_switch.py) ve low_level (go2_stand_example.py) örnek dizinlerini içerir.
git clone https://github.com/unitreerobotics/unitree_sdk2_python.git cd unitree_sdk2_python pip3 install -e . # "Could not locate cyclonedds" hatasi alirsaniz: # CycloneDDS'i releases/0.10.x dalindan kaynak derleyin, # CYCLONEDDS_HOME'u ihrac edip pip kurulumunu tekrarlayin.
import sys import time from unitree_sdk2py.core.channel import ChannelFactoryInitialize from unitree_sdk2py.go2.sport.sport_client import SportClient ChannelFactoryInitialize(0, sys.argv[1]) # ör: python3 ornek.py enp2s0 client = SportClient() client.SetTimeout(10.0) client.Init() # DIKKAT: StandUp() eklem-kilitli durustur, Move() bu modda calismaz; # hiz komutlari dengeli durus (BalanceStand) modunda calisir. client.BalanceStand() time.sleep(1) client.Move(0.3, 0, 0.3) # vx, vy, vyaw time.sleep(1) client.StopMove() client.StandDown()
C++ ile Hızlı Başlangıç (unitree_sdk2)
Test edilmiş referans ortam: Ubuntu 20.04 LTS + gcc 9.4.0 (x86_64 ve aarch64); resmî Quick Start dokümanı Ubuntu 22.04'ü de destekli listeler. CMake 3.10+ gerekir. example/go2 dizinindeki resmî örnekler: go2_sport_client.cpp, go2_low_level.cpp, go2_stand_example.cpp, go2_robot_state_client.cpp, go2_trajectory_follow.cpp, go2_video_client.cpp, go2_vui_client.cpp.
# Bagimliliklar (resmi repo README'sindeki liste) sudo apt-get install -y cmake g++ build-essential libyaml-cpp-dev \ libeigen3-dev libboost-all-dev libspdlog-dev libfmt-dev git clone https://github.com/unitreerobotics/unitree_sdk2.git cd unitree_sdk2 mkdir build && cd build cmake .. && make # Sisteme kurulum: sudo make install # Ozel dizine: cmake .. -DCMAKE_INSTALL_PREFIX=/opt/unitree_robotics
#include <unistd.h>
#include <unitree/robot/go2/sport/sport_client.hpp>
int main(int argc, char** argv) {
// ör: ./go2_ornek enp2s0
unitree::robot::ChannelFactory::Instance()->Init(0, argv[1]);
unitree::robot::go2::SportClient client;
client.SetTimeout(10.0f);
client.Init();
// DIKKAT: StandUp() eklem-kilitli durustur, Move() bu modda calismaz;
// hiz komutlari dengeli durus (BalanceStand) modunda calisir.
client.BalanceStand();
sleep(1);
client.Move(0.3, 0, 0.3); // vx, vy, vyaw
sleep(1);
client.StopMove();
client.StandDown();
return 0;
}Yüksek Seviye API Komut Kataloğu
Kontrol sınıfı unitree::robot::go2::SportClient (Python'da SportClient). Komut seti firmware sürümüne bağlıdır — Unitree iki ayrı resmî arayüz dokümanı yayınlar.
Firmware V1.1.6 öncesi (sports_services)
Damp, BalanceStand, StopMove, StandUp, StandDown, RecoveryStand, Euler, Move, Sit, RiseSit, SwitchGait, BodyHeight, FootRaiseHeight, SpeedLevel, TrajectoryFollow, SwitchJoystick, ContinuousGait
Hello, Stretch, Wallow, Pose, Scrape, FrontFlip, FrontJump, FrontPounce, Dance1, Dance2
GetState
Firmware V1.1.6+ (Motion Control V2.0)
Go2 EDU için arayüz ve çağrı mantığı güncellenmiştir; ek modlar arasında FreeBound, FreeJump, FreeAvoid, WalkUpright, CrossStep, ClassicWalk, Heart bulunur. Resmî Python örneği ayrıca HandStand, LeftFlip, BackFlip, FreeWalk metodlarını da çağırır.
Motion Switcher (RPC): CheckMode, SelectMode, ReleaseMode, SetSilent, GetSilent. Firmware ≥ 1.1.6'da mod adı mcf; öncesinde ai / normal / advanced.
Robot durumu: rt/sportmodestate topic'inde SportModeState_ mesajı (pozisyon, hız, duruş, IMU). Önek kuralı: rt = real-time, lf = low-frequency.
Komutların tam parametre imzaları için resmî dokümantasyona (support.unitree.com) bakın.
Düşük Seviye Kontrol (Go2 EDU)
Topic'ler ve mesajlar
Komut için rt/lowcmd, geri besleme için rt/lowstate. MotorCmd_ alanları (motor başına): q (hedef pozisyon), dq (hedef hız), tau (hedef tork), kp (rijitlik), kd (sönümleme). Motorlar 0–11 indekslidir. LowState motor geri beslemesi, IMU, batarya (BMS) ve ayak kuvvet sensörü verisini taşır.
Zorunlu ön koşul
Resmî Quick Start, low-level örneği çalıştırmadan önce ana hareket kontrol servisinin kapatılmasını şart koşar — çünkü low-level kontrol programınız kendisi bir hareket kontrol servisi gibi davranır. Motion Switcher servisinde bu iş için ReleaseMode metodu tanımlıdır.
Referans örnek
go2_low_level.cpp: rt/lowcmd'ye LowCmd_ yayınlayıp rt/lowstate'ten LowState_ okuyarak 2 ms periyotlu PD kontrolü (Kp=5.0, Kd=1.0) ile sinüzoidal eklem hareketi gösterir. Python karşılığı go2_stand_example.py'dir.
ROS2 Entegrasyonu (unitree_ros2)
Resmî unitree_ros2 paketi iki dağıtımı destekler: ROS2 Foxy (Ubuntu 20.04) ve ROS2 Humble (Ubuntu 22.04, önerilen). rmw_cyclonedds + CycloneDDS 0.10.2'nin colcon ile derlenmesi gerekir (Humble'da CycloneDDS derleme adımı atlanabilir); derleme sırasında ROS2 ortamı source edilmemiş olmalıdır — sık karşılaşılan bir kurulum hatasıdır. Ağ arayüzü setup.sh içinde tanımlanır.
| Topic | İçerik |
|---|---|
| /lf/sportmodestate, sportmodestate | Pozisyon, hız, ayak verileri |
| lf/lowstate, lowstate | Motor durumları, güç, IMU |
| /lowcmd | Motor kontrolü — LowCmd (tork, pozisyon, hız) yayınlanır |
| /api/sport/request | Yüksek seviye spor komutları (unitree_api::msg::Request) |
| /wirelesscontroller | Kumanda joystick/buton girdileri |
MuJoCo Simülasyonu ve RL Eğitimi
unitree_mujoco — SDK kodunu simülasyonda test edin
unitree_sdk2 / unitree_ros2 / unitree_sdk2_python ile yazdığınız programları gerçek robota geçmeden simülasyonda test etmenizi sağlar; Go2 dahil Go2/B2/B2w/H1/G1 modellerini destekler. Hem C++ (simulate, önerilen) hem Python (simulate_python) implementasyonu, MJCF robot modelleri ve terrain_tool bulunur. Sim-to-real geçişin özü: DDS domain ID ve ağ arayüzü değiştirilir — simülasyonda lo (loopback), gerçek robotta robotun bağlı olduğu ağ kartı.
unitree_rl_gym — pekiştirmeli öğrenme akışı
Go2 (ve H1/H1_2/G1) için pekiştirmeli öğrenme çatısı: eğitim Isaac Gym'de, sim2sim doğrulaması MuJoCo'da yapılır; akış Train → Play → Sim2Sim → Sim2Real şeklindedir. Gerçek robota dağıtım deploy_real.py ile yapılır. Ayrıntılı anlatım için Unitree RL Gym rehberimize bakın.
Saha Notları — Türkiye'den Birinci-El Deneyimler
Go2 platform ailesiyle (Go2-W dahil) Türkiye'de yürüttüğümüz saha çalışmalarından gözlemler — aynı DDS/SDK mimarisi ailenin tüm modellerinde ortaktır:
Statik IP disiplinine dikkat
Robotun Ethernet portu her zaman 192.168.123.x ağındadır; geliştirici bilgisayarına bu segmentte statik IP verilmeden hiçbir SDK örneği çalışmaz. Ekip içinde her bilgisayara sabit ve çakışmayan IP ataması yapın; ping testini atlamayın.
DDS çok-makineli çalışmaya olanak tanır
DDS'in yayın/abonelik modeli, aynı ağdaki birden fazla bilgisayarın topic'lere erişmesine mimari olarak izin verir — bir makinenin kontrol yazılımını çalıştırırken diğerinin izleme/görselleştirme yapması bu modelin doğal sonucudur.
Geliştirmeye başlamadan firmware kontrolü
Firmware sürümü SDK davranışını etkileyebilir (V1.1.6 API ayrımı bunun resmî örneğidir); projeye başlamadan güncelleme kontrolünü rutin hâline getirmenizi öneririz.
Sıkça Sorulan Sorular
Go2 Air SDK destekler mi?
Resmî spesifikasyona göre hayır — Go2 Air ikincil geliştirmeyi (secondary development) desteklemez. Topluluk projeleri WebRTC üzerinden resmî olmayan kontrol yolları sunar, ancak bunlar resmî SDK desteği değildir ve kurumsal projelerde önerilmez. Resmî DDS tabanlı geliştirme için Go2 EDU gerekir.
Unitree Go2 Python ile nasıl programlanır?
Resmî Python arayüzü unitree_sdk2_python (paket adı unitree_sdk2py) kurulur, DDS kanalı ağ arayüzü adıyla ChannelFactoryInitialize ile başlatılır ve SportClient üzerinden StandUp, Move gibi komutlar gönderilir. Python 3.8 ve üzeri gerekir; repo yüksek seviye hareket komutlarından düşük seviye motor kontrolüne kadar örnekler içerir.
Go2 SDK ücretsiz mi?
Evet. unitree_sdk2 BSD-3-Clause lisansıyla açık kaynaktır; Python, ROS2, MuJoCo ve RL repoları da GitHub'da herkese açıktır. SDK'yı tam kapsamıyla kullanmak için gereken donanım Go2 EDU'dur.
Go2 SDK geliştirmesi için hangi bilgisayar gerekir?
Test edilmiş referans ortam Ubuntu 20.04 LTS'tir (gcc 9.4.0); resmî doküman Ubuntu 22.04'ü de destekli listeler. Hem x86_64 hem aarch64 mimarisi desteklenir. Bilgisayar robota Ethernet ile bağlanır ve 192.168.123.x segmentinde statik IP alır.
Go2 ROS2'nin hangi sürümüyle çalışır?
Resmî unitree_ros2 paketi ROS2 Foxy (Ubuntu 20.04) ve ROS2 Humble (Ubuntu 22.04) destekler; Humble önerilen sürümdür. Kurulum rmw_cyclonedds + CycloneDDS 0.10.2 derlemesi gerektirir; Humble'da CycloneDDS derleme adımı atlanabilir. Derleme sırasında ROS2 ortamı source edilmemiş olmalıdır.
Go2'de düşük seviye motor kontrolü hangi modelde mümkün?
Resmî olarak yalnızca Go2 EDU'da. 12 eklem motoruna rt/lowcmd topic'i üzerinden pozisyon (q), hız (dq), tork (tau), kp ve kd hedefleri gönderilir; öncesinde ana hareket kontrol servisinin kapatılması (Motion Switcher ReleaseMode) zorunludur.
Go2 kodumu gerçek robot olmadan test edebilir miyim?
Evet. unitree_mujoco simülatörü, unitree_sdk2 / unitree_sdk2_python / unitree_ros2 programlarını aynı DDS arayüzüyle simülasyonda çalıştırmanızı sağlar; gerçek robota geçiş yalnızca DDS domain ID ve ağ arayüzü değişikliği gerektirir.
Go2 firmware sürümü SDK komut setini etkiler mi?
Evet. Yüksek seviye komut seti firmware sürümüne bağlıdır: V1.1.6 öncesi için sports_services arayüzü, V1.1.6 ve sonrası için Motion Control Service Interface V2.0 geçerlidir (FreeBound, WalkUpright gibi ek modlar içerir). Geliştirmeye başlamadan firmware sürümünüzü kontrol edin.
Go2 EDU'yu Türkiye'de nereden satın alabilirim?
Robotlar.org, Unitree Türkiye Yetkili Distribütörü olarak Go2 EDU tedariki, kurulum ve geliştirme sürecinde teknik destek sağlar. Teklif için iletişim sayfamızdan ulaşabilir, başlangıç fiyatları ve model karşılaştırması için Unitree Go2 ürün sayfasını inceleyebilirsiniz.
Resmî Kaynaklar
Go2 SDK Development Guide
Unitree resmî doküman merkezi: Quick Start, servis arayüzleri ve API referansı.
unitree_sdk2 (GitHub)
Resmî C++ SDK deposu: example/go2 örnekleri, IDL tanımları ve sürüm notları.
unitree_sdk2_python (GitHub)
Resmî Python arayüzü: kurulum, örnekler ve cyclonedds bağımlılık notları.
robotlar.org Destek
Türkiye'de Go2 EDU tedariki, SDK kurulumu ve entegrasyon danışmanlığı.
Go2 ile Geliştirme
Türkiye'den Başlasın.
SDK erişimi, düşük seviye kontrol ve Jetson Orin compute seçenekleri yalnızca Go2 EDU'da tam kapsamlıdır. Unitree Türkiye Yetkili Distribütörü olarak tedarik, kurulum ve geliştirme sürecinizde teknik destek sağlıyoruz.