LeRobot documentation
Reachy 2
Reachy 2
Reachy 2는 Pollen Robotics에서 만든 오픈소스 휴머노이드 로봇으로, 구체화된 AI 및 실세계 애플리케이션 개발을 위해 특별히 설계되었습니다. 플랫폼에 대한 자세한 내용은 Pollen Robotics 웹사이트를 확인하거나 Reachy 2 문서에 접근해 보세요!
Reachy 2 원격 조작
현재 Reachy 2를 원격 조작하는 방법은 두 가지입니다:
- Pollen Robotics의 VR 원격 조작(LeRobot에 포함되지 않음).
- 로봇 간 원격 조작(Reachy 2 한 대를 사용하여 다른 로봇을 제어)
Reachy 2 시뮬레이션
(Linux 전용) 제공된 Docker image를 사용하여 Reachy 2를 시뮬레이션(Gazebo 또는 MuJoCo)에서 실행할 수 있습니다.
- Docker Engine를 설치합니다.
- 실행 (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:=trueMuJoCo가 느리게 실행되는 경우(낮은 시뮬레이션 주파수), 성능을 개선하려면 이전 명령에
-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 원격 조종을 사용하려면:
- Reachy 2 원격 조작 애플리케이션을 설치합니다. 버전은 >=v1.2.0 이상을 사용하세요.
두 대의 컴퓨터 사용을 권장합니다: 텔레오퍼레이션용(Windows 필요) 한 대와 LeRobot으로 녹화하는 용도 한 대입니다.
LeRobot 설치
LeRobot를 설치하려면 설치 지침을 따르세요.
Reachy 2의 종속성을 포함하여 LeRobot을 설치합니다:
pip install -e ".[reachy2]"1단계: 녹음
Reachy 2 IP 주소 가져오기
텔레오퍼레이션 및 데이터 기록을 시작하기 전에 로봇의 IP 주소를 확인하세요. 모든 장치(PC 및 로봇)를 Ethernet으로 연결하는 것을 강력히 권장합니다.
발표 영상
LeRobot의 lerobot-record 명령을 사용하여 녹화 세션을 관리합니다. 이전에 여기에 문서화된 pollen_data_acquisition_server 워크플로우는 더 이상 사용할 수 없습니다.
Reachy 2 VR 원격 조작 애플리케이션을 사용할 때는 “Standard session”을 선택합니다. VR 애플리케이션은 로봇의 움직임을 제어하고, lerobot-record는 데이터셋을 관리하며 에피소드의 시작과 정지를 담당합니다.
lerobot-record로 녹화
Reachy 2는 LeRobot의 녹화 기능에 의해 완전히 지원됩니다.
예: 모바일 베이스 없이 녹화를 시작하기: 먼저 record 스크립트의 import에 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를 사용하여 다른 Reachy 2를 제어하는 경우 true로 설정해야 합니다.
관련된 부분만 사용
초기 테스트 결과, 일부 관절만 움직이는 경우 모든 관절을 기록하면 특정 정책에서 모델 품질이 저하될 수 있습니다. 이를 방지하려면 다음을 사용하여 특정 부위의 기록 및 재생을 제외할 수 있습니다:
--robot.with_<part>=false<part>은 다음 중 하나입니다: mobile_base, l_arm, r_arm",neck,antennas`.
해당 부분이 observations에 기록되는지 여부를 결정합니다. 설정되지 않은 경우 True입니다.
기본적으로 모든 부분이 기록됩니다.
reachy2_teleoperator에서도 동일한 부분별 메커니즘을 사용할 수 있습니다.
--teleop.with\_<part>
<part>은 다음 중 하나입니다: mobile_base, l_arm, r_arm",neck,antennas`.
해당 부분이 actions에 기록되어 있는지 확인합니다. 설정되지 않은 경우 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
…
원하시는 경우, …를 사용하여 로봇에 포함된 카메라 외에 추가 카메라를 추가할 수 있습니다:
--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=03단계: 학습
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_policy4단계: 평가
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 텔레오퍼레이션에 권장) ]
Update on GitHub