LeRobot documentation
Reachy 2
Reachy 2
Reachy 2, Pollen Robotics tarafından geliştirilen, vücutlanmış yapay zeka ve gerçek dünya uygulamalarının geliştirilmesine özel olarak tasarlanmış açık kaynaklı bir humanoid robotudur. Platform hakkında daha fazla bilgi için Pollen Robotics web sitesine göz atabilir veya Reachy 2 dokümantasyonuna erişebilirsiniz!
Reachy 2'yi teleoperate edin
Şu anda Reachy 2'yi teleoperate etmenin iki yolu var:
- Pollen Robotics'ın VR teleoperasyonu (LeRobot'ta yer almaz).
- Robot-robot teleoperasyonu (bir Reachy 2'yi kullanarak diğerini kontrol edin).
Reachy 2 Simülasyonu
(Sadece Linux) Sağlanan Docker görüntüsü ile Reachy 2'yi simülasyonda (Gazebo veya MuJoCo) çalıştırabilirsiniz.
- Docker Engine kurun.
- Çalıştır (MuJoCo için):
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:=trueMuJoCo yavaş çalışıyorsa (düşük simülasyon frekansı), performansı iyileştirmek için önceki komutun sonuna
-e LD_LIBRARY_PATH="/opt/host-libs:$LD_LIBRARY_PATH" \ekleyin: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
Kurulum
Ön koşullar
- Robotunuzda hizmet görüntülerinin asgari sürümleri karşıladığından emin olun:
- reachy2-core >= 1.7.5.2
- webrtc >= 2.0.1.1
Ardından, VR teleoperasyonu kullanmak istiyorsanız:
- Reachy 2 teleoperation uygulamasını yükleyin. >=v1.2.0 sürümünü kullanın
İki bilgisayar kullanmanızı öneririz: biri teleoperasyon için (Windows gereklidir), diğeri ise LeRobot ile kayıt için.
LeRobot'u Yükle
LeRobot'u yüklemek için kurulum talimatlarını izleyin.
Reachy 2 bağımlılıklarıyla LeRobot'u yükleyin:
pip install -e ".[reachy2]"Adım 1: Kayıt
Reachy 2 IP adresini alın
Teleoperasyon ve veri kaydına başlamadan önce robotun IP adresini bulun. Tüm cihazların (PC ve robot) Ethernet üzerinden bağlanmasını şiddetle öneririz.
Tanıtım kaydı
LeRobot’un lerobot-record komutunu kayıt oturumlarını yönetmek için kullanın. Daha önce burada belgelenen pollen_data_acquisition_server iş akışı artık kullanılamıyor.
Reachy 2 VR teleoperation uygulamasını kullanırken “Standard session” seçeneğini seçin. VR uygulaması robotun hareketini kontrol ederken lerobot-record veri setini yönetir ve bölümleri başlatır ve durdurur.
lerobot-record ile kayıt yapın
Reachy 2, LeRobot'un kayıt özellikleri tarafından tam olarak desteklenmektedir.
Örnek: mobil taban olmadan kayıt başlatma: Önce record betiğinin içe aktarmalarına reachy2 ve reachy2_teleoperator ekleyin. Ardından aşağıdaki komutu kullanabilirsiniz:
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=trueBelirli Seçenekler
Genişletilmiş kurulum özeti (tüm seçenekler dahil):
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
LeRobot robot.send_action() fonksiyonunun robota komut gönderip göndermediğini belirler. VR teleoperation uygulaması kullanılırken, uygulama zaten komut gönderdiği için bu değer Must false olarak ayarlanmalıdır.
--teleop.use_present_position
Teleoperatörün robotun hedef konumunu mu yoksa mevcut konumunu mu okuduğunu belirleyin. Uyumlu bir Reachy 2 kullanılarak başka bir Reachy 2 kontrol ediliyorsa true olarak ayarlanmalıdır.
İlgili kısımları kullanın
İlk testlerimizden, yalnızca bazı eklem hareket ederken tüm eklemelerin kaydedilmesinin bazı politikalarla model kalitesini düşürebildiği görülmüştür. Bunu önlemek için, belirli parçaları kaydetme ve oynatma işlemlerinden dışarıda bırakmak için şunu kullanabilirsiniz:
--robot.with_<part>=false<part> aşağıdakilerden biridir: mobile_base, l_arm, r_arm",neck,antennas`.
Bu, ilgili parçanın gözlemlerde kaydedilip kaydedilmediğini belirler. Ayarlanmamışsa True.
Varsayılan olarak, tüm parçalar kaydedilir.
Aynı parça bazlı mekanizma reachy2_teleoperator içinde de mevcuttur.
--teleop.with\_<part>
<part> aşağıdakilerden biri olmalıdır: mobile_base, l_arm, r_arm",neck,antennas`.
İlgili parçanın eylemlerde kaydedilip kaydedilmediğini belirler. Ayarlanmamışsa True.
Önemli: Belirli bir oturumda, etkin parçalar hem robotta hem de teleoperatörde eşleşmelidir. Örneğin, robot
--robot.with_mobile_base=falseile çalışıyorsa, teleoperatör aynı parçayı--teleoperator.with_mobile_base=falseile devre dışı bırakmalıdır.
İlgili kameraları kullanın
cameras için de aynı işlemi yapabilirsiniz. Her kamerayı varsayılan parametrelerle etkinleştirmek veya devre dışı bırakmak için şunu kullanın:
--robot.with_left_teleop_camera=<true|false> \
--robot.with_right_teleop_camera=<true|false> \
--robot.with_torso_camera=<true|false>Varsayılan olarak hiçbir kamera kaydedilmez, tüm kamera argümanları false olarak ayarlanır.
İsterseniz, Reachy 2’nin kameraları için özel width ve height parametrelerini --robot.camera_width & --robot.camera_height argümanını kullanarak belirleyebilirsiniz:
--robot.camera_width=1920 \ --robot.camera_height=1080
Bu, yukarıdaki bool argümanları tarafından etkinleştirilen tüm 3 varsayılan robot kamerasının çözünürlüğünü değiştirecektir.
İsterseniz, robottaki kameraların dışında ek kameraları da şu şekilde ekleyebilirsiniz:
--robot.cameras="{ extra: {type: opencv, index_or_path: 42, width: 640, height: 480, fps: 30}}" \Adım 2: Yeniden oynatma
Robotun veri setindeki parçalarla aynı şekilde yapılandırıldığından emin olun:
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=0Adım 3: Eğitim
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_policyAdım 4: Değerlendirme
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_modelTaşınan bölümler:
[ (İsteğe bağlı ancak önerilir) pollen_data_acquisition_server'ı yükleyin ]
[ Seçenek 1: Pollen veri edinme sunucusunun kullanılması (VR teleop için önerilir) ]
[ Seçenek 2: lerobot.record kullanma ]
Update on GitHub