LeRobot documentation
HopeJR
HopeJR
Prasyarat
Install LeRobot
Ikuti instruksi pemasangan untuk menginstal LeRobot.
Instal LeRobot dengan dependensi HopeJR:
pip install -e ".[hopejr]"Konfigurasi Perangkat
Sebelum memulai kalibrasi dan pengoperasian, Anda perlu mengidentifikasi port USB untuk setiap komponen HopeJR. Jalankan skrip ini untuk menemukan port USB untuk lengan, tangan, sarung tangan, dan eksoskeleton:
lerobot-find-port
Hal ini akan menampilkan port USB yang tersedia beserta perangkat terkait. Catat jalur port (misalnya, /dev/tty.usbmodem58760433331, /dev/tty.usbmodem11301) karena Anda perlu menyajikannya pada parameter --robot.port dan --teleop.port saat merekam data, memutar ulang episode, atau menjalankan skrip teleoperation.
Langkah 1: Kalibrasi
Sebelum melakukan teleoperation, anggota tubuh HopeJR perlu dikalibrasi. File kalibrasi akan disimpan di ~/.cache/huggingface/lerobot/calibration
1.1 Kalibrasi Tangan Robot
lerobot-calibrate \
--robot.type=hope_jr_hand \
--robot.port=/dev/tty.usbmodem58760432281 \
--robot.id=blue \
--robot.side=rightSaat menjalankan skrip kalibrasi, GUI kalibrasi akan muncul. Sendi jari diberi nama sebagai berikut:
Pratinjau:
- CMC: sendi dasar yang menghubungkan ibu jari ke tangan
- MCP: sendi buku
- PIP: sendi jari pertama
- DIP : sendi ujung jari
Jari telunjuk, jari tengah, jari manis, dan jari kelingking:
- Fleksor radial: Menggerakkan pangkal jari menuju ibu jari
- Fleksor ulnar: Menggerakkan pangkal jari ke arah jari kelingking
- PIP/DIP: Membengkokkan falang distal dan proksimal jari
Setiap satu dari ini perlu dikalibrasi secara individual melalui GUI. Perhatikan bahwa fleksor ulnar dan radial harus memiliki rentang dengan ukuran yang sama (tetapi dengan offset yang berbeda) untuk mendapatkan gerakan yang simetris.

Gunakan antarmuka kalibrasi untuk mengatur batas rentang untuk setiap sendi seperti yang ditunjukkan di atas.

Setelah Anda mengatur batas yang sesuai untuk semua sendi, klik “Save” untuk menyimpan nilai kalibrasi ke motor.
1.2 Kalibrasi Sarung Tangan Teleoperator
lerobot-calibrate \
--teleop.type=homunculus_glove \
--teleop.port=/dev/tty.usbmodem11201 \
--teleop.id=red \
--teleop.side=rightGerakkan setiap jari melalui rentang gerakannya secara penuh, dimulai dari ibu jari.
Move thumb through its entire range of motion.
Recording positions. Press ENTER to stop...
-------------------------------------------
NAME | MIN | POS | MAX
thumb_cmc | 1790 | 1831 | 1853
thumb_mcp | 1497 | 1514 | 1528
thumb_pip | 1466 | 1496 | 1515
thumb_dip | 1463 | 1484 | 1514Lanjutkan dengan setiap jari:
Move middle through its entire range of motion.
Recording positions. Press ENTER to stop...
-------------------------------------------
NAME | MIN | POS | MAX
middle_mcp_abduction | 1598 | 1718 | 1820
middle_mcp_flexion | 1512 | 1658 | 2136
middle_dip | 1484 | 1500 | 1547Setelah kalibrasi selesai, sistem akan menyimpan kalibrasi ke /Users/your_username/.cache/huggingface/lerobot/calibration/teleoperators/homunculus_glove/red.json
1.3 Kalibrasi Lengan Robot
lerobot-calibrate \
--robot.type=hope_jr_arm \
--robot.port=/dev/tty.usbserial-1110 \
--robot.id=whiteIni akan membuka GUI kalibrasi di mana Anda dapat mengatur batas rentang untuk setiap motor. Gerakan lengan diorganisasikan sebagai berikut:
- Bahu: pitch, yaw, dan roll
- Siku: fleksi
- Wrist: pitch, yaw, dan roll

