LeRobot documentation
SO-101
SO-101

Aşağıdaki adımlarda, amiral gemisi robotumuz olan SO-101'in nasıl monte edileceğini açıklıyoruz.
Parçaları temin edin
Bu README dosyasını takip edin. Parçaların temin edileceği bağlantıyı içeren malzeme listesini ve parçaların 3D baskı talimatlarını içerir. Ayrıca, ilk kez baskı yapıyorsanız veya bir 3D yazıcınız yoksa size öneriler sunar.
LeRobot 🤗'u Yükle
LeRobot'u yüklemek için Yükleme Kılavuzumuza göz atın
Bu talimatların yanı sıra Feetech SDK'sını da kurmanız gerekir (LeRobot'u PyPI'den kurduysanız bunun yerine pip install 'lerobot[feetech]' komutunu çalıştırın):
pip install -e ".[feetech]"Adım Adım Montaj Talimatları
Takipçi kol, 1/345 oranlı 6 adet STS3215 motor kullanır. Lider kol ise, kendi ağırlığını taşıyabilmesi ve çok fazla kuvvet gerektirmeden hareket ettirilebilmesi için üç farklı dişli oranına sahip motor kullanır. Hangi eklem için hangi motorun gerektiği aşağıdaki tabloda gösterilmektedir.
| Lider-Kol Ekseni | Motor | Dişli Oranı |
|---|---|---|
| Taban / Omuz Pan | 1 | 1 / 191 |
| Omuz Kaldırma | 2 | 1 / 345 |
| Dirsek Bükme | 3 | 1 / 191 |
| Bilek Esneme | 4 | 1 / 147 |
| Bilek Döndürme | 5 | 1 / 147 |
| Gripper | 6 | 1 / 147 |
Motorları yapılandırın
1. Her kolun ilişkili olduğu USB portlarını bulun
Her bus servo adaptörü için portu bulmak için MotorBus'ü USB ve güç üzerinden bilgisayarınıza bağlayın. Aşağıdaki betiği çalıştırın ve istendiğinde MotorBus'ü ayırın:
lerobot-find-port
Örnek çıktı:
Finding all available ports for the MotorBus.
['/dev/tty.usbmodem575E0032081', '/dev/tty.usbmodem575E0031751']
Remove the USB cable from your MotorsBus and press Enter when done.
[...Disconnect corresponding leader or follower arm and press Enter...]
The port of this MotorsBus is /dev/tty.usbmodem575E0032081
Reconnect the USB cable.Bulunan port: /dev/tty.usbmodem575E0032081, lider veya takipçi kolunuza karşılık gelir.
Linux'ta, USB portlarına erişim vermek için şunu çalıştırmanız gerekebilir:
sudo chmod 666 /dev/ttyACM0
sudo chmod 666 /dev/ttyACM1Örnek çıktı:
Finding all available ports for the MotorBus.
['/dev/ttyACM0', '/dev/ttyACM1']
Remove the usb cable from your MotorsBus and press Enter when done.
[...Disconnect corresponding leader or follower arm and press Enter...]
The port of this MotorsBus is /dev/ttyACM1
Reconnect the USB cable.Bulunan port: /dev/ttyACM1, lider veya takipçi kolunuza karşılık gelir.
2. Motor kimliklerini ve baud oranlarını ayarlayın
Her motor, bus üzerinde benzersiz bir id ile tanımlanır. Sıfır kilometre motorlar genellikle 1 varsayılan id ile gelir. Motorlar ile denetleyici arasındaki iletişimin düzgün çalışması için önce her motora benzersiz, farklı bir id atamamız gerekir. Ayrıca, bus üzerinden veri iletim hızı baudrate ile belirlenir. Birbirleriyle iletişim kurabilmeleri için denetleyici ve tüm motorların aynı baudrate ile yapılandırılması gerekir.
Bu amaçla, öncelikle bu ayarları yapmak için kontrolcü üzerinden her bir motora ayrı ayrı bağlanmamız gerekiyor. Bu parametreleri motorların dahili belleğinin (EEPROM) kalıcı bölümüne yazacağımız için, bunu yalnızca bir kez yapmamız yeterli olacaktır.
Başka bir robottan motorları yeniden kullanıyorsanız, kimlikler ve baudrate muhtemelen eşleşmeyeceği için bu adımı da gerçekleştirmeniz gerekecektir.
Aşağıdaki video, motor kimliklerini ayarlama adımlarının sırasını göstermektedir.
Motor kurulumu videosu
Takipçi
Bilgisayarınızdan ve güç kaynağından gelen USB kablosunu takip kolunun kontrol kartına bağlayın. Ardından, önceki adımda aldığınız portu kullanarak aşağıdaki komutu çalıştırın veya API örneğini çalıştırın. Takip kolunuza id parametresiyle bir ad da vermeniz gerekecektir.
lerobot-setup-motors \
--robot.type=so101_follower \
--robot.port=/dev/tty.usbmodem585A0076841 # <- paste here the port found at previous stepfrom lerobot.robots.so_follower import SO101Follower, SO101FollowerConfig
config = SO101FollowerConfig(
port="/dev/tty.usbmodem585A0076841",
id="my_awesome_follower_arm",
)
follower = SO101Follower(config)
follower.setup_motors()Aşağıdaki talimatı görmelisiniz
Connect the controller board to the 'gripper' motor only and press enter.Talimatlar doğrultusunda, kavrayıcının motorunu takın. Panoya bağlı tek motorun bu olduğundan ve motorun henüz başka bir motora daisy-chain (sıralı) olarak bağlanmadığından emin olun. [Enter] tuşuna bastığınızda, betik o motorun id ve baudrate değerlerini otomatik olarak ayarlayacaktır.
Troubleshooting
Bu noktada bir hata alırsanız, kablolarınızı kontrol edin ve doğru şekilde takıldıklarından emin olun:
- Güç kaynağı
- Bilgisayarınız ile kontrol kartı arasındaki USB kablosu
- Kontrol kartından motora giden 3 pinli kablo
Waveshare kontrol kartı kullanıyorsanız, iki jumper'ın B kanalında (USB) olduğundan emin olun.
Ardından aşağıdaki mesajı görmelisiniz:
'gripper' motor id set to 6Bunu bir sonraki talimat izler:
Connect the controller board to the 'wrist_roll' motor only and press enter.3 pinli kabloyu kontrol kartından çıkarabilirsiniz, ancak diğer ucundaki gripper motoruna bağlı bırakabilirsiniz, çünkü zaten doğru yerdedir. Şimdi, başka bir 3 pinli kabloyu bilek yuvarlama motoruna takın ve kontrol kartına bağlayın. Önceki motorda olduğu gibi, kartın yalnızca bu motora bağlı olduğundan ve motorun kendisinin başka hiçbir motora bağlı olmadığından emin olun.
Talimatlar doğrultusunda işlemi her motor için tekrarlayın.
Enter tuşuna basmadan önce her adımda kablajınızı kontrol edin. Örneğin, anakartı manipüle ederken güç kablosu bağlantısı kopabilir.
İşiniz bittiğinde betik basitçe sona erer ve bu noktada motorlar kullanıma hazır hale gelir. Artık her motorun 3 pinli kablosunu bir sonraki motora, ilk motorun (id=1 olan ‘omuz pan’) kablosunu ise kontrol kartına takabilirsiniz; bu kart artık kolun tabanına bağlanabilir.
Lider
Lider kol için aynı adımları uygulayın.
lerobot-setup-motors \
--teleop.type=so101_leader \
--teleop.port=/dev/tty.usbmodem575E0031751 # <- paste here the port found at previous stepfrom lerobot.teleoperators.so_leader import SO101Leader, SO101LeaderConfig
config = SO101LeaderConfig(
port="/dev/tty.usbmodem585A0076841",
id="my_awesome_leader_arm",
)
leader = SO101Leader(config)
leader.setup_motors()Temiz Parçalar
3D yazdırılmış parçalardan tüm destek malzemesini kaldırın. Bunu yapmanın en kolay yolu, destek malzemesinin altına küçük bir tornavida sokmaktır.
Montajı devam ettirmeden önce, motorun içine yerleştirildikten sonra bir adet 3 pinli kablo takılması önerilir.
Birleşik 1
- Her iki motor kornasını da takın. Üst kornayı bir M3x6mm vida ile sabitleyin. Alt korna için vida gerekmez.
- İlk motoru tabana yerleştirin.
- Motoru 4 adet M2x6mm vida ile sabitleyin (en küçük vidalar). İki tanesini üstten, iki tanesini alttan takın.
- İlk motor tutucusunu kaydırın ve her iki taraftan birer adet olmak üzere iki M2x6mm vida ile sıkıştırın.
- Omuz kısmını takın.
- Omuz kısmını üstte 4 adet M3x6mm ve altta 4 adet M3x6mm vida ile sıkın
- Omuz motor tutucusunu ekleyin.
Birleşik 2
- Her iki motor kornasını da takın. Üst kornayı bir M3x6mm vida ile sabitleyin. Alt korna için vida gerekmez.
- İkinci motoru üstten içeri kaydırın.
- İkinci motoru 4 adet M2x6mm vida ile sabitleyin.
- Üst kolu her iki tarafta 4 adet M3x6mm vida ile sabitleyin.
Birleşik 3
- Her iki motor kornasını da takın. Üst kornayı bir M3x6mm vida ile sabitleyin. Alt korna için vida gerekmez.
- Motor 3'ü takın ve 4 adet M2x6mm vida ile sıkın.
- Ön kolu her iki tarafta 4 adet M3x6mm vida kullanarak motor 3'e bağlayın.
Birleşik 4
- Her iki motor kornasını da takın. Üst kornayı bir M3x6mm vida ile sabitleyin. Alt korna için vida gerekmez.
- Kayar motor tutucu 4.
- Motor 4'te kaydırma.
- Motor 4'ü 4 adet M2x6mm vida ile sıkıca sabitleyin.
Birleşik 5
- Motor 5'i bilek tutucusuna yerleştirin ve 2 adet M2x6mm ön vida ile sabitleyin.
- Sadece bilek motoruna bir motor kornası takın ve M3x6mm korna vidasıyla sabitleyin.
- Bileği, her iki tarafta 4 adet M3x6mm vida kullanarak motor 4'e sabitleyin.
Kavrama / Kulp
- Gripper'i 5 numaralı motora, bilekteki motor boynuna 4 adet M3x6mm vida kullanarak bağlayın.
- Gripper motorunu yerleştirin ve her iki tarafta 2 adet M2x6mm vida ile sabitleyin.
- Her iki motor kornasını da gripper motoruna takın. Üst kornayı M3x6mm vida ile sabitleyin; alt korna için vida gerekmez.
- Gripper pençesini takın ve her iki tarafta 4 adet M3x6mm vida ile sabitleyin.
- Lider tutucuyu bileğe monte edin ve 4 adet M3x6mm vida ile sabitleyin.
- Kolu, 1 adet M2x6mm vida kullanarak lider tutucuya sabitleyin.
- Gripper motorunu yerleştir, her iki tarafta 2 adet M2x6mm vida ile sabitle, bir M3x6mm korn vidası kullanarak bir motor kornu tak.
- Takipçi tetiğini 4 adet M3x6mm vida ile sabitleyin.
Kalibre
Ardından, lider ve takipçi kollarının aynı fiziksel konumda olduklarında aynı konum değerlerine sahip olmasını sağlamak için robotunuzu kalibre etmeniz gerekecektir. Kalibrasyon süreci, bir robot üzerinde eğitilen bir sinir ağının başka bir robot üzerinde de çalışabilmesini sağladığı için çok önemlidir.
Takipçi
Takipçi kolunu kalibre etmek için aşağıdaki komutu veya API örneğini çalıştırın:
# Use the port of your follower arm, and give the arm a unique name with --robot.id
lerobot-calibrate \
--robot.type=so101_follower \
--robot.port=/dev/tty.usbmodem58760431551 \
--robot.id=my_awesome_follower_armfrom lerobot.robots.so_follower import SO101FollowerConfig, SO101Follower
config = SO101FollowerConfig(
port="/dev/tty.usbmodem585A0076891",
id="my_awesome_follower_arm",
)
follower = SO101Follower(config)
follower.connect(calibrate=False)
follower.calibrate()
follower.disconnect()Aşağıdaki video, kalibrasyonun nasıl yapılacağını göstermektedir. Öncelikle robotun, tüm eklemlerin hareket aralıklarının ortasında olduğu konuma taşınması gerekir. Ardından Enter tuşuna bastıktan sonra her bir eklemin tam hareket aralığı boyunca hareket ettirilmesi gerekir.
Kalibrasyon videosu
Lider
Lider kolu kalibre etmek için aynı adımları izleyin, aşağıdaki komutu veya API örneğini çalıştırın:
# Use the port of your leader arm, and give the arm a unique name with --teleop.id
lerobot-calibrate \
--teleop.type=so101_leader \
--teleop.port=/dev/tty.usbmodem58760431551 \
--teleop.id=my_awesome_leader_armfrom lerobot.teleoperators.so_leader import SO101LeaderConfig, SO101Leader
config = SO101LeaderConfig(
port="/dev/tty.usbmodem58760431551",
id="my_awesome_leader_arm",
)
leader = SO101Leader(config)
leader.connect(calibrate=False)
leader.calibrate()
leader.disconnect()Tebrikler 🎉, robotunuz kendi başına bir görev öğrenmeye hazır. Eğitimine bu öğreticiyi izleyerek başlayın: Gerçek dünya robotlarıyla başlangıç
Update on GitHubHerhangi bir sorunuz varsa veya yardıma ihtiyacınız varsa, lütfen Discord üzerinden bize ulaşın.