LeRobot documentation
OpenArm
OpenArm
OpenArm adalah lengan humanoid 7DOF open-source yang dirancang untuk penelitian dan penerapan AI fisik.
Untuk mendapatkan OpenArm Anda, baik yang sudah dirakit maupun rakitan sendiri, dan bergabung dengan komunitas global, jelajahi produsen yang terverifikasi dan tersertifikasi di seluruh dunia di openarm.dev.
Apa yang Unik?
Desakan Skala Manusia: OpenArm dirancang dengan proporsi menyerupai manusia, diskalakan untuk orang dengan tinggi sekitar 160-165 cm. Hal ini memberikan keseimbangan optimal antara jangkauan praktis dan inersia yang dapat dikelola untuk operasi yang aman dan responsif.
Arsitektur Berbasis Keselamatan: Dibangun dengan motor QDD yang dapat dikendalikan mundur dan kepatuhan tinggi, OpenArm mengutamakan interaksi manusia-robot yang aman sambil mempertahankan kemampuan beban praktis (puncak 6,0 kg / nominal 4,1 kg) untuk tugas-tugas di dunia nyata.
Dibangun untuk Ketahanan: Komponen struktural kritis menggunakan konstruksi aluminium dan baja tahan karat, memastikan kinerja yang kokoh untuk pengumpulan data berulang dan penggunaan penelitian berkelanjutan.
Seluruhnya Dapat Diakses & Dibangun: Setiap komponen, mulai dari bagian CNC dan casing yang dicetak 3D hingga kabel listrik, dirancang agar dapat dibeli dan dibangun oleh peneliti individu dan laboratorium, dengan data fabrikasi lengkap yang disediakan.
Praktis & Terjangkau: Dengan harga 6.500 USD untuk sistem bimanual lengkap, OpenArm menghadirkan kemampuan kelas riset dengan biaya yang jauh lebih rendah dibandingkan robot humanoid tradisional.
Persyaratan Platform
**Linux Only**: OpenArm currently only works on Linux. The CAN bus USB adapter does not have macOS drivers and has not been tested on Windows.
Panduan Keselamatan
Sebelum mengoperasikan OpenArm, silakan baca panduan keselamatan resmi. Poin-poin utama:
- Pemasangan aman: Kencangkan lengan ke permukaan datar dan stabil menggunakan sekrup atau klem
- Jarak aman: Jauhkan bagian tubuh dan benda dari jangkauan gerak selama pengoperasian
- Peralatan pelindung: Selalu gunakan kacamata pengaman; gunakan APD tambahan sesuai kebutuhan
- Batas beban: Jangan melebihi batas beban yang ditentukan (6,0 kg puncak / 4,1 kg nominal per lengan)
- Stop darurat: Ketahui lokasi dan cara pengoperasian perangkat stop darurat
- Pemeriksaan rutin: Periksa baut yang longgar, batas mekanis yang rusak, suara yang tidak biasa, dan kerusakan kabel
Pengaturan Perangkat Keras
Ikuti dokumentasi perangkat keras OpenArm resmi untuk:
- Daftar bahan dan pengadaan
- Petunjuk pencetakan 3D
- Perakitan mekanis
- Instalasi kelistrikan
Repositori perangkat keras tersedia di github.com/enactic/openarm.
Pengaturan Bus CAN
OpenArm menggunakan komunikasi CAN bus dengan motor Damiao. Setelah Anda mencolokkan adapter USB CAN bus ke PC Linux Anda, ikuti panduan Damiao Motors dan CAN Bus untuk mengonfigurasi antarmuka.
Pengaturan cepat:
# Setup CAN interfaces
lerobot-setup-can --mode=setup --interfaces=can0,can1
# Test motor communication
lerobot-setup-can --mode=test --interfaces=can0,can1Install LeRobot 🤗
Ikuti Panduan Instalasi kami, lalu instal dukungan motor Damiao:
pip install -e ".[damiao]"Penggunaan
Lengan Pengikut (Robot)
lerobot-calibrate \
--robot.type=openarm_follower \
--robot.port=can0 \
--robot.side=right \
--robot.id=my_openarm_followerfrom lerobot.robots.openarm_follower import OpenArmFollower, OpenArmFollowerConfig
config = OpenArmFollowerConfig(
port="can0",
side="right", # or "left" for left arm
id="my_openarm_follower",
)
follower = OpenArmFollower(config)
follower.connect()
# Read current state
obs = follower.get_observation()
print(obs)
# Send action (position in degrees)
action = {
"joint_1.pos": 0.0,
"joint_2.pos": 0.0,
"joint_3.pos": 0.0,
"joint_4.pos": 45.0,
"joint_5.pos": 0.0,
"joint_6.pos": 0.0,
"joint_7.pos": 0.0,
"gripper.pos": 0.0,
}
follower.send_action(action)
follower.disconnect()Lengan Pemimpin (Teleoperator)
Lengan leader digunakan untuk teleoperasi - menggerakkannya secara manual untuk mengendalikan lengan follower.
lerobot-calibrate \
--teleop.type=openarm_leader \
--teleop.port=can1 \
--teleop.id=my_openarm_leaderfrom lerobot.teleoperators.openarm_leader import OpenArmLeader, OpenArmLeaderConfig
config = OpenArmLeaderConfig(
port="can1",
id="my_openarm_leader",
manual_control=True, # Disable torque for manual movement
)
leader = OpenArmLeader(config)
leader.connect()
# Read current position (as action to send to follower)
action = leader.get_action()
print(action)
leader.disconnect()Teleoperasi
Untuk melakukan teleoperasi OpenArm dengan kontrol leader-follower:
lerobot-teleoperate \
--robot.type=openarm_follower \
--robot.port=can0 \
--robot.side=right \
--robot.id=my_openarm_follower \
--teleop.type=openarm_leader \
--teleop.port=can1 \
--teleop.id=my_openarm_leaderGunakan --robot.id dan --teleop.id yang sama seperti saat kalibrasi, agar LeRobot dapat menemukan file kalibrasi.
Teleoperasi Bimanual
Untuk melakukan teleoperasi pada setup OpenArm bimanual dengan dua lengan leader dan dua lengan follower:
lerobot-teleoperate \
--robot.type=bi_openarm_follower \
--robot.left_arm_config.port=can0 \
--robot.left_arm_config.side=left \
--robot.right_arm_config.port=can1 \
--robot.right_arm_config.side=right \
--robot.id=my_bimanual_follower \
--teleop.type=bi_openarm_leader \
--teleop.left_arm_config.port=can2 \
--teleop.right_arm_config.port=can3 \
--teleop.id=my_bimanual_leaderMerekam Data
Untuk merekam dataset selama teleoperasi:
lerobot-record \
--robot.type=openarm_follower \
--robot.port=can0 \
--robot.side=right \
--robot.id=my_openarm_follower \
--teleop.type=openarm_leader \
--teleop.port=can1 \
--teleop.id=my_openarm_leader \
--dataset.repo_id=${HF_USER}/my_openarm_dataset \
--dataset.single_task="Describe your task here" \
--dataset.fps=30 \
--dataset.num_episodes=10lerobot-record menambahkan tanggal dan waktu sesi ke nama dataset, sehingga disimpan sebagai my_hf_username/my_openarm_dataset_YYYYMMDD_HHMMSS. Lihat panduan perekaman untuk kamera, kontrol keyboard, dan sisa alur kerja.
Opsi Konfigurasi
Konfigurasi Pengikut
| Parameter | Default | Deskripsi |
|---|---|---|
port | - | Antarmuka CAN (misalnya, can0) |
side | None | Sisi lengan: "left", "right", atau None untuk batas kustom |
use_can_fd | True | Aktifkan CAN FD untuk laju data yang lebih tinggi |
can_bitrate | 1000000 | Bitrate nominal (1 Mbps) |
can_data_bitrate | 5000000 | Laju bit data CAN FD (5 Mbps) |
max_relative_target | None | Batas keamanan untuk posisi target relatif |
position_kp | Per sendi | Gain proporsional kontrol posisi |
position_kd | Per sendi | Peningkatan turunan kontrol posisi |
Konfigurasi Leader
| Parameter | Default | Deskripsi |
|---|---|---|
port | - | Antarmuka CAN (misalnya, can1) |
manual_control | True | Nonaktifkan torsi untuk gerakan manual |
use_can_fd | True | Aktifkan CAN FD untuk laju data yang lebih tinggi |
can_bitrate | 1000000 | Bitrate nominal (1 Mbps) |
can_data_bitrate | 5000000 | Laju bit data CAN FD (5 Mbps) |
Konfigurasi Motor
OpenArm menggunakan motor Damiao dengan konfigurasi default berikut:
| Ganda | Jenis Motor | Kirim ID | ID Terima |
|---|---|---|---|
| joint_1 (Pan bahu) | DM8009 | 0x01 | 0x11 |
| joint_2 (Angkat bahu) | DM8009 | 0x02 | 0x12 |
| joint_3 (Rotasi bahu) | DM4340 | 0x03 | 0x13 |
| joint_4 (Fleksi siku) | DM4340 | 0x04 | 0x14 |
| joint_5 (Putaran pergelangan tangan) | DM4310 | 0x05 | 0x15 |
| joint_6 (Pitch pergelangan tangan) | DM4310 | 0x06 | 0x16 |
| joint_7 (Rotasi pergelangan tangan) | DM4310 | 0x07 | 0x17 |
| gripper | DM4310 | 0x08 | 0x18 |
Pemecahan Masalah
Tidak Ada Respons dari Motor
- Periksa koneksi catu daya
- Verify CAN wiring (CAN-H, CAN-L, GND)
- Jalankan diagnostik:
lerobot-setup-can --mode=test --interfaces=can0 - Lihat panduan pemecahan masalah Damiao untuk detail lebih lanjut
CAN Interface Tidak Ditemukan
Pastikan antarmuka CAN telah dikonfigurasi:
ip link show can0