LeRobot documentation
SO-100
SO-100
Pada langkah-langkah di bawah, kami menjelaskan cara merakit robot SO-100.
Sumberkan komponen
Ikuti README ini. Dokumen tersebut berisi daftar bahan (bill of materials) beserta tautan untuk memesan komponen, serta instruksi untuk mencetak komponen secara 3D. Kami juga memberikan saran jika ini adalah pengalaman pertama Anda dalam mencetak 3D atau jika Anda belum 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]"Konfigurasikan motor
Catatan: Berbeda dengan SO-101, konektor motor tidak mudah diakses setelah lengan dirakit, sehingga langkah konfigurasi harus dilakukan sebelumnya.
1. Temukan port USB yang terkait dengan masing-masing lengan
Untuk menemukan port untuk setiap bus servo adapter, jalankan skrip ini:
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.
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.
Untuk referensi visual tentang cara mengatur id motor, silakan lihat video ini di mana kami mengikuti proses untuk lengan SO101.
lerobot-setup-motors \
--robot.type=so100_follower \
--robot.port=/dev/tty.usbmodem585A0076841 # <- paste here the port found at previous stepfrom lerobot.robots.so_follower import SO100Follower, SO100FollowerConfig
config = SO100FollowerConfig(
port="/dev/tty.usbmodem585A0076841",
id="my_awesome_follower_arm",
)
follower = SO100Follower(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=so100_leader \
--teleop.port=/dev/tty.usbmodem575E0031751 # <- paste here the port found at previous stepfrom lerobot.teleoperators.so_leader import SO100Leader, SO100LeaderConfig
config = SO100LeaderConfig(
port="/dev/tty.usbmodem585A0076841",
id="my_awesome_leader_arm",
)
leader = SO100Leader(config)
leader.setup_motors()Instruksi Perakitan Langkah demi Langkah
Lepaskan roda gigi dari 6 motor penggerak
Video removing gears
Ikuti video untuk melepas roda gigi. Anda perlu melepas roda gigi untuk motor dari lengan pemimpin. Akibatnya, Anda hanya akan menggunakan enkoding posisi motor dan mengurangi gesekan untuk mengoperasikan lengan pemimpin dengan lebih mudah.
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.
Panduan Tambahan
Video assembling arms
Catatan: Video ini memberikan panduan visual untuk merakit lengan, tetapi tidak menjelaskan kapan atau bagaimana melakukan pemasangan kabel. Memasukkan kabel terlebih dahulu jauh lebih mudah daripada melakukannya setelah rakitan selesai. Lengan pertama mungkin membutuhkan waktu lebih dari 1 jam untuk dirakit, tetapi setelah Anda terbiasa, Anda dapat merakit lengan kedua dalam waktu kurang dari 1 jam.
Motor Pertama
Langkah 2: Masukkan Kabel
- Sisipkan dua kabel ke dalam motor pertama.
Langkah 3: Instal di Base
- Letakkan motor pertama ke dalam dasar.
Langkah 4: Amankan Motor
- Kencangkan motor dengan 4 sekrup. Dua dari bagian bawah dan dua dari bagian atas.
Langkah 5: Pasang Penyangga Motor
- Geser penyangga motor pertama dan kencangkan menggunakan dua sekrup (satu di setiap sisi).
Langkah 6: Pasang Klakson Motor
- Pasang kedua tanduk motor, pastikan tanduk atas terpasang dengan sekrup. Usahakan untuk tidak menggeser posisi motor saat memasang tanduk motor, terutama untuk lengan pemimpin, di mana kami telah melepas girnya.
Video adding motor horn
Langkah 7: Pasang Bagian Bahu
- Hubungkan satu kabel ke bagian belakang robot dan kabel lainnya ke sisi kiri atau ke arah Anda (lihat foto).
- Lampirkan bagian bahu.
Langkah 8: Bahu Aman
- Kencangkan bagian bahu dengan 4 sekrup di atas dan 4 di bawah (akses lubang bawah dengan memutar bahu).
Rakitan Motor Kedua
Langkah 9: Instal Motor 2
- Geser motor kedua dari atas ke dalam dan hubungkan kabel dari motor 1 ke motor 2.
Langkah 10: Pasang Penyangga Bahu
- Tambahkan pemegang motor bahu.
- Pastikan kabel dari motor 1 ke motor 2 melewati belakang penyangga, sementara kabel lainnya diarahkan ke atas (lihat foto).
- Bagian ini bisa terasa ketat saat dirakit, Anda dapat menggunakan bangku kerja seperti pada gambar atau pengaturan serupa untuk mendorong bagian tersebut di sekitar motor.

Langkah 11: Amankan Motor 2
- Kencangkan motor kedua dengan 4 sekrup.
Langkah 12: Pasang Klakson Motor
- Pasang kedua tanduk motor ke motor 2, gunakan kembali sekrup tanduk.
Langkah 13: Pasang Dasar
- Pasang pelampiran dasar menggunakan 2 sekrup.
Langkah 14: Pasang Lengan Atas
- Lampirkan lengan atas dengan 4 sekrup di setiap sisi.
Rakitan Motor Ketiga
Langkah 15: Instal Motor 3
- Arahkan kabel motor dari motor 2 melalui penyangga kabel ke motor 3, lalu kencangkan motor 3 dengan 4 sekrup.
Langkah 16: Pasang Klakson Motor
- Pasang kedua tanduk motor ke motor 3 dan kencangkan salah satunya kembali dengan sekrup tanduk.
Langkah 17: Pasang Lengan Bawah
- Hubungkan lengan bawah ke motor 3 menggunakan 4 sekrup di setiap sisi.
Rakitan Motor Keempat
Langkah 18: Instal Motor 4
- Masukkan motor 4, sambungkan kabel dari motor 3, dan kunci kabel di tempatnya dengan sekrup.

Langkah 19: Pasang Penyangga Motor 4
- Pasang pemegang motor keempat (pasangannya ketat). Pastikan satu kabel diarahkan ke atas dan kabel dari motor 3 diarahkan ke bawah (lihat foto).
Langkah 20: Amankan Motor 4 & Pasang Klakson
- Kencangkan motor 4 dengan 4 sekrup dan pasang tanduk motornya, gunakan satu sekrup tanduk untuk salah satunya.
Perakitan Pergelangan
Langkah 21: Instal Motor 5
- Masukkan motor 5 ke dalam penahan pergelangan tangan dan amankan dengan 2 sekrup depan.
Langkah 22: Pasang Pergelangan Tangan
- Hubungkan kabel dari motor 4 ke motor 5. Dan sudah sisipkan kabel lainnya untuk gripper.
- Amankan pergelangan tangan ke motor 4 menggunakan 4 sekrup di kedua sisi.
Langkah 23: Pasang Tanduk Pergelangan
- Pasang hanya satu motor horn pada motor pergelangan tangan dan kencangkan dengan sekrup horn.
Konfigurasi Pengikut
Langkah 24: Pasang Gripper
- Pasang gripper ke motor 5.
Langkah 25: Instalasi Motor Gripper
- Masukkan motor gripper, hubungkan kabel motor dari motor 5 ke motor 6, dan kencangkan dengan 3 sekrup di setiap sisi.
Langkah 26: Pasang Tanduk dan Cakar Gripper
- Pasang tanduk motor dan gunakan sekrup tanduk lagi.
- Pasang cengkeram gripper dan amankan dengan 4 sekrup di kedua sisinya.
Langkah 27: Pasang Controller
- Pasang pengontrol motor di bagian belakang robot.

Rakitan selesai – lanjut ke rakitan lengan Leader.
Konfigurasi Leader
Untuk konfigurasi leader, lakukan Langkah 1–23. Pastikan Anda telah melepas roda gigi motor dari motor.
Langkah 24: Pasang Pemegang Pemimpin
- Pasang pemegang pemimpin ke pergelangan tangan dan amankan dengan sekrup.
Langkah 25: Tempelkan Pegangan
- Lampirkan handle ke motor 5 menggunakan 4 sekrup.
Langkah 26: Instalasi Motor Gripper
- Masukkan motor gripper, amankan dengan 3 sekrup di setiap sisi, pasang motor horn menggunakan sekrup horn, dan hubungkan kabel motor.
Langkah 27: Lampirkan Trigger
- Pasang pemicu pengikut dengan 4 sekrup.
Langkah 28: Pasang Controller
- Pasang pengontrol motor di bagian belakang robot.

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=so100_follower \
--robot.port=/dev/tty.usbmodem58760431551 \
--robot.id=my_awesome_follower_armfrom lerobot.robots.so_follower import SO100FollowerConfig, SO100Follower
config = SO100FollowerConfig(
port="/dev/tty.usbmodem585A0076891",
id="my_awesome_follower_arm",
)
follower = SO100Follower(config)
follower.connect(calibrate=False)
follower.calibrate()
follower.disconnect()Kami telah menyatukan metode kalibrasi untuk sebagian besar robot. Dengan demikian, langkah-langkah kalibrasi untuk lengan SO100 ini sama dengan langkah-langkah untuk Koch dan SO101. Pertama, kita harus memindahkan robot ke posisi di mana setiap sendi berada di tengah rentangnya, lalu kita menekan Enter. Kedua, kita memindahkan semua sendi melalui rentang gerak penuh mereka. Video dari proses yang sama untuk SO101 sebagai referensi dapat ditemukan di sini
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=so100_leader \
--teleop.port=/dev/tty.usbmodem58760431551 \
--teleop.id=my_awesome_leader_armfrom lerobot.teleoperators.so_leader import SO100LeaderConfig, SO100Leader
config = SO100LeaderConfig(
port="/dev/tty.usbmodem58760431551",
id="my_awesome_leader_arm",
)
leader = SO100Leader(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.