LeRobot documentation

HopeJR

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

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=right

Saat 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.

Setting boundaries in the hand calibration GUI

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

Saving calibration values

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=right

Gerakkan 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 |   1514

Lanjutkan 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 |   1547

Setelah 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=white

Ini 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

Setting boundaries in the arm calibration GUI

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=black

Eksoskeleton 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.json

Langkah 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=30

Arm

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=30

Langkah 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=auto

Ulang

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=0

Latih

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_policy

Evaluasi

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
Update on GitHub