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 打造的开源人形机器人,专为具身智能和现实世界应用的开发而设计。 请访问 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