LeRobot documentation
Reachy 2
Reachy 2
Reachy 2 adalah robot humanoid open-source yang dibuat oleh Pollen Robotics, yang dirancang khusus untuk pengembangan embodied AI dan aplikasi dunia nyata. Lihat situs web Pollen Robotics, atau akses dokumentasi Reachy 2 untuk informasi lebih lanjut tentang platformnya!
Teleoperasi Reachy 2
Saat ini, ada dua cara untuk melakukan teleoperasi Reachy 2:
- Teleoperasi VR dari Pollen Robotics (tidak termasuk dalam LeRobot).
- Teleoperasi antar-robot (menggunakan satu Reachy 2 untuk mengendalikan robot lainnya).
Simulasi Reachy 2
(Hanya Linux) Anda dapat menjalankan Reachy 2 dalam simulasi (Gazebo atau MuJoCo) menggunakan image Docker yang disediakan.
- Instal Docker Engine.
- Jalankan (untuk MuJoCo):
docker run --rm -it \
--name reachy \
--privileged \
--network host \
--ipc host \
--device-cgroup-rule='c 189:* rwm' \
--group-add audio \
-e ROS_DOMAIN_ID="$ROS_DOMAIN_ID" \
-e DISPLAY="$DISPLAY" \
-e RCUTILS_CONSOLE_OUTPUT_FORMAT="[{severity}]: {message}" \
-e REACHY2_CORE_SERVICE_FAKE="${REACHY2_CORE_SERVICE_FAKE:-true}" \
-v /dev:/dev \
-v "$HOME/.reachy_config":/home/reachy/.reachy_config_override \
-v "$HOME/.reachy.log":/home/reachy/.ros/log \
-v /usr/lib/x86_64-linux-gnu:/opt/host-libs \
--entrypoint /package/launch.sh \
pollenrobotics/reachy2_core:1.7.5.9_deploy \
start_rviz:=true start_sdk_server:=true mujoco:=trueJika MuJoCo berjalan lambat (frekuensi simulasi rendah), tambahkan
-e LD_LIBRARY_PATH="/opt/host-libs:$LD_LIBRARY_PATH" \ke perintah sebelumnya untuk meningkatkan kinerja:docker run --rm -it \ --name reachy \ --privileged \ --network host \ --ipc host \ --device-cgroup-rule='c 189:* rwm' \ --group-add audio \ -e ROS_DOMAIN_ID="$ROS_DOMAIN_ID" \ -e DISPLAY="$DISPLAY" \ -e RCUTILS_CONSOLE_OUTPUT_FORMAT="[{severity}]: {message}" \ -e REACHY2_CORE_SERVICE_FAKE="${REACHY2_CORE_SERVICE_FAKE:-true}" \ -e LD_LIBRARY_PATH="/opt/host-libs:$LD_LIBRARY_PATH" \ -v /dev:/dev \ -v "$HOME/.reachy_config":/home/reachy/.reachy_config_override \ -v "$HOME/.reachy.log":/home/reachy/.ros/log \ -v /usr/lib/x86_64-linux-gnu:/opt/host-libs \ --entrypoint /package/launch.sh \ pollenrobotics/reachy2_core:1.7.5.9_deploy \ start_rviz:=true start_sdk_server:=true mujoco:=true
Setup
Prasyarat
- Di robot Anda, periksa apakah image layanan memenuhi versi minimum:
- reachy2-core >= 1.7.5.2
- webrtc >= 2.0.1.1
Lalu, jika Anda ingin menggunakan teleoperasi VR:
- Instal aplikasi teleoperasi Reachy 2. Gunakan versi >=v1.2.0
Kami merekomendasikan penggunaan dua komputer: satu untuk teleoperation (memerlukan Windows) dan satu lagi untuk perekaman dengan LeRobot.
Install LeRobot
Ikuti instruksi pemasangan untuk menginstal LeRobot.
Instal LeRobot dengan dependensi Reachy 2:
pip install -e ".[reachy2]"Langkah 1: Perekaman
Dapatkan alamat IP Reachy 2
Sebelum memulai teleoperation dan perekaman data, cari alamat IP robot. Kami sangat merekomendasikan untuk menghubungkan semua perangkat (PC dan robot) melalui Ethernet.
Rekaman peluncuran
Gunakan perintah lerobot-record dari LeRobot untuk mengelola sesi perekaman. Alur kerja pollen_data_acquisition_server yang sebelumnya didokumentasikan di sini tidak lagi tersedia.
Saat menggunakan aplikasi teleoperasi VR Reachy 2, pilih “Standard session”. Aplikasi VR mengontrol gerakan robot, sementara lerobot-record mengelola dataset serta memulai dan menghentikan episode.
Rekam dengan lerobot-record
Reachy 2 sepenuhnya didukung oleh fitur perekaman LeRobot.
Contoh: mulai perekaman tanpa basis mobile: Pertama, tambahkan reachy2 dan reachy2_teleoperator ke impor skrip record. Kemudian, Anda dapat menggunakan perintah berikut:
lerobot-record \
--robot.type=reachy2 \
--robot.ip_address=192.168.0.200 \
--robot.id=r2-0000 \
--robot.use_external_commands=true \
--robot.with_mobile_base=false \
--teleop.type=reachy2_teleoperator \
--teleop.ip_address=192.168.0.200 \
--teleop.with_mobile_base=false \
--robot.with_torso_camera=true \
--dataset.repo_id=pollen_robotics/record_test \
--dataset.single_task="Reachy 2 recording test" \
--dataset.num_episodes=1 \
--dataset.episode_time_s=5 \
--dataset.fps=15 \
--dataset.push_to_hub=true \
--dataset.private=true \
--dataset.streaming_encoding=true \
--dataset.encoder_threads=2 \
# --dataset.rgb_encoder.vcodec=auto \
--display_data=trueOpsi Spesifik
Ikhtisar setup yang diperluas (semua opsi disertakan):
lerobot-record \
--robot.type=reachy2 \
--robot.ip_address=192.168.0.200 \
--robot.use_external_commands=true \
--robot.with_mobile_base=true \
--robot.with_l_arm=true \
--robot.with_r_arm=true \
--robot.with_neck=true \
--robot.with_antennas=true \
--robot.with_left_teleop_camera=true \
--robot.with_right_teleop_camera=true \
--robot.with_torso_camera=false \
--robot.camera_width=640 \
--robot.camera_height=480 \
--robot.disable_torque_on_disconnect=false \
--robot.max_relative_target=5.0 \
--teleop.type=reachy2_teleoperator \
--teleop.ip_address=192.168.0.200 \
--teleop.use_present_position=false \
--teleop.with_mobile_base=false \
--teleop.with_l_arm=true \
--teleop.with_r_arm=true \
--teleop.with_neck=true \
--teleop.with_antennas=true \
--dataset.repo_id=pollen_robotics/record_test \
--dataset.single_task="Reachy 2 recording test" \
--dataset.num_episodes=1 \
--dataset.episode_time_s=5 \
--dataset.fps=15 \
--dataset.push_to_hub=true \
--dataset.private=true \
--dataset.streaming_encoding=true \
--dataset.encoder_threads=2 \
# --dataset.rgb_encoder.vcodec=auto \
--display_data=true--robot.use_external_commands
Tentukan apakah LeRobot robot.send_action() mengirim perintah ke robot. Harus diset ke false saat menggunakan aplikasi teleoperasi VR, karena aplikasi tersebut sudah mengirim perintah.
--teleop.use_present_position
Tentukan apakah teleoperator membaca tujuan atau posisi saat ini dari robot. Harus diset ke true jika Reachy 2 yang compliant digunakan untuk mengontrol satu lagi.
Gunakan bagian-bagian yang relevan
Dari pengujian awal kami, merekam semua sendi saat hanya sebagian yang bergerak dapat mengurangi kualitas model pada beberapa kebijakan. Untuk menghindari hal ini, Anda dapat mengecualikan bagian tertentu dari perekaman dan pemutaran ulang menggunakan:
--robot.with_<part>=falsedengan <part> sebagai salah satu dari: mobile_base, l_arm, r_arm",neck,antennas`.
Ini menentukan apakah bagian yang sesuai dicatat dalam observasi. True jika tidak disetel.
Secara default, semua bagian direkam.
Mekanisme per-bagian yang sama juga tersedia di reachy2_teleoperator.
--teleop.with\_<part>
dengan <part> sebagai salah satu dari: mobile_base, l_arm, r_arm",neck,antennas`.
Tentukan apakah bagian yang sesuai dicatat dalam aksi. True jika tidak disetel.
Penting: Dalam satu sesi, bagian yang diaktifkan harus sama pada robot dan teleoperator. Sebagai contoh, jika robot dijalankan dengan
--robot.with_mobile_base=false, teleoperator harus menonaktifkan bagian yang sama--teleoperator.with_mobile_base=false.
Gunakan kamera yang relevan
Anda dapat melakukan hal yang sama untuk cameras. Aktifkan atau nonaktifkan setiap kamera dengan parameter default menggunakan:
--robot.with_left_teleop_camera=<true|false> \
--robot.with_right_teleop_camera=<true|false> \
--robot.with_torso_camera=<true|false>Secara default, tidak ada kamera yang direkam, semua argumen kamera diatur ke false.
Jika Anda ingin, Anda dapat menggunakan parameter width dan height kustom untuk kamera Reachy 2 menggunakan argumen --robot.camera_width & --robot.camera_height:
--robot.camera_width=1920 \ --robot.camera_height=1080
Hal ini akan mengubah resolusi dari semua 3 kamera robot default (diaktifkan oleh argumen bool di atas).
Jika Anda ingin, Anda dapat menambahkan kamera tambahan selain yang ada di robot seperti biasa dengan:
--robot.cameras="{ extra: {type: opencv, index_or_path: 42, width: 640, height: 480, fps: 30}}" \Langkah 2: Replay
Pastikan robot dikonfigurasi dengan bagian yang sama seperti dataset:
lerobot-replay \
--robot.type=reachy2 \
--robot.ip_address=192.168.0.200 \
--robot.use_external_commands=false \
--robot.with_mobile_base=false \
--dataset.repo_id=pollen_robotics/record_test \
--dataset.episode=0Langkah 3: Latih
lerobot-train \
--dataset.repo_id=pollen_robotics/record_test \
--policy.type=act \
--output_dir=outputs/train/reachy2_test \
--job_name=reachy2 \
--policy.device=mps \
--trackio.enable=true \
--policy.repo_id=pollen_robotics/record_test_policyLangkah 4: Evaluasi
lerobot-eval \
--robot.type=reachy2 \
--robot.ip_address=192.168.0.200 \
--dataset.repo_id=pollen_robotics/eval_record_test \
--dataset.single_task="Evaluate reachy2 policy" \
--dataset.num_episodes=10 \
--policy.path=outputs/train/reachy2_test/checkpoints/last/pretrained_modelBagian yang dipindahkan:
[ (Opsional tetapi disarankan) Instal pollen_data_acquisition_server ]
[ Opsi 1: Menggunakan server akuisisi data Pollen (disarankan untuk teleop VR) ]
[ Opsi 2: Menggunakan lerobot.record ]
Update on GitHub