Gunakan antarmuka kalibrasi untuk mengatur batas rentang untuk setiap sendi. Gerakkan setiap sendi melalui rentang gerakannya secara penuh dan sesuaikan nilai minimum dan maksimum sesuai kebutuhan. Setelah Anda mengatur batas yang tepat untuk semua sendi, simpan kalibrasi.
1.4 Kalibrasi Eksoskeleton Teleoperator
lerobot-calibrate \
--teleop.type=homunculus_arm \
--teleop.port=/dev/tty.usbmodem11201 \
--teleop.id=blackEksoskeleton memungkinkan Anda mengendalikan lengan robot. Selama kalibrasi, Anda akan diminta untuk menggerakkan semua sendi melalui rentang gerak penuh mereka:
Move all joints through their entire range of motion.
Recording positions. Press ENTER to stop...
-------------------------------------------
-------------------------------------------
NAME | MIN | POS | MAX
shoulder_pitch | 586 | 736 | 895
shoulder_yaw | 1257 | 1374 | 1390
shoulder_roll | 449 | 1034 | 2564
elbow_flex | 3023 | 3117 | 3134
wrist_roll | 3073 | 3096 | 3147
wrist_yaw | 2143 | 2171 | 2185
wrist_pitch | 1975 | 1993 | 2074
Calibration saved to /Users/your_username/.cache/huggingface/lerobot/calibration/teleoperators/homunculus_arm/black.jsonLangkah 2: Teleoperation
Karena konflik variabel global di middleware Feetech, teleoperation untuk lengan dan tangan harus dijalankan di sesi shell yang terpisah:
Tangan
lerobot-teleoperate \
--robot.type=hope_jr_hand \
--robot.port=/dev/tty.usbmodem58760432281 \
--robot.id=blue \
--robot.side=right \
--teleop.type=homunculus_glove \
--teleop.port=/dev/tty.usbmodem11201 \
--teleop.id=red \
--teleop.side=right \
--display_data=true \
--fps=30Arm
lerobot-teleoperate \
--robot.type=hope_jr_arm \
--robot.port=/dev/tty.usbserial-1110 \
--robot.id=white \
--teleop.type=homunculus_arm \
--teleop.port=/dev/tty.usbmodem11201 \
--teleop.id=black \
--display_data=true \
--fps=30Langkah 3: Rekam, Putar Ulang, Latih
Rekam, Putar Ulang, dan Latih dengan Hope-JR masih bersifat eksperimental.
Rekam
Langkah ini mencatat dataset, yang dapat dilihat sebagai contoh di sini.
lerobot-record \
--robot.type=hope_jr_hand \
--robot.port=/dev/tty.usbmodem58760432281 \
--robot.id=right \
--robot.side=right \
--robot.cameras='{"main": {"type": "opencv", "index_or_path": 0, "width": 640, "height": 480, "fps": 30}}' \
--teleop.type=homunculus_glove \
--teleop.port=/dev/tty.usbmodem1201 \
--teleop.id=right \
--teleop.side=right \
--dataset.repo_id=<USER>/hand_record_test_with_video_data \
--dataset.single_task="Hand recording test with video data" \
--dataset.num_episodes=1 \
--dataset.episode_time_s=5 \
--dataset.push_to_hub=true \
--dataset.private=true \
--dataset.streaming_encoding=true \
--dataset.encoder_threads=2 \
--display_data=true
# Optional: --dataset.rgb_encoder.vcodec=autoUlang
lerobot-replay \
--robot.type=hope_jr_hand \
--robot.port=/dev/tty.usbmodem58760432281 \
--robot.id=right \
--robot.side=right \
--dataset.repo_id=<USER>/hand_record_test_with_camera \
--dataset.episode=0Latih
lerobot-train \
--dataset.repo_id=<USER>/hand_record_test_with_video_data \
--policy.type=act \
--output_dir=outputs/train/hopejr_hand \
--job_name=hopejr \
--policy.device=mps \
--trackio.enable=true \
--policy.repo_id=<USER>/hand_test_policyEvaluasi
lerobot-record \
--robot.type=hope_jr_hand \
--robot.port=/dev/tty.usbmodem58760432281 \
--robot.id=right \
--robot.side=right \
--robot.cameras='{"main": {"type": "opencv", "index_or_path": 0, "width": 640, "height": 480, "fps": 30}}' \
--display_data=false \
--dataset.repo_id=<USER>/eval_hopejr \
--dataset.single_task="Evaluate hopejr hand policy" \
--dataset.num_episodes=10 \
--dataset.streaming_encoding=true \
--dataset.encoder_threads=2 \
--policy.path=outputs/train/hopejr_hand/checkpoints/last/pretrained_model
# Optional: --dataset.rgb_encoder.vcodec=auto