Isaac Lab ile Unitree Robotlarında Pekiştirmeli Öğrenme ve Sim2Real
İnsansı robotlarda ve robot köpeklerde bugün en canlı araştırma alanı, yürüme ve tüm vücut kontrolünü simülasyonda pekiştirmeli öğrenme (RL) ile eğitip gerçek robota aktarmak, yani sim2real. Unitree bu iş akışı için iki resmi depo yayınlıyor. Bu yazıda ikisini karşılaştırıyor, akışı adım adım anlatıyor ve laboratuvarda gerçek robota geçerken uyulması gereken kuralları özetliyoruz.
Kavram: pekiştirmeli öğrenme ve sim2real
Pekiştirmeli öğrenmede robot (ajan) ortamda deneme yanılma ile hareket eder; tasarladığınız ödül fonksiyonunu en üst düzeye çıkaran bir politika (genellikle bir sinir ağı) öğrenilir. Bunu gerçek robotta yapmak hem yavaş hem tehlikelidir. Bu yüzden eğitim, GPU üzerinde binlerce paralel ortamın aynı anda koştuğu simülasyonda yapılır.
Zor kısım aktarımdır. Simülasyondaki sürtünme, motor dinamiği, gecikme ve sensör gürültüsü gerçeğe hiçbir zaman tam uymaz. Bu farka "sim2real açığı" denir. Yaygın çözümler; fizik parametrelerini rastgeleleştirmek (domain randomization), gözlemlere gürültü eklemek ve politikayı ikinci bir simülatörde doğrulamaktır.
İki depo, iki altyapı
unitree_rl_gym: legged_gym ve rsl_rl üzerine kurulu, Isaac Gym tabanlı depo. README'ye göre Go2, H1, H1_2 ve G1'i destekler. Akışı dört adımda tanımlar: Train → Play → Sim2Sim → Sim2Real.
unitree_rl_lab: NVIDIA'nın Isaac Lab çerçevesi üzerine kurulu RL ortamları. README'de Go2, H1 ve G1-29dof desteği belirtilir. Yeni başlayan bir laboratuvar için Isaac Lab tarafı, aktif geliştirilen ekosistem olduğu için daha uzun ömürlü bir yatırımdır.
Sürüm uyumu: en sık yapılan hata
unitree_rl_lab README'sindeki rozetler Isaac Lab 2.3.0 ve Isaac Sim 5.1.0 sürümlerini gösteriyor. Isaac Lab'in "main" dokümantasyonu ise daha yeni bir sürüm hattını anlatıyor; o sayfada farklı bir Python sürümü ve Isaac Sim 5.1 ve öncesinin artık desteklenmediği yazıyor. Sonuç: Isaac Lab'i "en son" sürümle kurup Unitree deposunu üzerine eklemek uyumsuzluk çıkarabilir. Kurulum öncesinde deponun hedeflediği sürümü not edin ve Isaac Lab dokümantasyonunun o sürüme ait sayfasını izleyin.
Donanım tarafında Isaac Lab, CUDA destekli bir NVIDIA GPU ister; sürücü ve GPU nesli gereksinimleri dokümantasyonda sürüme göre listelenir. Laboratuvar bütçesi planlanırken eğitim iş istasyonunun bu gereksinimi karşılaması, robotun kendisi kadar önemlidir.
unitree_rl_lab ile akış
Isaac Lab README'deki kurulum kılavuzuyla kurulduktan sonra depo, Isaac Lab klasörünün dışında ayrı bir yere klonlanır ve Isaac Lab'in kurulu olduğu Python ortamında düzenlenebilir modda yüklenir:
git clone https://github.com/unitreerobotics/unitree_rl_lab.git
conda activate env_isaaclab
./unitree_rl_lab.sh -i
Robot tanım dosyaları için README iki yol verir: Hugging Face'teki unitree_model USD dosyaları veya (Isaac Sim 5.0 ve üzeri için önerilen) unitree_ros deposundaki URDF dosyaları. İndirilen klasörün yolu depodaki unitree.py dosyasında tanımlanır. Ardından görevleri listeleyip eğitimi başlatırsınız:
./unitree_rl_lab.sh -l
./unitree_rl_lab.sh -t --task Unitree-G1-29dof-Velocity
Eğitilmiş politikayı simülasyonda izlemek için:
./unitree_rl_lab.sh -p --task Unitree-G1-29dof-Velocity
Sim2Sim ve Sim2Real
README'ye göre eğitim bittikten sonra politika önce unitree_mujoco üzerinde test edilir, sonra gerçek robota aktarılır. Dağıtım için unitree_sdk2 kurulur ve robota özel C++ kontrolcü (G1 için deploy/robots/g1_29dof) derlenir. MuJoCo'da politika, kumanda tuş kombinasyonlarıyla ayağa kaldırılıp çalıştırılır; simülasyondaki "elastik bant" robotu başlangıçta askıda tutar.
Gerçek robotta README'nin uyarısı açık: kontrolcüyü doğrudan çalıştırabilirsiniz ama robottaki yerleşik kontrol programının kapatılmış olması gerekir.
./g1_ctrl --network eth0
Buradaki eth0, robota bağlı ağ arayüzünün adıdır.
unitree_rl_gym ile akış
Isaac Gym tabanlı depoda eğitim ve izleme komutları şöyledir; --task için go2, g1, h1 veya h1_2 verilir:
python legged_gym/scripts/train.py --task=g1
python legged_gym/scripts/play.py --task=g1
Play adımı ağı logs/{experiment_name}/exported/policies altına dışa aktarır. MuJoCo'da Sim2Sim için:
python deploy/deploy_mujoco/deploy_mujoco.py g1.yaml
Gerçek robota geçmeden önce README, robotun hata ayıklama (debug) moduna alınmasını ve ayrıntılı fiziksel dağıtım kılavuzunun okunmasını ister; dağıtım betiği ağ arayüzü adını ve yapılandırma dosyasını argüman olarak alır. Fiziksel dağıtımın Python tarafı unitree_sdk2_python üzerinden haberleşir.
Gerçek robota geçişte laboratuvar kuralları
- Askı zorunlu: İnsansı robotta her yeni politika önce askı (gantry) altında, ayaklar yere hafif temas ederken çalıştırılır.
- Kademeli hız: İlk denemelerde komut hızları düşük tutulur; politika sabit dururken sorun çıkarıyorsa yürütmeye geçilmez.
- Kayıt: Her denemede politika dosyası, yapılandırma ve robot durum kaydı birlikte arşivlenir. Sim2real hatalarının kökü genellikle "hangi checkpoint, hangi yapılandırma" sorusundadır.
- Ayrı alan: RL denemeleri, genel ders kullanımından ayrılmış, zemini düşmeye uygun bir alanda yapılır.
Hangi robotla başlamalı?
Dört ayaklı Go2, düşme riskinin ve olası hasarın daha düşük olması nedeniyle RL'e ilk adım için daha affedicidir; insansı G1 ise tüm vücut kontrolü ve hareket taklidi gibi güncel araştırma konularının platformudur. Birçok laboratuvar politikayı önce Go2'de oturtup ekibin sim2real deneyimini artırdıktan sonra G1'e geçer. EDU sürümlerinin teklif kapsamını Go2 EDU ve G1 EDU sayfalarında anlattık. Simülasyon araçlarının genel karşılaştırması için simülasyon yazımıza, eğitim programları için Kagen Akademi sayfasına bakabilirsiniz.
Sık sorulan sorular
unitree_rl_gym ile unitree_rl_lab arasındaki fark nedir?
unitree_rl_gym Isaac Gym tabanlıdır ve Go2, H1, H1_2, G1'i destekler. unitree_rl_lab Isaac Lab tabanlıdır; README'de Go2, H1 ve G1-29dof desteği belirtilir.
Sim2Sim neden gerekli?
Politika eğitildiği simülatöre aşırı uyum sağlayabilir; MuJoCo gibi ikinci bir simülatörde test etmek bunu gerçek robottan önce yakalar.
Hangi Isaac Lab sürümünü kurmalıyım?
Unitree deposunun hedeflediği sürümü. unitree_rl_lab README'si Isaac Lab 2.3.0 ve Isaac Sim 5.1.0 rozetlerini gösterir.
Eğitilen politika gerçek robota nasıl aktarılır?
unitree_rl_gym'de robot debug moduna alınıp deploy_real betiği çalıştırılır; unitree_rl_lab'de C++ kontrolcü derlenir ve yerleşik kontrol programı kapalıyken çalıştırılır.
