LeRobot documentation
SO-101
SO-101

Pada langkah-langkah di bawah, kami menjelaskan cara merakit robot unggulan kami, SO-101.
Sumberkan komponen
Ikuti README ini. Dokumen ini berisi daftar bahan, dengan tautan untuk memesan komponen, serta instruksi untuk mencetak komponen secara 3D. Dokumen ini juga memberikan saran jika ini adalah pertama kalinya Anda mencetak atau jika Anda tidak memiliki printer 3D.
Install LeRobot 🤗
Untuk menginstal LeRobot, ikuti Panduan Instalasi kami
Selain instruksi ini, Anda perlu menginstal Feetech SDK (jika Anda menginstal LeRobot dari PyPI, jalankan pip install 'lerobot[feetech]' sebagai gantinya):
pip install -e ".[feetech]"Instruksi Perakitan Langkah demi Langkah
Lengan pengikut menggunakan 6x motor STS3215 dengan rasio gigi 1/345. Namun, lengan pemimpin menggunakan tiga motor dengan rasio gigi berbeda untuk memastikan bahwa lengan tersebut dapat menopang beratnya sendiri dan dapat digerakkan tanpa memerlukan banyak gaya. Motor yang dibutuhkan untuk setiap sendi ditunjukkan pada tabel di bawah.
| Sumbu Leader-Arm | Motor | Rasio Gigi |
|---|---|---|
| Dasar / Bahu Pan | 1 | 1 / 191 |
| Angkat Bahu | 2 | 1 / 345 |
| Elbow Flex | 3 | 1 / 191 |
| Wrist Flex | 4 | 1 / 147 |
| Wrist Roll | 5 | 1 / 147 |
| Gripper | 6 | 1 / 147 |
Konfigurasikan motor
1. Temukan port USB yang terkait dengan masing-masing lengan
Untuk menemukan port untuk setiap bus servo adapter, hubungkan MotorBus ke komputer Anda melalui USB dan daya. Jalankan skrip berikut dan putuskan MotorBus saat diminta:
lerobot-find-port
Contoh keluaran:
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.Port yang ditemukan adalah: /dev/tty.usbmodem575E0032081 yang sesuai dengan lengan leader atau follower Anda.
Pada Linux, Anda mungkin perlu memberikan akses ke port USB dengan menjalankan:
sudo chmod 666 /dev/ttyACM0
sudo chmod 666 /dev/ttyACM1Contoh keluaran:
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.Port yang ditemukan adalah: /dev/ttyACM1 yang sesuai dengan lengan leader atau follower Anda.
2. Atur id dan baudrate motor
Setiap motor diidentifikasi oleh id unik di bus. Saat baru, motor biasanya memiliki id default 1. Agar komunikasi antara motor dan controller berjalan dengan baik, kita perlu mengatur id unik yang berbeda untuk setiap motor. Selain itu, kecepatan transmisi data di bus ditentukan oleh baudrate. Agar controller dan semua motor dapat berkomunikasi, keduanya harus dikonfigurasi dengan baudrate yang sama.
Untuk tujuan tersebut, kita pertama perlu terhubung ke setiap motor secara individual dengan pengontrol untuk mengatur parameter ini. Karena kita akan menulis parameter ini ke bagian non-volatile dari memori internal motor (EEPROM), kita hanya perlu melakukan ini sekali.
Jika Anda menggunakan ulang motor dari robot lain, kemungkinan besar Anda juga perlu melakukan langkah ini karena id dan baudrate kemungkinan tidak akan cocok.
Video di bawah ini menunjukkan urutan langkah untuk mengatur id motor.
Video pengaturan motor
Pengikut
Hubungkan kabel usb dari komputer dan sumber daya ke papan kontrol lengan pengikut. Kemudian, jalankan perintah berikut atau jalankan contoh API dengan port yang Anda dapatkan dari langkah sebelumnya. Anda juga perlu memberikan nama untuk lengan pengikut Anda dengan parameter id.
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()Anda harus melihat instruksi berikut
Connect the controller board to the 'gripper' motor only and press enter.Sesuai instruksi, colokkan motor gripper. Pastikan itu satu-satunya motor yang terhubung ke papan, dan bahwa motor tersebut belum di-daisy-chain ke motor lain. Saat Anda menekan [Enter], skrip akan secara otomatis mengatur id dan baudrate untuk motor tersebut.
Troubleshooting
Jika Anda mendapatkan error pada titik tersebut, periksa kabel Anda dan pastikan mereka terpasang dengan benar:
- Catu daya
- Kabel USB antara komputer Anda dan papan kontrol
- Kabel 3-pin dari papan pengontrol ke motor
Jika Anda menggunakan papan kontrol Waveshare, pastikan kedua jumper disetel pada kanal B (USB).
Anda seharusnya melihat pesan berikut:
'gripper' motor id set to 6Diikuti oleh instruksi berikutnya:
Connect the controller board to the 'wrist_roll' motor only and press enter.Anda dapat mencabut kabel 3-pin dari papan kontrol, tetapi biarkan kabel tersebut tetap terhubung ke motor gripper di ujung lainnya, karena posisinya sudah tepat. Sekarang, colokkan kabel 3-pin lainnya ke motor pergelangan tangan (wrist roll) dan hubungkan ke papan kontrol. Sama seperti motor sebelumnya, pastikan itu adalah satu-satunya motor yang terhubung ke papan dan motor itu sendiri tidak terhubung ke motor lain.
Ulangi operasi untuk setiap motor sesuai instruksi.
Periksa kabel Anda di setiap langkah sebelum menekan Enter. Misalnya, kabel catu daya bisa terlepas saat Anda memanipulasi papan.
Setelah selesai, skrip akan langsung berakhir, yang berarti motor sudah siap digunakan. Anda sekarang dapat menyambungkan kabel 3-pin dari setiap motor ke motor berikutnya, dan kabel dari motor pertama (‘shoulder pan’ dengan id=1) ke papan kontrol, yang kini dapat dipasang pada dasar lengan.
Pemimpin
Lakukan langkah yang sama untuk lengan pemimpin.
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()Bagian Bersih
Lepaskan semua material penyangga dari bagian yang dicetak 3D. Cara termudah untuk melakukan ini adalah menggunakan obeng kecil untuk mengait bagian bawah material penyangga.
Disarankan untuk memasang satu kabel 3-pin di motor setelah menempatkan kabel-kabel tersebut sebelum melanjutkan perakitan.
Ganda 1
- Pasang kedua klakson motor. Kencangkan klakson atas dengan sekrup M3x6mm. Klakson bawah tidak memerlukan sekrup.
- Letakkan motor pertama ke dalam dasar.
- Kencangkan motor dengan 4 sekrup M2x6mm (sekrup terkecil). Dua dari atas dan dua dari bawah.
- Geser penyangga motor pertama dan kencangkan menggunakan dua sekrup M2x6mm (satu di setiap sisi).
- Lampirkan bagian bahu.
- Kencangkan bagian bahu dengan 4 sekrup M3x6mm di bagian atas dan 4 sekrup M3x6mm di bagian bawah
- Tambahkan pemegang motor bahu.
Gabungan 2
- Pasang kedua klakson motor. Kencangkan klakson atas dengan sekrup M3x6mm. Klakson bawah tidak memerlukan sekrup.
- Geser motor kedua dari atas ke dalam.
- Kencangkan motor kedua dengan 4 sekrup M2x6mm.
- Pasang lengan atas dengan 4 sekrup M3x6mm di setiap sisi.
Ganda 3
- Pasang kedua klakson motor. Kencangkan klakson atas dengan sekrup M3x6mm. Klakson bawah tidak memerlukan sekrup.
- Pasang motor 3 dan kencangkan menggunakan 4 sekrup M2x6mm.
- Hubungkan lengan bawah ke motor 3 menggunakan 4 sekrup M3x6mm di setiap sisi.
Ganda 4
- Pasang kedua klakson motor. Kencangkan klakson atas dengan sekrup M3x6mm. Klakson bawah tidak memerlukan sekrup.
- Geser penyangga motor 4.
- Geser ke motor 4.
- Kencangkan motor 4 dengan 4 sekrup M2x6mm.
Gabungan 5
- Masukkan motor 5 ke dalam penahan pergelangan tangan dan amankan dengan 2 sekrup depan M2x6mm.
- Pasang hanya satu motor horn pada motor pergelangan tangan dan kencangkan dengan sekrup horn M3x6mm.
- Amankan pergelangan tangan ke motor 4 menggunakan 4 sekrup M3x6mm di kedua sisi.
Gripper / Pegangan
- Pasang gripper pada motor 5, lalu pasang ke motor horn di pergelangan tangan menggunakan 4 sekrup M3x6mm.
- Masukkan motor gripper dan amankan dengan 2 sekrup M2x6mm di setiap sisi.
- Pasang kedua motor horns pada gripper motor. Kencangkan horn atas dengan sekrup M3x6mm; tidak diperlukan sekrup untuk horn bawah.
- Pasang cakar gripper dan amankan dengan 4 sekrup M3x6mm di kedua sisi.
- Pasang pemegang pemimpin ke pergelangan tangan dan amankan dengan 4 sekrup M3x6mm.
- Lampirkan gagang ke pemegang pemimpin menggunakan 1 sekrup M2x6mm.
- Masukkan motor gripper, amankan dengan 2 sekrup M2x6mm di setiap sisi, dan pasang motor horn menggunakan sekrup horn M3x6mm.
- Pasang pemicu pengikut dengan 4 sekrup M3x6mm.
Kalibrasi
Selanjutnya, Anda perlu melakukan kalibrasi pada robot Anda untuk memastikan bahwa lengan pemimpin dan pengikut memiliki nilai posisi yang sama ketika berada pada posisi fisik yang sama. Proses kalibrasi sangat penting karena memungkinkan jaringan saraf yang dilatih pada satu robot untuk bekerja pada robot lain.
Pengikut
Jalankan perintah atau contoh API berikut untuk mengkalibrasi lengan pengikut:
# 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()Video di bawah ini menunjukkan cara melakukan kalibrasi. Pertama, Anda perlu memindahkan robot ke posisi di mana semua sendi berada di tengah rentang geraknya. Kemudian, setelah menekan enter, Anda harus menggerakkan setiap sendi melalui seluruh rentang geraknya.
Video kalibrasi
Pemimpin
Lakukan langkah yang sama untuk mengkalibrasi lengan pemimpin, jalankan perintah atau contoh API berikut:
# 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()Selamat 🎉, robot Anda sudah siap untuk belajar tugas secara mandiri. Mulai melatihnya dengan mengikuti tutorial ini: Mulai dengan robot dunia nyata
Update on GitHubJika Anda memiliki pertanyaan atau membutuhkan bantuan, silakan hubungi kami di Discord.