Robotlar
Unitree Bilgi Üssü
Geliştirici Rehberi

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.

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:

YetenekGo2 AirGo2 ProGo2 XGo2 EDU
Resmî ikincil geliştirme (SDK)DesteklemezDesteklemezKısmi*Tam destek
Ethernet üzerinden DDS (kutudan çıktığı gibi)**Evet
Düşük seviye kontrol (rt/lowcmd, tork/pozisyon)***Evet
Compute8 çekirdekli CPU8 çekirdekli CPU8 çekirdekli CPUOpsiyonel 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

1

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.

2

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).

3

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.

4

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.

Kurulum
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.
İlk program — resmî go2_sport_client.py kalıbı
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.

Derleme
# 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
İlk program — SportClient
#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)

Lokomasyon

Damp, BalanceStand, StopMove, StandUp, StandDown, RecoveryStand, Euler, Move, Sit, RiseSit, SwitchGait, BodyHeight, FootRaiseHeight, SpeedLevel, TrajectoryFollow, SwitchJoystick, ContinuousGait

Özel aksiyonlar

Hello, Stretch, Wallow, Pose, Scrape, FrontFlip, FrontJump, FrontPounce, Dance1, Dance2

Durum

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, sportmodestatePozisyon, hız, ayak verileri
lf/lowstate, lowstateMotor durumları, güç, IMU
/lowcmdMotor kontrolü — LowCmd (tork, pozisyon, hız) yayınlanır
/api/sport/requestYüksek seviye spor komutları (unitree_api::msg::Request)
/wirelesscontrollerKumanda 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.

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.