Hugging Face Hub'tan Robot Donanımına: Strands Agents ve LeRobot ile Tek Adımda
Strands Robots SDK, LeRobot yığınını AgentTools olarak sararak robot kaydı, simülasyon, politika çıkarımı ve donanım dağıtımını tek bir ajan içinde birleştiriyor. Bu yazı, simülasyonda veri kaydından fiziksel SO-101 robotuna geçişi adım adım anlatıyor.
LeRobot ve Strands Birleşimi
Robotik geliştirme genellikle birbirinden kopuk araçlar gerektirir: gösterim kaydı, eğitim, simülasyon testi, donanım dağıtımı ve çoklu robot koordinasyonu. Hugging Face ve AWS iş birliğiyle geliştirilen Strands Robots SDK, bu parçaları tek bir yapay zeka ajanı (agent) altında birleştiriyor. SDK, LeRobot'un mevcut altyapısını (donanım soyutlaması, kalibrasyon, veri seti formatı) değiştirmeden, üzerine AgentTool katmanı ekliyor. Bu sayede geliştiriciler, robotları doğal dil komutlarıyla yönetebiliyor.
Strands Robots, Apache 2.0 lisansıyla açık kaynak olarak sunuluyor. Temel tasarım kararı, LeRobot'un halihazırda sağladığı işlevleri yeniden yazmak yerine, onları ajanın kullanabileceği araçlara dönüştürmek. Örneğin, `Robot("so100")` varsayılan olarak MuJoCo tabanlı bir simülasyon döndürürken, `mode="real"` parametresiyle fiziksel bir robotu kontrol ediyor. Aynı ajan kodu her iki modda da çalışıyor.
Simülasyonda Veri Kaydı
Strands ile simülasyonda gösterim kaydı yapmak, donanımda kayıt yapmakla aynı LeRobotDataset formatını kullanıyor. Örnek bir senaryo: kırmızı bir küpü alıp kutuya koyma görevi. Ajan, `start_recording` aksiyonuyla veri kaydını başlatıyor. Kayıt sırasında kullanılan `DatasetRecorder` sınıfı, hem simülasyon hem de donanım yolu için aynı. Bu sayede MuJoCo'da kaydedilen bir veri seti, fiziksel SO-101'den kaydedilenle birebir aynı yapıda oluyor.
Varsayılan olarak Mock politika kullanılıyor; bu politika, eğitimli bir kontrol noktası (checkpoint) gerektirmeden iş akışının uçtan uca çalışmasını sağlıyor. Robot rastgele hareketler yapsa da, kayıt yapısal olarak eksiksiz (geçerli eklem durumları, kamera kareleri, iyi biçimlendirilmiş bir LeRobotDataset bölümü). Gerçek kavrama davranışı için `--policy lerobot_local --checkpoint allenai/MolmoAct2-SO100_101` gibi bir parametre eklenebilir.
Simülasyonda kaydedilen veri seti, LeRobot'un kendi yükleyicisiyle sorunsuz okunabiliyor: ```python from lerobot.datasets.lerobot_dataset import LeRobotDataset dataset = LeRobotDataset("my_user/cube_picking_sim") print(dataset.features) ``` Bu özellik sözlüğü, Hub'daki herhangi bir LeRobot veri setiyle aynı şekle sahip.
Politikayı Çalıştırma
Veri seti Hub'a yüklendikten sonra, ajan bir politika çalıştırabiliyor. Örnekte, `gr00t_inference` aracıyla GR00T konteynırı yönetiliyor: konteynır imajı çekiliyor, kontrol noktası indiriliyor ve çıkarım servisi başlatılıyor. Ardından `run_policy` aksiyonuyla simülasyondaki robot politika ile sürülüyor.
Alternatif olarak, konteynır gerektirmeyen LerobotLocalPolicy kullanılabiliyor. Bu sağlayıcı, ACT, Diffusion Policy, SmolVLA, π0 gibi LeRobot'un desteklediği tüm modelleri çalıştırabiliyor. NVIDIA'nın Cosmos 3 modeli de aynı arayüz üzerinden kullanılabiliyor.
Donanıma Geçiş
Aynı ajan kodunu fiziksel bir SO-101 robotunda çalıştırmak için sadece bir anahtar kelime argümanı değişiyor: `mode="real"`. Robot fabrikası, LeRobot'un `make_robot_from_config` fonksiyonunu kullanarak donanım destekli bir robot döndürüyor. Kameralar, portlar ve veri yapılandırması parametre olarak veriliyor. Ajan komutu aynı kalıyor.
Donanım yolunda, LeRobot'un `lerobot-calibrate` ve `lerobot-record` CLI'ları kullanılıyor. Kalibrasyon dosyaları `~/.cache/huggingface/lerobot/calibration/` altında saklanıyor. Eksik kalibrasyon durumunda ajan, LeRobot sürücü katmanından gelen hatayı yüzeye çıkarıyor.
Çoklu Robot ve Mesh
Strands Robots, birden fazla robotu yönetmek için Zenoh tabanlı bir eşler arası (peer-to-peer) ağ kullanıyor. Her `Robot()` ve `Simulation()` otomatik olarak bu mesh'e katılıyor. `robot_mesh` aracı, ajanın filo keşfi, yapılandırılmış komutlar, yayın ve acil durdurma gibi işlemleri yapmasını sağlıyor.
Örneğin, ajan şu komutu verebiliyor: ```python agent("List every robot and simulation on the mesh. Then send 'go to home pose' to each one in parallel.") ``` Fiziksel eylemler (yayın, acil durdurma) varsayılan olarak insan onayına tabi. Bu, komut enjeksiyonuna karşı bir güvenlik katmanı oluşturuyor. Onay, LLM'nin araç argümanlarının dışında, terminalde bir soruyla alınıyor.
Mesh, yerel ağda çalıştığı gibi, AWS IoT Core üzerinden bulut filolarına da genişletilebiliyor. Üretim ortamları için Arm iş birliğiyle geliştirilen Device Connect katmanı, keşif, yapılandırılmış RPC ve güvenlik sağlıyor.
Neden Onemli?
Bu entegrasyon, Türkiye'deki robotik geliştiriciler için önemli bir sıçrama noktası. Simülasyon ve donanım arasındaki veri formatı birliği, eğitim ve dağıtım süreçlerini hızlandırıyor. Özellikle küçük ve orta ölçekli firmalar, pahalı donanım yatırımları yapmadan önce simülasyonda politika geliştirip test edebilecek. Ayrıca, Hugging Face Hub üzerinden paylaşılan veri setleri ve modeller, yerel ekosistemin küresel toplulukla entegre olmasını sağlıyor. Strands'in açık kaynak yapısı, Türk araştırmacıların ve girişimlerin kendi ihtiyaçlarına göre özelleştirme yapmasına olanak tanıyor. Bu, yapay zeka ve robotik alanında yerel yetkinliklerin artmasına katkıda bulunabilir.