LeRobot documentation

Reachy 2

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

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.

  1. Docker Engine kurun.
  2. Ç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:=true

MuJoCo 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:

İ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=true

Belirli 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=false ile çalışıyorsa, teleoperatör aynı parçayı --teleoperator.with_mobile_base=false ile 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=0

Adı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_policy

Adı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_model

Taşı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