LeRobot documentation

Reachy 2

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.7.0).
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 打造的开源人形机器人,专为具身智能和现实世界应用的开发而设计。 请访问 Pollen Robotics 网站,或查阅 Reachy 2 文档 以获取有关该平台的更多信息!

远程操控 Reachy 2

目前,有两种方式可以远程操控 Reachy 2:

  • Pollen Robotics 的 VR 远程操作(未包含在 LeRobot 中)。
  • 机器人对机器人远程操作(使用一台 Reachy 2 控制另一台)。

Reachy 2 仿真

(仅限 Linux)你可以使用提供的 Docker 镜像在仿真环境(Gazebo 或 MuJoCo)中运行 Reachy 2。

  1. 安装 Docker Engine。
  2. 运行(用于 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:=true

如果 MuJoCo 运行缓慢(仿真频率低),请在上一条命令后追加 -e LD_LIBRARY_PATH="/opt/host-libs:$LD_LIBRARY_PATH" \ 以提升性能:

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

设置

先决条件

  • 在您的机器人上,检查 服务镜像 是否满足最低版本要求:
    • reachy2-core >= 1.7.5.2
    • webrtc >= 2.0.1.1

然后,如果您想使用 VR 远程操作:

我们建议使用两台计算机:一台用于遥操作(需要 Windows 系统),另一台用于使用 LeRobot 进行录制。

安装 LeRobot

请按照安装说明安装 LeRobot。

安装 LeRobot 及其 Reachy 2 依赖项:

pip install -e ".[reachy2]"

步骤 1:录制

获取 Reachy 2 的 IP 地址

在开始遥操作和数据记录之前,请找到机器人的 IP 地址。 我们强烈建议通过Ethernet连接所有设备(PC 和机器人)。

发布录像

使用 LeRobot 的 lerobot-record 命令来管理录制会话。此处之前记录的 pollen_data_acquisition_server 工作流已不再可用。

在使用 Reachy 2 VR 遥操作应用时,请选择“Standard session”。VR 应用负责控制机器人的运动,而 lerobot-record 负责管理数据集并启动和停止 episode。

使用 lerobot-record 进行录制

Reachy 2 完全受 LeRobot 的录制功能支持。

示例:在没有移动底座的情况下开始录制: 首先,在录制脚本的导入部分添加 reachy2 和 reachy2_teleoperator。然后,您可以使用以下命令:

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

特定选项

扩展设置概览(包含所有选项):

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() 是否向机器人发送指令。在使用 VR 遥操作应用时,必须将其设置为 false,因为该应用已经会发送指令。

--teleop.use_present_position

确定遥操作者读取的是机器人的目标位置还是当前位置。 如果使用顺从式 Reachy 2 来控制另一台机器人,则必须设置为 true。

使用相关部分

根据我们的初步测试,当只有部分关节在运动时,记录所有关节可能会降低某些策略下的模型质量。 为避免这种情况,您可以使用以下方法将特定部分排除在记录和重放之外:

--robot.with_<part>=false

其中 <part> 为以下之一:mobile_base、l_arm、r_arm",neck,antennas`。 它决定对应的部件是否被记录在观测中。如果未设置,则为 True。

默认情况下,所有部分都会被记录。

reachy2_teleoperator 中也提供了相同的按部件机制。

--teleop.with\_<part>

其中 <part> 为以下之一:mobile_base、l_arm、r_arm",neck,antennas`。 确定对应的部件是否记录在动作中。如果未设置,则为 True。

重要:在同一个会话中,机器人和遥操作端的启用部分必须一致。 例如,如果机器人以 --robot.with_mobile_base=false 运行,则遥操作端必须禁用相同的部分 --teleoperator.with_mobile_base=false。

使用相关的摄像头

你可以对cameras执行相同操作。使用以下命令以默认参数启用或禁用每个摄像头:

--robot.with_left_teleop_camera=<true|false> \
--robot.with_right_teleop_camera=<true|false> \
--robot.with_torso_camera=<true|false>

默认情况下,不会记录任何摄像头,所有摄像头参数均设置为 false。 如果需要,可以使用 --robot.camera_width & --robot.camera_height 参数为 Reachy 2 的摄像头指定自定义的 width 和 height 参数:

--robot.camera_width=1920 \
--robot.camera_height=1080

这将更改所有 3 个默认机器人摄像头的分辨率(由上述布尔参数启用)。

如果需要,你可以像往常一样,使用以下方式为机器人添加除其自带相机之外的其他相机:

--robot.cameras="{ extra: {type: opencv, index_or_path: 42, width: 640, height: 480, fps: 30}}" \

步骤 2:重放

确保机器人配置了与数据集相同的部件:

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

步骤 3:训练

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

步骤 4:评估

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

已移动的章节:

[ (可选但推荐)安装 pollen_data_acquisition_server ]

[ 选项 1:使用 Pollen 数据采集服务器(推荐用于 VR 遥操作) ]

[ 选项 2:使用 lerobot.record ]

Update on GitHub