LeRobot documentation
YAM
YAM
YAM, I2RT Robotics tarafından taklit öğrenme ve somut yapay zeka için geliştirilmiş 6-DOF bir koldur. LeRobot'ta yam_follower, lineer DM4310 gripper'a sahip tek bir standart YAM v1 kolunu sürerken, bi_yam_follower iki kol sürer. Bunları lerobot-calibrate, lerobot-rollout ve lerobot-replay ile kullanın. LeRobot'ta henüz bir YAM lider kol bulunmadığından, bir YAM bir politika tarafından veya bir veri setinin yeniden oynatılmasıyla sürülür.
Kolları birleştirip I2RT’nin kılavuzlarıyla bağlantılarını yapın; bu sayfa LeRobot tarafını kapsar.
| Kılavuz | Kapsamı |
|---|---|
| YAM Arm Serisi | Kutu açma, montaj, kablo bağlantıları, motorlar ve kavrama kolları |
| Yazılım kurulumu | CAN adaptörleri, bit hızı ve sabit arayüz adları |
| YAM Hücresi | İki takipçi ve iki lider içeren iki elle istasyon |

YAM takipçi (sol) ve YAM Hücre iki elle istasyon (sağ). LeRobot takipçileri sürer. Görseller I2RT Robotics tarafından sağlanmıştır.
Donanım ve güvenlik
Her kolun, 1'den 7'ye kadar kimlik numaralarına sahip yedi motoru vardır: 1'den 3'e kadar olan eklem için DM4340, 4'ten 6'ya kadar olan eklem ve kavrama için DM4310. YAM Pro, Ultra, BIG YAM ve diğer kavramalar henüz desteklenmemektedir.
Şunlara ihtiyacınız var:
- Linux ve her kol için bir USB-CAN adaptörü (SocketCAN, klasik CAN, 1 Mbit/s).
- Her motorun CAN zaman aşımı en fazla 400 ms olacak şekilde (
8000tik, I2RT’nin değeri) ayarlanır, örneğin I2RT SDK içindekiset_timeout.py --timeoutile. Zaman aşımı, LeRobot komut göndermeyi durdurursa son güvenlik önlemidir; bu nedenle LeRobot, zaman aşımı olmadan torku etkinleştirmez. - İlk bağlantıda internet erişimi: yerçekimi telafisi, YAM modelini
lerobot/robot-urdfskovasından indirir veHF_LEROBOT_HOME/robot-urdfs/yam/v1altında önbelleğe alır.
Boltu sağlam bir yüzeye sabitleyin ve çalışma alanını boş tutun. Bağlantı kesildiğinde tork devre dışı kalır ve kol yerçekimi etkisiyle düşer: önce destekleyin. Çalışma sırasında güç veya CAN adaptörü bağlantısı kesilirse, programı durdurun, kolu destekleyin ve ardından yeniden bağlayın.
LeRobot 🤗'u Yükle
Yükleme Kılavuzu'nu izleyin, ardından YAM desteğini yükleyin:
pip install -e ".[yam]"Bu komut, kol için motorbridge ve python-can, yerçekimi telafisi için ise placo paketlerini yükler.
Donanımı bağlayın
Her kolun kendi CAN arayüzüne ihtiyacı vardır, çünkü her iki kol da aynı motor kimliklerini kullanır.
lerobot-setup-can --mode=setup --interfaces=can0 --use_fd=falseİki kol için --interfaces=can0,can1 kullanın. Komut, Linux arayüzlerini sudo ip link ile yapılandırır ve motor komutu göndermez. İki kol kullanıldığında, yeniden başlatma sonrası can0 ve can1 yer değiştirebilir: her bir arayüzün hangi kolu sürdüğünü kontrol edin veya I2RT’nin yazılım kurulumu ile can_follower_l gibi sabit adlar verin ve bu adları port olarak kullanın.
Cihaz türleri
| Tür | Cihaz |
|---|---|
yam_follower | Tek takipçi |
bi_yam_follower | İki ellilik takipçi |
İki kolu olan durumlarda, her kolun seçeneklerini --robot.left_arm_config.<option> ve --robot.right_arm_config.<option> ile ayarlayın.
Kalibrasyon
Kalibrasyon yalnızca kavrayıcı sınırlarını ölçer: tamamen kapalı ve tamamen açık konumlar. Eklem fabrika sıfırlarını korur. Aşağıda gösterildiği gibi önce kolu katlayın. Ölçüm sırasında tork kapalıdır: kolu destekleyin, yalnızca kavrayıcıyı elle hareket ettirin ve her istemde Enter tuşuna basın. Daha önce bir kalibrasyon yapıldıysa, bağlantı kontrolü başlatır: yeniden kullanmak için Enter tuşuna basın veya yeniden ölçmek için c yazın; LeRobot, torku kapatmadan önce kolu desteklemenizi ister.

