Hazır alınmış bir SO-101 leader + follower çifti. Motor ID'leri (1–6) ve
baudrate (1.000.000) satıcı tarafından yazılmıştı, lerobot-setup-motors
adımı atlandı. Proje so101/ altında kendi sanal ortamıyla kuruldu:
lerobot[feetech,dataset,viz,training]==0.6.1, MacBook Pro M5, 32 GB.
ilk gün
Kutuiki kol, iki USB
→
Portvoltajla ayır
→
venvlerobot 0.6.1
→
Kalibrasyonertesi gün
Follower
Leader
Motor voltajı
~12,5 V
~5,5 V
Servo
STS3215 ×6
STS3215 ×6
Port (o gün)
usbmodem5AB01794851
usbmodem5A7C1232561
İki USB port, hangisi hangisi? Motordan voltaj oku: 12 V follower, 5 V leader. Port adları yeniden
takınca değişebilir, voltaj değişmez.
●note
Kalibrasyon
Kalibrasyon iki şey kaydeder: her motor için "orta" sayılan sıfır noktası ve
eklemin gidebildiği iki uç. Teleop'ta leader eklemi kendi aralığının yüzde
kaçındaysa follower da kendi aralığının aynı yüzdesine gider; bu yüzden iki
kolun uçları aynı fiziksel açılara denk gelmeli. Dosyalar
so101/calibration/follower.json ve leader.json, 13 Eylül 14:10.
Eklem
Follower
Leader
Fark
shoulder_pan
229°
238°
9°
shoulder_lift
209°
210°
1°
elbow_flex
193°
193°
0°
wrist_flex
197°
206°
8°
gripper
128°
104°
çene / tetik, normal
Hiçbir eklemde drive_mode çevirmek gerekmedi. Aynı dosya iki hafta sonra
MuJoCo'ya da hizmet etti: 2048 tick kalibrasyon orta pozu,
(tick-2048)*360/4096 derece.
Follower sert (1:345 dişli). Dayanağa varmadan bırakınca aralık dar kalıyor ve pozlar "eşit değil"
görünüyor. Her eklemi mekanik sınıra kadar it.
"Press ENTER to use calibration file, or type c" sorusunda Enter
dosyayı kullanır, c baştan kalibre eder. Bir kez yanlış tuş, 40 dakika.
Arkadaşın gönderdiği dosyalar kolların eski montajına aitti: dirsekte 78° hayali aralık, tutucu
88° kaymış. Kalibrasyon kola değil, o günkü montaja aittir.
●note
Teleop ve üç tuzak
13 Eylül: leader'ı elle oynat, follower birebir izlesin. Beş eklemin yönü de
doğru çıktı, takip hatası ortalama 1 birim (aralığın %0,5'i). Ama oraya üç
tuzaktan geçerek varıldı.
takip hatası, kayıt sırasında (norm birim, -100..100)
shoulder_pan0.64birim
shoulder_lift1.75birim
elbow_flex2.25birim
wrist_flex1.36birim
--robot.max_relative_target=2 freni dirseği kilitledi. Kontrolcü sadece P ile çalışıyor; hedef
ile konum farkı 2 birimle sınırlanınca yerçekimi yükündeki dirseği kıpırdatacak kuvvet oluşmadı.
Fren yok, resmî akış neyse o. Hashtag Robotics 5.0 kullanıyor; gerekmedikçe verme.
İki kol masada aynı yöne bakmalı, operatör arkada. Birbirine dönük durunca omuz ve taban aynada
gibi "ters" görünür, aslında doğrudur. drive_mode çevirme, düzeni düzelt.
Teleop açıkken seri porta ikinci bir süreç dokunursa ikisi de düşer: "multiple access on port".
Önce kapat, sonra oku.
◐note
Kameralar
İki görüş, 640×480, 30 fps. Bilek kamerası kutudan çıkan modül; ön/üst görüş
için önce MacBook'un kendi kamerası kullanıldı, iki hafta sonra sabit bir
Logitech C310 tepeye alındı.
Ad
Donanım
OpenCV index
Ne görüyor
wrist
USB2.0_CAM1, Sonix 05A3:9230, bileğe monte
0
iki çene ve aralarındaki nesne
front (v2, eski)
MacBook dahili kamera
1
tahta, halka, kol; ekran açısına bağlı
top (16 Eylül)
Logitech C310, masanın üstünde
1
tahta, iki bölge, kol tabanı; tepeden
Ders: kamera bir donanım değil, bir sözleşme
İlk robot denemesinde politika dinlenme pozundan çıkmadı. Sebep laptop
ekranıydı: kayıt gecesi ekran daha öne eğikti, denemede daha dik. Model bu
görüntüyü hiç görmemişti. Ekran eğitimdeki açıya getirilince kol yüzüğe gitti.
Kayıt başladıktan sonra kameranın yeri, açısı, ışığı bir daha değişmez; laptop
kamerası bunu vaat edemez, masaya sabitlenmiş C310 eder.
Elenenler: GoPro Hero 5 USB'den kamera değil hafıza kartı olarak görünüyor,
HDMI yakalama kartı ister. iPhone Continuity Camera Mac'te kamera olarak
listeleniyor, yedek olarak duruyor. Hashtag'in kulesindeki 32×32 mm modül
(referans: Innomaker U20CAM-1080P) sadece kuleye birebir oturmak istenirse.
●experiment
İlk veri seti: ring-center-v2
14 Eylül, data/ring-center-v2. Görev cümlesi: "Pick up the white ring and
place it in the center square of the grid."
10
bölüm
8 040kare, 30 fps
21–33 sbölüm süresi
170 MBdisk
bir bölümün ritmi
Recordinghalkayı al, ortaya koy, kolu geri getir, →
→
Resethalkayı yeni noktaya koy, leader'a dokunma
→
Kötü bölüm← ile sil, tekrar çek
→
BitirEsc
Sabit tutulanlar: aynı halka, tahta aynı yerde, aynı başlangıç pozu, aynı
ışık. Değişen tek şey halkanın başlangıç noktası, 15×15 cm'lik bir alan
içinde.
Bölüm bitince video kodlanırken follower birkaç saniye takip etmez; o sırada leader oynatılırsa
sonraki bölümde follower tam hızla sıçrar. --dataset.streaming_encoding=true bu donmayı
kaldırdı.
Komutları tam yolla ver. Bir kez data/ içinden çalıştırılınca kalibrasyon bulunamadı, veri
yanlış yere yazıldı. ring-center-v1 bu yüzden çöp.
Geriye bakınca
Bu veri setinin üç kusuru ancak robotta ortaya çıktı: her bölümün başında 5–7
saniye hareketsiz bekleme vardı, ön kamerada leader ve elim görünüyordu, ve 10
bölüm her iki yöntem için de tabanın altında. Üçü de bir sonraki kayıt
protokolünde düzeltildi.
●experiment
ACT eğitimi
ACT (Action Chunking with Transformers): iki kamera görüntüsü ve altı eklem
açısından, gelecek 100 adımlık (3,3 s) hareket dizisini tek seferde tahmin
eden bir transformer. Adım adım değil öbek öbek tahmin ettiği için az veriyle
akıcı hareket öğrenir. SO-101 için standart ilk politika.
52 M
parametre
20 000adım, batch 8
1,05 sadım süresi, M5 MPS
5 sa 17 dktoplam
Metrik
Başlangıç
Son (adım 20k)
l1_loss
0,67
0,076
loss
0,091
kld_loss
0,002
epoch
19,9
Kontrol noktaları her 5 000 adımda checkpoints/ altına. caffeinate-i ile
gece boyu; terminal kapanırsa --resume=true.
Kayıp değerinin düşmesi görevin öğrenildiğini söylemez; eğitim verisinin ezberlenebildiğini
söyler. Asıl test bir sonraki kartta.
●experiment
Offline sağlama ve MuJoCo replay
Robota dokunmadan yapılan sağlama: politika, kayıttaki gerçek kamera
karelerini sırayla alır ve tıpkı robotta olduğu gibi 100 adımlık chunk'lar
üretir. Ürettiği aksiyon kayıttaki aksiyonla karşılaştırılır. Kod
so101/sim_check/act_offline_check.py.
pan
lift
elbow
wrist_flex
wrist_roll
gripper
ort.
ACT hatası (MAE, 10 bölüm)
1,2
3,1
3,4
2,3
0,4
0,8
1,85
Leader–follower takip hatası
0,6
1,8
2,3
1,4
0,2
1,4
1,3
Birim: normalize motor konumu (-100..100). Politikanın hatası, kayıt sırasında
follower'ın leader'ı takip hatasıyla aynı seviyede; gripper'ın açılıp kapanma
zamanı da tutuyor.
MuJoCo'da oynatma
Aynı yörüngeler SO-101'in MuJoCo modelinde yan yana oynatıldı: solda kayıt,
sağda tahmin. Uç nokta farkı ortalama 8 mm, en kötü 24 mm. Dönüşüm: normalize
birim, kalibrasyon aralığıyla tick, sonra derece. Izgara adımı iki hafta sonra
Hashtag verisinde tam 80 mm çıkınca bu dönüşümün doğruluğu da kanıtlanmış oldu.
●experiment
Robotta ilk deneme
Bu LeRobot sürümünde lerobot-record politika almıyor; robotta çalıştırma
lerobot-rollout ile. Üç deneme, üç farklı sonuç, hepsi aynı hikâyeyi
anlatıyor.
üç deneme
1ekran açısı farklı
→
kol dinlenme pozunda
→
her 100 karede bilek kıpırdıyor
2açı eşleştirildi
→
kol yüzüğün üstüne gitti
→
yaklaş–çekil döngüsü, gripper açılmadı
3operatör kadrajda
→
kol yine dinlenmede
→
iki küçük hamle, geri
Deneme 1. Rerun'daki aksiyon grafiği periyodikti: her 100 karede, yani her
ACT chunk'ında, bilek biraz kalkıyor, chunk sınırında geri iniyor. Politika
"dinlenme pozunda kal" diyordu. Eğitim karelerine bakınca fark ortaya çıktı:
kayıt gecesi laptop ekranı daha öne eğikti, ızgara ortada, alt şeritte laptop
gövdesi; denemede ekran daha dikti, arka duvar ve lamba görünüyordu.
Deneme 2. Ekran eğitimdeki açıya getirildi. Kol dinlenmeden çıktı, yüzüğün
üstüne uzandı, sonra asılı kaldı: yaklaştı, geri çekildi, yine yaklaştı.
Gripper hiç açılmadı; eğitim verisinde gripper kol yüzüğe vardıktan sonra
açılıyor, kol oraya hiç varmadı. Temporal ensembling
(--policy.temporal_ensemble_coeff=0.01--policy.n_action_steps=1)
checkpoint üstüne yüklenebiliyor, M5'te adım başına 40 ms; denendi, davranış
değişmedi.
Deneme 3. Kayıt sırasında ön kameranın sol yüzde kırkında kolum ve gövdem
vardı. Kol yine dinlenme pozuna yapıştı.
Replay testi: pipeline mi, düzen mi?
lerobot-replay ile bölüm 0'ın kayıtlı aksiyonları follower'a birebir
oynatıldı, 34 saniye, bölüm süresiyle aynı. Kol doğru hareketi yaptı ama
yüzüğü birkaç santim ıskaladı. Yani robot, kalibrasyon (dosya 13 Eylül,
kayıttan önce, değişmemiş), veri ve politika doğru; kayıttan bu yana yüzük ya
da kol tabanı birkaç santim kaymış ve 10 bölümle eğitilmiş politika bunu
tolere edemiyor.
Üç denemenin ortak paydası: politika eğitimde görmediği bir görüntüye düşünce en güvenli şeye,
başlangıç pozuna yapışıyor. Kamera açısı, kadrajdaki insan, kaymış yüzük: hepsi aynı hata sınıfı.
●schema
Neden çalışmadı: ezber mi, genelleme mi
Ağ, "görüntü + eklem açıları (+ cümle) → sonraki 100 eklem hedefi"
fonksiyonunu öğreniyor. Servo okumaları kolun şu an nerede olduğunu, kameralar
nesnelerin nerede olduğunu söylüyor. Kilit nokta: ağ sadece veride
değişen şeyleri kullanmayı öğrenir.
ne öğrenildi, ne öğrenilmedi
Halka her bölümde farklı yerde
→
bilek kamerası bilgi taşıyor
→
kavrama halkaya göre ayarlanıyor ✓
Izgara hep aynı yerde
→
üst görüntü bilgi taşımıyor
→
hücre = sabit eklem açıları ✗
Tam ezber değil, ama ezbere yakın: gördüğü aralıkta genelleme, dışında ezber.
Bir garajda park etmeyi öğrenmiş biri gibi. Gözünü kullanır, çöp kutusu
yerinden oynamışsa fark edip direksiyonu düzeltir; ama başka bir garaja
sokarsan yine eski yerde döner.
LLM bunu çözmez
Hashtag Robotics mimarisinde LLM'in (Strands Agent) işi "hangi hamle" sorusu:
tahtaya bakar, yasal hücreyi seçer, 18 sabit cümleden birini üretir. Cümle
politikaya gider. Politika "top left cell" için eğitimde neredeyse oraya
gider; tahta 10 cm kaydıysa eski yere. LLM'in "tahta 10 cm sağda" diyebileceği
bir kanal yok; cümleye eklesen bile politika o kelimeleri hiç görmedi. LLM
hatayı üst kameradan fark edip yeniden deneyebilir, düzeltemez.
Taşınabilirlik için üç yol
Yol
Ne ister
Karar
Fikstür: tahta, çerçeveler, kol tabanı ve kamera tek plakada
kontrplak, vida
önerilen; "istediğim yere koyayım" geometriyi hiç bozmaz
Veri çeşitliliği: tahta her bölümde farklı yer ve açıda
birkaç yüz bölüm, birkaç eğitim turu
sonra; Hashtag bile yapmamış
Hibrit: ArUco ile tahtayı bul, klasik kontrolle yerleştir
kamera-robot kalibrasyonu, IK
LeRobot dışı, ayrı proje
Taş bekleme bölgesinde 2–3 cm kaymış: olur. Tahta 5 cm kaymış veya dönmüş: yanlış hücre. Kamera
oynamış: çalışmaz. Başka masa, aynı fikstür ve kamera: ışıkla düşer ama çalışabilir.
●schema
MuJoCo XOX tezgâhı
Görüş politikası simde çalıştırılamaz, kamera görüntüsü yok. Ama simülasyon
iki şey için işe yaradı: Hashtag Robotics'in tezgâhını görmek ve yörüngeleri
kontrol etmek. Kod so101/sim_check/xox_*.py, üst repodaki .venv
(mujoco 3.12).
Tezgâh nasıl bulundu
Satıcı ölçülü fikstür çizimi yayımlamamış. Onun yerine 195 gösterimin eklem
kayıtları (sadece parquet, 8 MB, video yok) indirildi; her bölümde gripper'ın
kapandığı ve açıldığı kare ileri kinematikle uç nokta konumuna çevrildi.
Bırakma noktaları hücreye göre ortalandı, üstüne 3×3 ızgara oturtuldu.
80,0 mm
ızgara adımı (tasarım 80)
8 mmartık, ortalama
234 mm öndetahta merkezi, tabandan
robotun sağı / soluX / O bölgesi
Kalibrasyon satıcının değil bizim follower'ınki; adımın tam tutması
dönüşümün yeterince doğru olduğunu gösterdi. Taşlar mocap gövde: gripper
kapanınca çene ucuna yapışır, açılınca komuttaki hücreye oturur (kayıtlar
doğrulanmış başarılı yerleştirmeler; ham bırakma noktası hücreden 10–50 mm
sapıyor).
Arayüz
Pencere: mjpythonsim_check/xox_sim.py--viewer
Tuşlar: 1–9 hücre (numpad düzeni), X/O taş; oynat Enter, oyun 1'in sıradaki hamlesi G, sıfırla R
Soru: SmolVLA ile eğitirsek daha az veriyle olur mu? Kaynaklı cevap: hayır.
SmolVLA'nın kazandırdığı şey az veri değil; aynı veriyle daha yüksek başarı,
ışığa ve arka plana dayanıklılık ve dil komutu.
Kaynak
Bulgu
LeRobot SmolVLA dokümanı
~50 bölüm, 5 konum × 10; 25 bölüm "yetmedi"
lerobot issue #1239
30 bölümle SmolVLA başarısız, aynı veriyle ACT çalıştı
ggando.com, 2026-03
50 bölüm / 30 cm alan başarısız; 75 bölüm / 10 cm başarılı; SmolVLA %60–80, ACT %80
SmolVLA makalesi, SO-101
SmolVLA %90 eğitim konumlarında, %50 yeni konumda; ACT %70 / %40
SO-101 VLA benchmark, 2026-06, 100 gösterim
π0.5 %56, ACT %34, SmolVLA %32,5
SEVO, 2026-05
ışık, arka plan ve dikkat dağıtıcıyı kayıtta çeşitlendirmek genellemenin en önemli faktörü
veri sayısı: taban ve tavan
bizim ring-center-v210 bölüm
LeRobot docs tabanı50 bölüm
ggando, başarılı koşu75 bölüm
Konum çeşitliliği pahalı: konum başına 10 gösterim, alan büyüdükçe daha fazla. Küçük alan + çok
tekrar, büyük alan + az tekrardan iyi.
Kararımız: SmolVLA, ama 50 bölüm tabanıyla. Sebep az veri değil; XOX'un 18 görevini tek politikada
cümleyle ayırt etmesi ve Hashtag reçetesinin bu olması.
Soru: MuJoCo'da sentetik veri üretsek? Kaynaklı cevap: 2026 itibarıyla hayır.
MuJoCo'da eğitilip gerçek SO-101'e aktarılmış tek bir ACT/SmolVLA politikası
yayımlanmamış; topluluğun MuJoCo ortamlarının hepsi "sim-only" ya da "phase 2
unstarted".
Ne çalışmış
Koşul
Sonuç
Squint: görsel RL, ağır domain randomization
RTX 3080+, bilek kamerası, siyah fon, küp/kutu
gerçekte %91, 8 görev
NVIDIA Isaac + GR00T N1.6, 75 sim gösterim
RTX 4090 sınıfı, Docker
simde %50–70; gerçekte pick %95→%75, uçtan uca %50→%40
DreamGen: video dünya modeli, "nöral yörüngeler"
13 gerçek + 40 sentetik, tic-tac-toe
GR00T N1 %21 → %45
HIL-SERL SO-101 blogu
MuJoCo → gerçek RL
"başarısız", gerçek robotta devam
LeRobot ekibi simi RL yığınını test etmek ve benchmark için kullanıyor; SO-101
için resmî sim veri seti ya da simde eğitilmiş checkpoint yok. Hashtag
Robotics'te sim, chunk'ı gerçek kola göndermeden önce fizikten geçirmek için
var.
Bizim simülasyon görselleştirme ve yörünge kontrolü için kalıyor. Çeşitlilik simden değil kayıt
protokolünden gelecek: 5 konum × 10 bölüm, sonra tahta durumu çeşitliliği.
Strands Agent (Ollama vision modeli) yasal hücreyi seçer, deterministik kod 18 cümleden birini üretir
mimari
Üst kameratahta durumu
→
Strands Agentyasal hücre
→
Şablon18 cümleden biri
→
SmolVLA50 adımlık chunk
→
Doğrulamaüst kamera
Bizim farklarımız: taşlar doğaçlama (metal halka O, ince artı X), üst kamera C310, taşların
bölgeleri tersti, düzelttik. Aynı olanlar: iki kamera, cümle şablonu, görev başına ~10 bölüm,
SmolVLA, Colab.
●resource
Colab bütçesi ve Mac inference
Eğitim Colab'da, çalıştırma Mac'te. İkisinin de sayısı ya ölçüldü ya
kaynaktan alındı.
Kalem
Değer
Not
Colab Pro
100 birim / ay
elde var
A100
5–11 birim / saat
2026 ölçümleri farklı; yaklaşık
SmolVLA 20k adım, batch 64, A100
4–5 saat, ~$2–4
docs + topluluk
Oturum limiti
12 saat
checkpoint Drive'a, --resume
Hashtag'in 120k koşusu
14,7 saat, ~80 birim
oturuma sığmaz; gereksiz
L4 (22 GB)
batch 8–16
A100 yoksa
Varsayılan reçete ucuz
LeRobot'un kurulu SmolVLA varsayılanı tam fine-tune değil:
freeze_vision_encoder=True, train_expert_only=True. 450M parametrenin
sadece ~100M'lik aksiyon uzmanı eğitiliyor. Toplulukta çalışan sonuçlar
(ggando %60–80, Galway 8/10, cn0303) bu varsayılanla alındı. Hashtag ikisini
de kapatıp tam fine-tune yapmış; belgelenmiş bir kazancı yok.
Mac'te çalıştırma
0,37 s
SmolVLA, 50 adımlık chunk, M5 MPS
1,67 s hareketchunk'ın karşılığı, 30 fps
40 msACT ensemble modu, adım başına
Sync modda SmolVLA'yı 4,5 Hz'de "kullanılamaz" bulan ekip var; Mac'te
CUDA'sız ACT'i 15 Hz'de çalıştırınca başarının %90'dan %40'a düştüğünü ölçen
de. Bu yüzden rollout komutunda RTC var:
--inference.type=rtc--inference.rtc.execution_horizon=10--inference.rtc.max_guidance_weight=10.0.
Chunk hesabı kol hareket ederken yapılır, kol beklemez.
Karar 16 Eylül'de verildi: gerçek teleop verisi, SmolVLA fine-tune (Colab
A100), Mac'te RTC inference, sabit fikstür. Sim sentetik veri yok. Bu hafta
robottan uzaktayım; haftaya devam.
dört faz
Faz 0 · donanımC310 üst kamera ✓ · baskılar ve fikstür plakası ○
Faz 1 · yüzük v350 bölüm, 5 konum × 10 · Colab SmolVLA 20k · Mac RTC
Faz 2 · XOX18 görev × 10 bölüm · satıcı checkpoint'inden fine-tune
Faz 3 · oyun katmanıhamle seçimi (Strands ya da minimax) · doğrulama
Faz
Amaç
Çıkış ölçütü
1 · yüzük v3
kayıt protokolünü öğrenmek, Colab ve RTC akışını bir kez uçtan uca görmek; ~$3
10 denemede 6–8 başarı
2 · XOX koşu A
satıcı checkpoint'inden uzman-only 20k, ucuz
18 görev × 3 deneme tablosu
2 · XOX koşu B
A zayıfsa smolvla_base tam fine-tune 40k
aynı tablo, A ile karşılaştır
3 · oyun
politika oturduktan sonra
bir oyunu baştan sona oynamak
Faz 1'in gerekçesi: XOX 180 bölümlük bir kayıt; protokol hatasını orada değil
50 bölümlük bir turda öğrenmek daha ucuz.
Bizzat görülen üç hata plana girdi: kamera açısı kaydı, operatör kadrajda, yüzük konumu kaydı.
Literatürde de en sık başarısızlık nedenleri bunlar.
Ayrıntılı liste so101/todo.md; kayıt planı bir sonraki kartta.
◐note
Kayıt protokolü ve XOX planı
Kurallar her bölümde aynı. Bunları tutan bir 50 bölüm, tutmayan 200 bölümden
iyi.
Kadrajda hareket eden tek şey follower. Leader ve operatör her iki
kameranın dışında.
Kamera, tahta, çerçeveler, kol tabanı oturum boyunca hiç oynamaz; ışık
sabit. Bantla işaretle.
Bölüm başlar başlamaz hareket. Tek hamlede kavra, hücreye bırak, gripper'ı
aç, kolu başlangıca getir, → ile bölümü hemen bitir. Bozuk
bölüm ←.
Alınacak taş her bölümde yuvasının içinde farklı bir noktada; 1–3 cm oynat,
döndür.
Konum çeşitliliği küçük alanda, çok tekrarla: 5 konum × 10 bölüm.
XOX planı: 18 blok × 10 bölüm
Her blok bir görev cümlesi ve tek bir lerobot-record çağrısı;
--dataset.single_task bu sürümde bölüm başına değişmiyor. Bloklar X/O
dönüşümlü, üç oturum, oturum başına 6 blok, yaklaşık bir saat. Her bölüm için
plan tahtada hangi taşların duracağını ve alınacak taşın yuvasını söylüyor;
dataset'teki episode_index plandaki numarayla aynı olur. Üretici
scripts/xox_kayit_plani.py, çıktı kayit_plani_xox.md.
#
blok içi
tahta (önce) üst │ orta │ alt
taş
alınacak taş
60
1/10
. . . │ . . X │ . . O
2
X yuva 3
…
180 satır, her biri bir bölüm
tahta durumu kuralları
X hamlesi#X = #O
→
O hamlesi#X = #O + 1
→
bitmiş tahta yok
→
hedef hücre boş
doluluk 0–6
→
her yuva en az bir kez
→
X/O dönüşümlü bloklar
◌open question
XOX varyantları
Haftaya robotla denenecek varyantlar. Her biri bir soruya cevap veriyor; sırası
maliyete göre.
Varyant
Düzen
Veri
Eğitim
Cevapladığı soru
V0 · yüzük v3
C310 üst + bilek, ızgara, halka
50 bölüm, 5 konum × 10
smolvla_base, uzman-only, 20k, A100
protokol ve Colab → Mac akışı çalışıyor mu
V1 · XOX doğaçlama
metal halka O, ince artı X, C310, bantla çizilmiş bölgeler
180 bölüm, 18 × 10
Hashtag checkpoint'inden uzman-only, 20k
ana deneme: 18 görev, cümleyle ayırt
V2 · XOX tam
V1 verisi
aynı
smolvla_base tam fine-tune, 40k, batch 16
uzman-only yetmezse
V3 · ACT kıyası
V1 verisi
aynı
ACT, M5'te gece, 20k
aynı veride ACT ne yapıyor; ucuz karşılaştırma
V4 · Hashtag seti
baskılı tahta, kare taşlar, kule
180 bölüm
V1 reçetesi
satıcı düzenine sadakat ne kazandırıyor
V5 · tahta çeşitliliği
fikstür yok, tahta her bölümde farklı yerde
300+ bölüm
V2 reçetesi
genelleme; ileride
karar ağacı
V0 6/10+protokol tamam
→
V1 kaydet3 oturum
→
V1 koşu A18 × 3 deneme
→
zayıf görevlere +5 bölüm
→
V2 gerekirse
Ölçüm her varyantta aynı: görev başına 3 deneme, sonuç doğru hücre / yanlış
hücre / düşürdü, tablo. Toplulukta konum çeşitliliği altında %60–80'in üstü
nadir; hedef bu bant, 18 görevde tutarlı.
V1'de taşlar satıcınınkinden farklı olduğu için checkpoint avantajı biraz azalır; 180 bölümle
sorun olmaz. Halkaların açık ahşap üstünde kontrastı düşük; koyu bant ya da koyu mat, tepeden
okuma için.
◐snippet
Komut kartı
Hepsi so101/ içinden, source.venv/bin/activate sonrası. Portlar
değişirse ls/dev/cu.usbmodem*. Kameralar: top index 1 (C310), wrist
index 0.
lerobot-record$ROBOT$LEADER"$CAMS"\--dataset.repo_id=fport/so101_xox_v1--dataset.root=$PWD/data/xox-v1\--dataset.single_task="put the red X in the top left cell"\--dataset.num_episodes=10--dataset.episode_time_s=30--dataset.reset_time_s=20\--dataset.streaming_encoding=true--dataset.encoder_threads=2\--dataset.push_to_hub=false--display_data=true#sonrakibloklar:--resume=true
hfdownloadfport/smolvla_xox_v1--local-dirpolicies/smolvla_xox_v1lerobot-rollout--strategy.type=base$ROBOT"$CAMS"\--policy.path=policies/smolvla_xox_v1--policy.device=mps\--inference.type=rtc--inference.rtc.execution_horizon=10--inference.rtc.max_guidance_weight=10.0\--task="put the red X in the top left cell"--duration=40--display_data=true
Hazır alınmış bir SO-101 çiftinden XOX oynayan bir politikaya: yapılanlar, öğrenilenler, sıradakiler.
The whiteboard needs a wider screen — here are the notes in order.
●note
Kurulum: kutudan çıkış
Hazır alınmış bir SO-101 leader + follower çifti. Motor ID'leri (1–6) ve
baudrate (1.000.000) satıcı tarafından yazılmıştı, lerobot-setup-motors
adımı atlandı. Proje so101/ altında kendi sanal ortamıyla kuruldu:
lerobot[feetech,dataset,viz,training]==0.6.1, MacBook Pro M5, 32 GB.
ilk gün
Kutuiki kol, iki USB
→
Portvoltajla ayır
→
venvlerobot 0.6.1
→
Kalibrasyonertesi gün
Follower
Leader
Motor voltajı
~12,5 V
~5,5 V
Servo
STS3215 ×6
STS3215 ×6
Port (o gün)
usbmodem5AB01794851
usbmodem5A7C1232561
İki USB port, hangisi hangisi? Motordan voltaj oku: 12 V follower, 5 V leader. Port adları yeniden
takınca değişebilir, voltaj değişmez.
●note
Kalibrasyon
Kalibrasyon iki şey kaydeder: her motor için "orta" sayılan sıfır noktası ve
eklemin gidebildiği iki uç. Teleop'ta leader eklemi kendi aralığının yüzde
kaçındaysa follower da kendi aralığının aynı yüzdesine gider; bu yüzden iki
kolun uçları aynı fiziksel açılara denk gelmeli. Dosyalar
so101/calibration/follower.json ve leader.json, 13 Eylül 14:10.
Eklem
Follower
Leader
Fark
shoulder_pan
229°
238°
9°
shoulder_lift
209°
210°
1°
elbow_flex
193°
193°
0°
wrist_flex
197°
206°
8°
gripper
128°
104°
çene / tetik, normal
Hiçbir eklemde drive_mode çevirmek gerekmedi. Aynı dosya iki hafta sonra
MuJoCo'ya da hizmet etti: 2048 tick kalibrasyon orta pozu,
(tick-2048)*360/4096 derece.
Follower sert (1:345 dişli). Dayanağa varmadan bırakınca aralık dar kalıyor ve pozlar "eşit değil"
görünüyor. Her eklemi mekanik sınıra kadar it.
"Press ENTER to use calibration file, or type c" sorusunda Enter
dosyayı kullanır, c baştan kalibre eder. Bir kez yanlış tuş, 40 dakika.
Arkadaşın gönderdiği dosyalar kolların eski montajına aitti: dirsekte 78° hayali aralık, tutucu
88° kaymış. Kalibrasyon kola değil, o günkü montaja aittir.
●note
Teleop ve üç tuzak
13 Eylül: leader'ı elle oynat, follower birebir izlesin. Beş eklemin yönü de
doğru çıktı, takip hatası ortalama 1 birim (aralığın %0,5'i). Ama oraya üç
tuzaktan geçerek varıldı.
takip hatası, kayıt sırasında (norm birim, -100..100)
shoulder_pan0.64birim
shoulder_lift1.75birim
elbow_flex2.25birim
wrist_flex1.36birim
--robot.max_relative_target=2 freni dirseği kilitledi. Kontrolcü sadece P ile çalışıyor; hedef
ile konum farkı 2 birimle sınırlanınca yerçekimi yükündeki dirseği kıpırdatacak kuvvet oluşmadı.
Fren yok, resmî akış neyse o. Hashtag Robotics 5.0 kullanıyor; gerekmedikçe verme.
İki kol masada aynı yöne bakmalı, operatör arkada. Birbirine dönük durunca omuz ve taban aynada
gibi "ters" görünür, aslında doğrudur. drive_mode çevirme, düzeni düzelt.
Teleop açıkken seri porta ikinci bir süreç dokunursa ikisi de düşer: "multiple access on port".
Önce kapat, sonra oku.
◐note
Kameralar
İki görüş, 640×480, 30 fps. Bilek kamerası kutudan çıkan modül; ön/üst görüş
için önce MacBook'un kendi kamerası kullanıldı, iki hafta sonra sabit bir
Logitech C310 tepeye alındı.
Ad
Donanım
OpenCV index
Ne görüyor
wrist
USB2.0_CAM1, Sonix 05A3:9230, bileğe monte
0
iki çene ve aralarındaki nesne
front (v2, eski)
MacBook dahili kamera
1
tahta, halka, kol; ekran açısına bağlı
top (16 Eylül)
Logitech C310, masanın üstünde
1
tahta, iki bölge, kol tabanı; tepeden
Ders: kamera bir donanım değil, bir sözleşme
İlk robot denemesinde politika dinlenme pozundan çıkmadı. Sebep laptop
ekranıydı: kayıt gecesi ekran daha öne eğikti, denemede daha dik. Model bu
görüntüyü hiç görmemişti. Ekran eğitimdeki açıya getirilince kol yüzüğe gitti.
Kayıt başladıktan sonra kameranın yeri, açısı, ışığı bir daha değişmez; laptop
kamerası bunu vaat edemez, masaya sabitlenmiş C310 eder.
Elenenler: GoPro Hero 5 USB'den kamera değil hafıza kartı olarak görünüyor,
HDMI yakalama kartı ister. iPhone Continuity Camera Mac'te kamera olarak
listeleniyor, yedek olarak duruyor. Hashtag'in kulesindeki 32×32 mm modül
(referans: Innomaker U20CAM-1080P) sadece kuleye birebir oturmak istenirse.
●experiment
İlk veri seti: ring-center-v2
14 Eylül, data/ring-center-v2. Görev cümlesi: "Pick up the white ring and
place it in the center square of the grid."
10
bölüm
8 040kare, 30 fps
21–33 sbölüm süresi
170 MBdisk
bir bölümün ritmi
Recordinghalkayı al, ortaya koy, kolu geri getir, →
→
Resethalkayı yeni noktaya koy, leader'a dokunma
→
Kötü bölüm← ile sil, tekrar çek
→
BitirEsc
Sabit tutulanlar: aynı halka, tahta aynı yerde, aynı başlangıç pozu, aynı
ışık. Değişen tek şey halkanın başlangıç noktası, 15×15 cm'lik bir alan
içinde.
Bölüm bitince video kodlanırken follower birkaç saniye takip etmez; o sırada leader oynatılırsa
sonraki bölümde follower tam hızla sıçrar. --dataset.streaming_encoding=true bu donmayı
kaldırdı.
Komutları tam yolla ver. Bir kez data/ içinden çalıştırılınca kalibrasyon bulunamadı, veri
yanlış yere yazıldı. ring-center-v1 bu yüzden çöp.
Geriye bakınca
Bu veri setinin üç kusuru ancak robotta ortaya çıktı: her bölümün başında 5–7
saniye hareketsiz bekleme vardı, ön kamerada leader ve elim görünüyordu, ve 10
bölüm her iki yöntem için de tabanın altında. Üçü de bir sonraki kayıt
protokolünde düzeltildi.
●experiment
ACT eğitimi
ACT (Action Chunking with Transformers): iki kamera görüntüsü ve altı eklem
açısından, gelecek 100 adımlık (3,3 s) hareket dizisini tek seferde tahmin
eden bir transformer. Adım adım değil öbek öbek tahmin ettiği için az veriyle
akıcı hareket öğrenir. SO-101 için standart ilk politika.
52 M
parametre
20 000adım, batch 8
1,05 sadım süresi, M5 MPS
5 sa 17 dktoplam
Metrik
Başlangıç
Son (adım 20k)
l1_loss
0,67
0,076
loss
0,091
kld_loss
0,002
epoch
19,9
Kontrol noktaları her 5 000 adımda checkpoints/ altına. caffeinate-i ile
gece boyu; terminal kapanırsa --resume=true.
Kayıp değerinin düşmesi görevin öğrenildiğini söylemez; eğitim verisinin ezberlenebildiğini
söyler. Asıl test bir sonraki kartta.
●experiment
Offline sağlama ve MuJoCo replay
Robota dokunmadan yapılan sağlama: politika, kayıttaki gerçek kamera
karelerini sırayla alır ve tıpkı robotta olduğu gibi 100 adımlık chunk'lar
üretir. Ürettiği aksiyon kayıttaki aksiyonla karşılaştırılır. Kod
so101/sim_check/act_offline_check.py.
pan
lift
elbow
wrist_flex
wrist_roll
gripper
ort.
ACT hatası (MAE, 10 bölüm)
1,2
3,1
3,4
2,3
0,4
0,8
1,85
Leader–follower takip hatası
0,6
1,8
2,3
1,4
0,2
1,4
1,3
Birim: normalize motor konumu (-100..100). Politikanın hatası, kayıt sırasında
follower'ın leader'ı takip hatasıyla aynı seviyede; gripper'ın açılıp kapanma
zamanı da tutuyor.
MuJoCo'da oynatma
Aynı yörüngeler SO-101'in MuJoCo modelinde yan yana oynatıldı: solda kayıt,
sağda tahmin. Uç nokta farkı ortalama 8 mm, en kötü 24 mm. Dönüşüm: normalize
birim, kalibrasyon aralığıyla tick, sonra derece. Izgara adımı iki hafta sonra
Hashtag verisinde tam 80 mm çıkınca bu dönüşümün doğruluğu da kanıtlanmış oldu.
●experiment
Robotta ilk deneme
Bu LeRobot sürümünde lerobot-record politika almıyor; robotta çalıştırma
lerobot-rollout ile. Üç deneme, üç farklı sonuç, hepsi aynı hikâyeyi
anlatıyor.
üç deneme
1ekran açısı farklı
→
kol dinlenme pozunda
→
her 100 karede bilek kıpırdıyor
2açı eşleştirildi
→
kol yüzüğün üstüne gitti
→
yaklaş–çekil döngüsü, gripper açılmadı
3operatör kadrajda
→
kol yine dinlenmede
→
iki küçük hamle, geri
Deneme 1. Rerun'daki aksiyon grafiği periyodikti: her 100 karede, yani her
ACT chunk'ında, bilek biraz kalkıyor, chunk sınırında geri iniyor. Politika
"dinlenme pozunda kal" diyordu. Eğitim karelerine bakınca fark ortaya çıktı:
kayıt gecesi laptop ekranı daha öne eğikti, ızgara ortada, alt şeritte laptop
gövdesi; denemede ekran daha dikti, arka duvar ve lamba görünüyordu.
Deneme 2. Ekran eğitimdeki açıya getirildi. Kol dinlenmeden çıktı, yüzüğün
üstüne uzandı, sonra asılı kaldı: yaklaştı, geri çekildi, yine yaklaştı.
Gripper hiç açılmadı; eğitim verisinde gripper kol yüzüğe vardıktan sonra
açılıyor, kol oraya hiç varmadı. Temporal ensembling
(--policy.temporal_ensemble_coeff=0.01--policy.n_action_steps=1)
checkpoint üstüne yüklenebiliyor, M5'te adım başına 40 ms; denendi, davranış
değişmedi.
Deneme 3. Kayıt sırasında ön kameranın sol yüzde kırkında kolum ve gövdem
vardı. Kol yine dinlenme pozuna yapıştı.
Replay testi: pipeline mi, düzen mi?
lerobot-replay ile bölüm 0'ın kayıtlı aksiyonları follower'a birebir
oynatıldı, 34 saniye, bölüm süresiyle aynı. Kol doğru hareketi yaptı ama
yüzüğü birkaç santim ıskaladı. Yani robot, kalibrasyon (dosya 13 Eylül,
kayıttan önce, değişmemiş), veri ve politika doğru; kayıttan bu yana yüzük ya
da kol tabanı birkaç santim kaymış ve 10 bölümle eğitilmiş politika bunu
tolere edemiyor.
Üç denemenin ortak paydası: politika eğitimde görmediği bir görüntüye düşünce en güvenli şeye,
başlangıç pozuna yapışıyor. Kamera açısı, kadrajdaki insan, kaymış yüzük: hepsi aynı hata sınıfı.
●schema
Neden çalışmadı: ezber mi, genelleme mi
Ağ, "görüntü + eklem açıları (+ cümle) → sonraki 100 eklem hedefi"
fonksiyonunu öğreniyor. Servo okumaları kolun şu an nerede olduğunu, kameralar
nesnelerin nerede olduğunu söylüyor. Kilit nokta: ağ sadece veride
değişen şeyleri kullanmayı öğrenir.
ne öğrenildi, ne öğrenilmedi
Halka her bölümde farklı yerde
→
bilek kamerası bilgi taşıyor
→
kavrama halkaya göre ayarlanıyor ✓
Izgara hep aynı yerde
→
üst görüntü bilgi taşımıyor
→
hücre = sabit eklem açıları ✗
Tam ezber değil, ama ezbere yakın: gördüğü aralıkta genelleme, dışında ezber.
Bir garajda park etmeyi öğrenmiş biri gibi. Gözünü kullanır, çöp kutusu
yerinden oynamışsa fark edip direksiyonu düzeltir; ama başka bir garaja
sokarsan yine eski yerde döner.
LLM bunu çözmez
Hashtag Robotics mimarisinde LLM'in (Strands Agent) işi "hangi hamle" sorusu:
tahtaya bakar, yasal hücreyi seçer, 18 sabit cümleden birini üretir. Cümle
politikaya gider. Politika "top left cell" için eğitimde neredeyse oraya
gider; tahta 10 cm kaydıysa eski yere. LLM'in "tahta 10 cm sağda" diyebileceği
bir kanal yok; cümleye eklesen bile politika o kelimeleri hiç görmedi. LLM
hatayı üst kameradan fark edip yeniden deneyebilir, düzeltemez.
Taşınabilirlik için üç yol
Yol
Ne ister
Karar
Fikstür: tahta, çerçeveler, kol tabanı ve kamera tek plakada
kontrplak, vida
önerilen; "istediğim yere koyayım" geometriyi hiç bozmaz
Veri çeşitliliği: tahta her bölümde farklı yer ve açıda
birkaç yüz bölüm, birkaç eğitim turu
sonra; Hashtag bile yapmamış
Hibrit: ArUco ile tahtayı bul, klasik kontrolle yerleştir
kamera-robot kalibrasyonu, IK
LeRobot dışı, ayrı proje
Taş bekleme bölgesinde 2–3 cm kaymış: olur. Tahta 5 cm kaymış veya dönmüş: yanlış hücre. Kamera
oynamış: çalışmaz. Başka masa, aynı fikstür ve kamera: ışıkla düşer ama çalışabilir.
●schema
MuJoCo XOX tezgâhı
Görüş politikası simde çalıştırılamaz, kamera görüntüsü yok. Ama simülasyon
iki şey için işe yaradı: Hashtag Robotics'in tezgâhını görmek ve yörüngeleri
kontrol etmek. Kod so101/sim_check/xox_*.py, üst repodaki .venv
(mujoco 3.12).
Tezgâh nasıl bulundu
Satıcı ölçülü fikstür çizimi yayımlamamış. Onun yerine 195 gösterimin eklem
kayıtları (sadece parquet, 8 MB, video yok) indirildi; her bölümde gripper'ın
kapandığı ve açıldığı kare ileri kinematikle uç nokta konumuna çevrildi.
Bırakma noktaları hücreye göre ortalandı, üstüne 3×3 ızgara oturtuldu.
80,0 mm
ızgara adımı (tasarım 80)
8 mmartık, ortalama
234 mm öndetahta merkezi, tabandan
robotun sağı / soluX / O bölgesi
Kalibrasyon satıcının değil bizim follower'ınki; adımın tam tutması
dönüşümün yeterince doğru olduğunu gösterdi. Taşlar mocap gövde: gripper
kapanınca çene ucuna yapışır, açılınca komuttaki hücreye oturur (kayıtlar
doğrulanmış başarılı yerleştirmeler; ham bırakma noktası hücreden 10–50 mm
sapıyor).
Arayüz
Pencere: mjpythonsim_check/xox_sim.py--viewer
Tuşlar: 1–9 hücre (numpad düzeni), X/O taş; oynat Enter, oyun 1'in sıradaki hamlesi G, sıfırla R
Soru: SmolVLA ile eğitirsek daha az veriyle olur mu? Kaynaklı cevap: hayır.
SmolVLA'nın kazandırdığı şey az veri değil; aynı veriyle daha yüksek başarı,
ışığa ve arka plana dayanıklılık ve dil komutu.
Kaynak
Bulgu
LeRobot SmolVLA dokümanı
~50 bölüm, 5 konum × 10; 25 bölüm "yetmedi"
lerobot issue #1239
30 bölümle SmolVLA başarısız, aynı veriyle ACT çalıştı
ggando.com, 2026-03
50 bölüm / 30 cm alan başarısız; 75 bölüm / 10 cm başarılı; SmolVLA %60–80, ACT %80
SmolVLA makalesi, SO-101
SmolVLA %90 eğitim konumlarında, %50 yeni konumda; ACT %70 / %40
SO-101 VLA benchmark, 2026-06, 100 gösterim
π0.5 %56, ACT %34, SmolVLA %32,5
SEVO, 2026-05
ışık, arka plan ve dikkat dağıtıcıyı kayıtta çeşitlendirmek genellemenin en önemli faktörü
veri sayısı: taban ve tavan
bizim ring-center-v210 bölüm
LeRobot docs tabanı50 bölüm
ggando, başarılı koşu75 bölüm
Konum çeşitliliği pahalı: konum başına 10 gösterim, alan büyüdükçe daha fazla. Küçük alan + çok
tekrar, büyük alan + az tekrardan iyi.
Kararımız: SmolVLA, ama 50 bölüm tabanıyla. Sebep az veri değil; XOX'un 18 görevini tek politikada
cümleyle ayırt etmesi ve Hashtag reçetesinin bu olması.
Soru: MuJoCo'da sentetik veri üretsek? Kaynaklı cevap: 2026 itibarıyla hayır.
MuJoCo'da eğitilip gerçek SO-101'e aktarılmış tek bir ACT/SmolVLA politikası
yayımlanmamış; topluluğun MuJoCo ortamlarının hepsi "sim-only" ya da "phase 2
unstarted".
Ne çalışmış
Koşul
Sonuç
Squint: görsel RL, ağır domain randomization
RTX 3080+, bilek kamerası, siyah fon, küp/kutu
gerçekte %91, 8 görev
NVIDIA Isaac + GR00T N1.6, 75 sim gösterim
RTX 4090 sınıfı, Docker
simde %50–70; gerçekte pick %95→%75, uçtan uca %50→%40
DreamGen: video dünya modeli, "nöral yörüngeler"
13 gerçek + 40 sentetik, tic-tac-toe
GR00T N1 %21 → %45
HIL-SERL SO-101 blogu
MuJoCo → gerçek RL
"başarısız", gerçek robotta devam
LeRobot ekibi simi RL yığınını test etmek ve benchmark için kullanıyor; SO-101
için resmî sim veri seti ya da simde eğitilmiş checkpoint yok. Hashtag
Robotics'te sim, chunk'ı gerçek kola göndermeden önce fizikten geçirmek için
var.
Bizim simülasyon görselleştirme ve yörünge kontrolü için kalıyor. Çeşitlilik simden değil kayıt
protokolünden gelecek: 5 konum × 10 bölüm, sonra tahta durumu çeşitliliği.
Strands Agent (Ollama vision modeli) yasal hücreyi seçer, deterministik kod 18 cümleden birini üretir
mimari
Üst kameratahta durumu
→
Strands Agentyasal hücre
→
Şablon18 cümleden biri
→
SmolVLA50 adımlık chunk
→
Doğrulamaüst kamera
Bizim farklarımız: taşlar doğaçlama (metal halka O, ince artı X), üst kamera C310, taşların
bölgeleri tersti, düzelttik. Aynı olanlar: iki kamera, cümle şablonu, görev başına ~10 bölüm,
SmolVLA, Colab.
●resource
Colab bütçesi ve Mac inference
Eğitim Colab'da, çalıştırma Mac'te. İkisinin de sayısı ya ölçüldü ya
kaynaktan alındı.
Kalem
Değer
Not
Colab Pro
100 birim / ay
elde var
A100
5–11 birim / saat
2026 ölçümleri farklı; yaklaşık
SmolVLA 20k adım, batch 64, A100
4–5 saat, ~$2–4
docs + topluluk
Oturum limiti
12 saat
checkpoint Drive'a, --resume
Hashtag'in 120k koşusu
14,7 saat, ~80 birim
oturuma sığmaz; gereksiz
L4 (22 GB)
batch 8–16
A100 yoksa
Varsayılan reçete ucuz
LeRobot'un kurulu SmolVLA varsayılanı tam fine-tune değil:
freeze_vision_encoder=True, train_expert_only=True. 450M parametrenin
sadece ~100M'lik aksiyon uzmanı eğitiliyor. Toplulukta çalışan sonuçlar
(ggando %60–80, Galway 8/10, cn0303) bu varsayılanla alındı. Hashtag ikisini
de kapatıp tam fine-tune yapmış; belgelenmiş bir kazancı yok.
Mac'te çalıştırma
0,37 s
SmolVLA, 50 adımlık chunk, M5 MPS
1,67 s hareketchunk'ın karşılığı, 30 fps
40 msACT ensemble modu, adım başına
Sync modda SmolVLA'yı 4,5 Hz'de "kullanılamaz" bulan ekip var; Mac'te
CUDA'sız ACT'i 15 Hz'de çalıştırınca başarının %90'dan %40'a düştüğünü ölçen
de. Bu yüzden rollout komutunda RTC var:
--inference.type=rtc--inference.rtc.execution_horizon=10--inference.rtc.max_guidance_weight=10.0.
Chunk hesabı kol hareket ederken yapılır, kol beklemez.
Karar 16 Eylül'de verildi: gerçek teleop verisi, SmolVLA fine-tune (Colab
A100), Mac'te RTC inference, sabit fikstür. Sim sentetik veri yok. Bu hafta
robottan uzaktayım; haftaya devam.
dört faz
Faz 0 · donanımC310 üst kamera ✓ · baskılar ve fikstür plakası ○
Faz 1 · yüzük v350 bölüm, 5 konum × 10 · Colab SmolVLA 20k · Mac RTC
Faz 2 · XOX18 görev × 10 bölüm · satıcı checkpoint'inden fine-tune
Faz 3 · oyun katmanıhamle seçimi (Strands ya da minimax) · doğrulama
Faz
Amaç
Çıkış ölçütü
1 · yüzük v3
kayıt protokolünü öğrenmek, Colab ve RTC akışını bir kez uçtan uca görmek; ~$3
10 denemede 6–8 başarı
2 · XOX koşu A
satıcı checkpoint'inden uzman-only 20k, ucuz
18 görev × 3 deneme tablosu
2 · XOX koşu B
A zayıfsa smolvla_base tam fine-tune 40k
aynı tablo, A ile karşılaştır
3 · oyun
politika oturduktan sonra
bir oyunu baştan sona oynamak
Faz 1'in gerekçesi: XOX 180 bölümlük bir kayıt; protokol hatasını orada değil
50 bölümlük bir turda öğrenmek daha ucuz.
Bizzat görülen üç hata plana girdi: kamera açısı kaydı, operatör kadrajda, yüzük konumu kaydı.
Literatürde de en sık başarısızlık nedenleri bunlar.
Ayrıntılı liste so101/todo.md; kayıt planı bir sonraki kartta.
◐note
Kayıt protokolü ve XOX planı
Kurallar her bölümde aynı. Bunları tutan bir 50 bölüm, tutmayan 200 bölümden
iyi.
Kadrajda hareket eden tek şey follower. Leader ve operatör her iki
kameranın dışında.
Kamera, tahta, çerçeveler, kol tabanı oturum boyunca hiç oynamaz; ışık
sabit. Bantla işaretle.
Bölüm başlar başlamaz hareket. Tek hamlede kavra, hücreye bırak, gripper'ı
aç, kolu başlangıca getir, → ile bölümü hemen bitir. Bozuk
bölüm ←.
Alınacak taş her bölümde yuvasının içinde farklı bir noktada; 1–3 cm oynat,
döndür.
Konum çeşitliliği küçük alanda, çok tekrarla: 5 konum × 10 bölüm.
XOX planı: 18 blok × 10 bölüm
Her blok bir görev cümlesi ve tek bir lerobot-record çağrısı;
--dataset.single_task bu sürümde bölüm başına değişmiyor. Bloklar X/O
dönüşümlü, üç oturum, oturum başına 6 blok, yaklaşık bir saat. Her bölüm için
plan tahtada hangi taşların duracağını ve alınacak taşın yuvasını söylüyor;
dataset'teki episode_index plandaki numarayla aynı olur. Üretici
scripts/xox_kayit_plani.py, çıktı kayit_plani_xox.md.
#
blok içi
tahta (önce) üst │ orta │ alt
taş
alınacak taş
60
1/10
. . . │ . . X │ . . O
2
X yuva 3
…
180 satır, her biri bir bölüm
tahta durumu kuralları
X hamlesi#X = #O
→
O hamlesi#X = #O + 1
→
bitmiş tahta yok
→
hedef hücre boş
doluluk 0–6
→
her yuva en az bir kez
→
X/O dönüşümlü bloklar
◌open question
XOX varyantları
Haftaya robotla denenecek varyantlar. Her biri bir soruya cevap veriyor; sırası
maliyete göre.
Varyant
Düzen
Veri
Eğitim
Cevapladığı soru
V0 · yüzük v3
C310 üst + bilek, ızgara, halka
50 bölüm, 5 konum × 10
smolvla_base, uzman-only, 20k, A100
protokol ve Colab → Mac akışı çalışıyor mu
V1 · XOX doğaçlama
metal halka O, ince artı X, C310, bantla çizilmiş bölgeler
180 bölüm, 18 × 10
Hashtag checkpoint'inden uzman-only, 20k
ana deneme: 18 görev, cümleyle ayırt
V2 · XOX tam
V1 verisi
aynı
smolvla_base tam fine-tune, 40k, batch 16
uzman-only yetmezse
V3 · ACT kıyası
V1 verisi
aynı
ACT, M5'te gece, 20k
aynı veride ACT ne yapıyor; ucuz karşılaştırma
V4 · Hashtag seti
baskılı tahta, kare taşlar, kule
180 bölüm
V1 reçetesi
satıcı düzenine sadakat ne kazandırıyor
V5 · tahta çeşitliliği
fikstür yok, tahta her bölümde farklı yerde
300+ bölüm
V2 reçetesi
genelleme; ileride
karar ağacı
V0 6/10+protokol tamam
→
V1 kaydet3 oturum
→
V1 koşu A18 × 3 deneme
→
zayıf görevlere +5 bölüm
→
V2 gerekirse
Ölçüm her varyantta aynı: görev başına 3 deneme, sonuç doğru hücre / yanlış
hücre / düşürdü, tablo. Toplulukta konum çeşitliliği altında %60–80'in üstü
nadir; hedef bu bant, 18 görevde tutarlı.
V1'de taşlar satıcınınkinden farklı olduğu için checkpoint avantajı biraz azalır; 180 bölümle
sorun olmaz. Halkaların açık ahşap üstünde kontrastı düşük; koyu bant ya da koyu mat, tepeden
okuma için.
◐snippet
Komut kartı
Hepsi so101/ içinden, source.venv/bin/activate sonrası. Portlar
değişirse ls/dev/cu.usbmodem*. Kameralar: top index 1 (C310), wrist
index 0.
lerobot-record$ROBOT$LEADER"$CAMS"\--dataset.repo_id=fport/so101_xox_v1--dataset.root=$PWD/data/xox-v1\--dataset.single_task="put the red X in the top left cell"\--dataset.num_episodes=10--dataset.episode_time_s=30--dataset.reset_time_s=20\--dataset.streaming_encoding=true--dataset.encoder_threads=2\--dataset.push_to_hub=false--display_data=true#sonrakibloklar:--resume=true
hfdownloadfport/smolvla_xox_v1--local-dirpolicies/smolvla_xox_v1lerobot-rollout--strategy.type=base$ROBOT"$CAMS"\--policy.path=policies/smolvla_xox_v1--policy.device=mps\--inference.type=rtc--inference.rtc.execution_horizon=10--inference.rtc.max_guidance_weight=10.0\--task="put the red X in the top left cell"--duration=40--display_data=true