LeRobot documentation
Reachy 2
Reachy 2
Reachy 2 là một robot hình người mã nguồn mở do Pollen Robotics sản xuất, được thiết kế đặc biệt cho việc phát triển AI có thân xác (embodied AI) và các ứng dụng thực tế. Xem trang web của Pollen Robotics, hoặc truy cập tài liệu của Reachy 2 để biết thêm thông tin về nền tảng!
Điều khiển từ xa Reachy 2
Hiện tại, có hai cách để điều khiển từ xa Reachy 2:
- VR teleoperation của Pollen Robotics (không có trong LeRobot).
- Teleoperation giữa các robot (dùng một Reachy 2 để điều khiển một robot khác).
Mô phỏng Reachy 2
(Chỉ dành cho Linux) Bạn có thể chạy Reachy 2 trong môi trường mô phỏng (Gazebo hoặc MuJoCo) bằng cách sử dụng ảnh Docker được cung cấp.
- Cài đặt Docker Engine.
- Chạy (cho 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:=trueNếu MuJoCo chạy chậm (tần số mô phỏng thấp), hãy thêm
-e LD_LIBRARY_PATH="/opt/host-libs:$LD_LIBRARY_PATH" \vào lệnh trước đó để cải thiện hiệu suất: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
Cài đặt
Yêu cầu tiên quyết
- Trên robot của bạn, hãy kiểm tra xem ảnh dịch vụ có đáp ứng các phiên bản tối thiểu sau không:
- reachy2-core >= 1.7.5.2
- webrtc >= 2.0.1.1
Sau đó, nếu bạn muốn sử dụng điều khiển từ xa VR:
- Cài đặt ứng dụng teleoperation Reachy 2. Sử dụng phiên bản >=v1.2.0
Chúng tôi khuyến nghị sử dụng hai máy tính: một máy để điều khiển từ xa (yêu cầu hệ điều hành Windows) và một máy khác để ghi hình với LeRobot.
Cài đặt LeRobot
Làm theo các hướng dẫn cài đặt để cài đặt LeRobot.
Cài đặt LeRobot với các phụ thuộc của Reachy 2:
pip install -e ".[reachy2]"Bước 1: Ghi âm
Lấy địa chỉ IP của Reachy 2
Trước khi bắt đầu điều khiển từ xa và ghi lại dữ liệu, hãy tìm địa chỉ IP của robot. Chúng tôi khuyến nghị mạnh mẽ việc kết nối tất cả các thiết bị (PC và robot) qua Ethernet.
Bản ghi buổi ra mắt
Sử dụng lệnh lerobot-record của LeRobot để quản lý các phiên ghi hình. Quy trình pollen_data_acquisition_server được tài liệu hóa trước đây tại đây không còn khả dụng nữa.
Khi sử dụng ứng dụng teleoperation VR Reachy 2, hãy chọn “Standard session”. Ứng dụng VR điều khiển chuyển động của robot, trong khi lerobot-record quản lý bộ dữ liệu và bắt đầu cũng như kết thúc các episode.
Ghi hình với lerobot-record
Reachy 2 được hỗ trợ đầy đủ bởi các tính năng ghi hình của LeRobot.
Ví dụ: bắt đầu ghi âm mà không có đế di động: Trước tiên, thêm reachy2 và reachy2_teleoperator vào phần import của script ghi âm. Sau đó, bạn có thể sử dụng lệnh sau:
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=trueTùy chọn cụ thể
Tổng quan về cài đặt mở rộng (bao gồm tất cả các tùy chọn):
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
Xác định xem LeRobot robot.send_action() có gửi lệnh đến robot hay không. Bắt buộc phải đặt thành false khi sử dụng ứng dụng teleoperation VR, vì ứng dụng đã gửi lệnh.
--teleop.use_present_position
Xác định xem người vận hành từ xa đọc mục tiêu hay vị trí hiện tại của robot. Phải được đặt thành true nếu một Reachy 2 tuân thủ được sử dụng để điều khiển một Reachy 2 khác.
Sử dụng các phần liên quan
Từ các bài kiểm tra ban đầu của chúng tôi, việc ghi lại tất cả các khớp khi chỉ một số khớp đang di chuyển có thể làm giảm chất lượng mô hình với một số chính sách nhất định. Để tránh điều này, bạn có thể loại trừ các phần cụ thể khỏi việc ghi và phát lại bằng cách sử dụng:
--robot.with_<part>=falsevới <part> là một trong các giá trị: mobile_base, l_arm, r_arm",neck,antennas`.
Nó xác định xem phần tương ứng có được ghi lại trong các quan sát hay không. Mặc định là True nếu không được đặt.
Mặc định, tất cả các phần đều được ghi lại.
Cơ chế theo từng phần tương tự cũng có sẵn trong reachy2_teleoperator.
--teleop.with\_<part>
với <part> là một trong các giá trị: mobile_base, l_arm, r_arm",neck,antennas`.
Xác định xem phần tương ứng có được ghi lại trong các hành động hay không. True nếu không được đặt.
Quan trọng: Trong một phiên nhất định, các phần được bật phải khớp nhau trên cả robot và thiết bị điều khiển từ xa. Ví dụ, nếu robot chạy với
--robot.with_mobile_base=false, thiết bị điều khiển từ xa phải tắt cùng phần đó--teleoperator.with_mobile_base=false.
Sử dụng các camera phù hợp
Bạn có thể thực hiện tương tự cho cameras. Bật hoặc tắt từng camera với các tham số mặc định bằng cách sử dụng:
--robot.with_left_teleop_camera=<true|false> \
--robot.with_right_teleop_camera=<true|false> \
--robot.with_torso_camera=<true|false>Mặc định, không có camera nào được ghi lại, tất cả các đối số camera đều được đặt thành false.
Nếu bạn muốn, bạn có thể sử dụng các tham số width và height tùy chỉnh cho các camera của Reachy 2 bằng cách sử dụng đối số --robot.camera_width & --robot.camera_height:
--robot.camera_width=1920 \ --robot.camera_height=1080
Điều này sẽ thay đổi độ phân giải của cả 3 camera robot mặc định (được bật bởi các đối số bool ở trên).
Nếu bạn muốn, bạn có thể thêm các camera bổ sung ngoài những camera trên robot như bình thường bằng cách sử dụng:
--robot.cameras="{ extra: {type: opencv, index_or_path: 42, width: 640, height: 480, fps: 30}}" \Bước 2: Phát lại
Đảm bảo robot được cấu hình với các bộ phận giống như trong bộ dữ liệu:
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=0Bước 3: Huấn luyện
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_policyBước 4: Đánh giá
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_modelCác phần đã được chuyển:
[ (Tùy chọn nhưng được khuyến nghị) Cài đặt pollen_data_acquisition_server ]
[ Tùy chọn 1: Sử dụng máy chủ thu thập dữ liệu Pollen (khuyến nghị cho VR teleop) ]
[ Tùy chọn 2: Sử dụng lerobot.record ]
Update on GitHub