Katlanmış konum, tüm eklem sıfırda (sol) ve doğrusal DM4310 kavrayıcı (sağ). Görseller I2RT Robotics tarafından sağlanmıştır.
lerobot-calibrate --robot.type=yam_follower --robot.port=can0 --robot.id=yam
Sol kavrama ilk ölçülür, ardından sağ kavrama ölçülür ve sonuçlar <id>_left ve <id>_right dosyalarına yazılır.
lerobot-calibrate --robot.type=bi_yam_follower --robot.id=bimanual_yam \ --robot.left_arm_config.port=can0 --robot.right_arm_config.port=can1
Daha sonraki komutlarda aynı --robot.id değerini kullanın, böylece LeRobot kaydedilen dosyayı yükler.
Gözlemler ve eylemler
Bir kol, hem gözlemler hem de eylemler için joint_1.pos ile joint_6.pos arasında, ardından gripper.pos değerlerini içerir. Eklem açıları derece cinsinden mutlak açılardır ve kavrayıcı 0 (kapalı) ile 100 (açık) arasında değişir. use_degrees=false parametresi, I2RT ve MolmoAct2 verilerinin kullandığı gibi radyan ve 0 ile 1 aralığına geçer. use_velocity_and_torque=true parametresi .vel ve .torque gözlemlerini ekler. Eylemler, eklemlerin sınırlarına kırpılmış mutlak eklemler hedefleridir.
İki kol, left_ ve right_ önekleriyle aynı adları kullanır. Bir kola yerleştirilen kameralar da öneklenirken, üst düzey --robot.cameras adlarını korur.
Bir politika çalıştırın
Bağlantıyı kurmadan önce kolu, tüm eklem sıfırda olacak şekilde katlanmış konumuna getirin: LeRobot, her eklem bu konumdan 11,5° içinde olup olmadığını kontrol eder ve ardından kontrolü ölçülen konumdan başlatır. Politika bir eylem gönderene kadar hiçbir şey hareket etmez.
lerobot-rollout \
--robot.type=yam_follower --robot.port=can0 --robot.id=yam \
--robot.cameras='{"wrist": {"type": "opencv", "index_or_path": 0, "width": 640, "height": 480, "fps": 30}}' \
--policy.path=<user>/<policy> \
--task="Pick up the cube"İki kol için --robot.type=bi_yam_follower --robot.id=bimanual_yam --robot.left_arm_config.port=can0 --robot.right_arm_config.port=can1 kullanın. Rollout'u kaydetmek için --dataset.repo_id=<user>/rollout_<name> ekleyin; bkz. Çıkarım çalıştırın ve politikanızı değerlendirin. lerobot-replay, kaydedilmiş bir bölümü aynı --robot.* seçenekleriyle yeniden oynatır.
İlk eylemden önce ve command_timeout_s (1 sn) boyunca hiçbir eylem gelmediğinde kol konumunu korur. idle_mode=float kullanıldığında eklemeler yerine yerçekimi telafisi yapılır ve hafif sönümleme uygulanır; böylece kolu elle hareket ettirebilirsiniz, bu sırada kavrayıcı açılışını korur; takip, kolu nereye taşıdığınızdan devam eder.
Güvenlik
- Bir motor arızası veya eksik geri bildirim tüm komutları durdurur. İki kolu olan sistemlerde, herhangi birinde oluşan arıza her iki kolun da durmasına neden olur. Devam etmek için bağlantıyı kesip yeniden bağlayın.
- Ağırlık modeli, kamerasız veya yük taşıyıcısız standart kolu kapsar. Bunlardan herhangi birini ekledikten sonra, kolun float modunda sapma göstermediğinden emin olun ve sapma varsa
gravity_factorsdeğerini ayarlayın.
Yapılandırma seçenekleri
| Seçenek | Varsayılan | Açıklama |
|---|---|---|
port | zorunlu | Örneğin can0 olan SocketCAN arayüzü |
use_degrees | true | Derece ve 0–100 aralığında bir kavrama; false radyan ve 0–1 aralığını verir |
use_velocity_and_torque | false | .vel ve .torque gözlemlerini ekleyin |
idle_mode | hold | Eylem gelmediğinde pozisyonu hold (tut) veya float (yüzdür) |
command_timeout_s | 1.0 | Boşta kalma moduna geçmeden önce eylemsiz geçen saniyeler |
initial_position_deg | tümü sıfır | Gerekli başlangıç konumu; None kontrolü atlar |
initial_tolerance_deg | 11.5 | Başlangıç konumundan izin verilen mesafe |
gripper_force_limit_n | 50.0 | Kavrayıcı bir nesne üzerinde kilitlendiğinde parmak kuvveti |
gravity_factors | [1.0, 1.1, 1.1, 1.2, 1.0, 1.0] | Ağırlık telafisinin ek başına çarpanları |
cameras | {} | Kolun üzerine takılan kameralar |
Örnek: MolmoAct2
lerobot/MolmoAct2-BimanualYAM-LeRobot, allenai/MolmoAct2-BimanualYAM'in LeRobot biçimindeki versiyonudur ve yayınlanan normalizasyon istatistiklerini içerir. Radyan biriminde ve 0–1 aralığında gripper ile, sırasıyla üst, sol ve sağ olmak üzere üç kamerayla iki YAM kolunda eğitilmiştir; bkz. MolmoAct2.
pip install -e ".[yam,molmoact2,dataset]"
lerobot-rollout \
--robot.type=bi_yam_follower --robot.id=bimanual_yam \
--robot.left_arm_config.port=can0 --robot.right_arm_config.port=can1 \
--robot.left_arm_config.use_degrees=false --robot.right_arm_config.use_degrees=false \
--robot.cameras='{
"top": {"type": "opencv", "index_or_path": "/dev/v4l/by-id/TOP_CAMERA", "width": 640, "height": 480, "fps": 30},
"left": {"type": "opencv", "index_or_path": "/dev/v4l/by-id/LEFT_CAMERA", "width": 640, "height": 480, "fps": 30, "fourcc": "MJPG"},
"right": {"type": "opencv", "index_or_path": "/dev/v4l/by-id/RIGHT_CAMERA", "width": 640, "height": 480, "fps": 30, "fourcc": "MJPG"}
}' \
--policy.path=lerobot/MolmoAct2-BimanualYAM-LeRobot \
--inference.type=rtc --inference.rtc.execution_horizon=20 --inference.queue_threshold=20 \
--device=cuda --interpolation_multiplier=2 \
--interactive=true --play_sounds=false \
--task="Pick up the red block and place it in the green bin"/start yazarak politikayı çalıştırın, /subtask <text> yazarak talimatı değiştirin, /reset yazarak başlangıç konumuna dönün ve /stop yazarak çıkın. Dönüş sabit bir süre boyunca sürer ve YAM’ın hız sınırı hâlâ geçerlidir, bu nedenle başlangıç konumundan uzakta olan bir kol, hedefe ulaşmadan durabilir.
Float modu, politikayı herhangi bir konumdan başlatmanıza olanak tanır: --robot.left_arm_config.idle_mode=float --robot.right_arm_config.idle_mode=float ekleyin. İlk /start komutundan önce ve bir /reset komutu tamamlandıktan 1 sn sonra, kolları istediğiniz yere elle taşıyın, ardından politikayı oradan çalıştırmak için /start yazın. Bunu yapmak için /stop komutunu kullanmayın: bu komut oturumu sonlandırır ve torku devre dışı bırakır.
Sorun Giderme
| Sorun | Kontrol |
|---|---|
| CAN arayüzü eksik veya devre dışı | Adaptörün güç ve USB kablosunu kontrol edin ve ip link show komutunu çalıştırın. lerobot-setup-can komutunu tekrar çalıştırın. |
missing or stale motor feedback | 24 V güç beslemesini, CAN kablolamasını ve sonlandırmayı, 1'den 7'ye kadar motor kimliklerini ve port'un bu kolun arayüzü olduğunu kontrol edin. |
| Yanlış kol hareket ediyor | Her arayüzün hangi kola sürdüğünü kontrol edin veya arayüzlere sabit adlar verin. |
unsafe motor CAN timeout | I2RT SDK ile her motorun CAN zaman aşımını en fazla 400 ms olarak ayarlayın. |
not within initial_tolerance_deg | Bağlantıyı yapmadan önce, tüm eklem sıfırda olacak şekilde kolu katlayın. |
| Bağlantı kurma işlemi, yeniden kalibrasyon yapmanızı ister | Kalibrasyon sırasında kullanılan --robot.id değerini kullanın. |
| Kol, yüzen modda sürüklenir | Kamera veya koldaki yük için gravity_factors değerini ayarlayın. |
| MolmoAct2 kolları yanlış konumlara hareket ettirir | Her iki kolda da use_degrees=false ayarlayın: model radyan ve 0–1 aralığında bir kavrama kullanır. |
Referanslar
- YAM Arm Serisi: donanım, motorlar ve kavrayıcılar
- Yazılım kurulumu: CAN bit hızı ve sabit arayüz adları
- YAM Cell: iki elle istasyon
- I2RT SDK: motor araçları, URDF ve MuJoCo modeli
- YAM ürün sayfası
- MolmoAct2: LeRobot'ta politika yükleme