English | ็ฎไฝไธญๆ
OpenPI Runtime ๆฏๅบไบ Pi0 ้ๅ้จ็ฝฒ็่ง่ง่ฏญ่จๅจไฝๆจกๅ๏ผVLA๏ผๆจ็่ฟ่กๆถใๆฌ้กน็ฎๅฎ็ฐไบ S600 ๆบๆขฐ่็็ซฏๅฐ็ซฏๆงๅถๆต็จ๏ผ้่ฟๆฅๆถ็ธๆบๅพๅๅๆบๆขฐ่็ถๆ๏ผ็ปๅ็จๆทๆไปค็ๆๅจไฝๅบๅๅนถๆงๅถๆบๆขฐ่ๆง่กใ
่ฏฅ็ณป็ป้็จๅฎขๆท็ซฏ-ๆๅก็ซฏๆถๆ๏ผS600 ๆจ็่็นไฝไธบๅฎขๆท็ซฏ่ด่ดฃๆฐๆฎ้้ใ้ขๅค็ๅๅจไฝๆง่ก๏ผPi0 ๆจ็ๆจกๅไฝไธบๆๅก็ซฏ่ด่ดฃๅจไฝ้ขๆตใ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ S600 ๆจ็่็น็ณป็ปๆถๆ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โ
โ โ ๅคด้จ็ธๆบ โ โ ๅทฆ่
็ธๆบ โ โ ๅณ่
็ธๆบ โ โ
โ โ /camera/ โ โ /camera_left/โ โ (้ปๅพ) โ โ
โ โ camera/ โ โ camera_left/ โ โ โ โ
โ โ color/ โ โ color/ โ โ โ โ
โ โ image_raw โ โ image_raw โ โ โ โ
โ โโโโโโโโฌโโโโโโโโ โโโโโโโโฌโโโโโโโโ โโโโโโโโฌโโโโโโโโ โ
โ โ โ โ โ
โ โโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโ โ
โ โผ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ ่ฏ้ขๅๆญฅ็ฎก็ๅจ โ โ
โ โ TopicTimeSynchronizer โ โ
โ โ ๆถ้ด็ชๅฃ: 100ms โ โ
โ โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโ โ
โ โผ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ S600 ๆจ็่็น โ โ
โ โ s600_inference_node.py โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค โ
โ โ 1. ๆฐๆฎ้้ (0.1ms) โ โ
โ โ 2. ๅๅค็ (3.2ms) โ โ
โ โ 3. ๆจ็ (192.5ms) โ โ
โ โ 4. ๅๅค็ (0.1ms) โ โ
โ โ 5. ๅจไฝๆๅผไธๆปคๆณขๆง่ก โ โ
โ โโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโ โ
โ โผ โ
โ โโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Pi0 ๆจ็ๆๅกๅจ โ โ
โ โ (OE-LLM ๅทฅๅ
ทๅ
) โ โ
โ โโโโโโโโโโโโฌโโโโโโโโโโโ โ
โ โผ โ
โ โโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ piper_node โ โ
โ โ ๆบๆขฐ่ๆงๅถ่็น โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
- ๅค็ธๆบๅๆญฅ้้๏ผๆฏๆๅคด้จ็ธๆบใๅทฆ่ ็ธๆบๅพๅๅๆญฅ้้๏ผๅณ่ ็ธๆบไฝฟ็จ้ปๅพๅ ไฝ
- ่ฏ้ขๆถ้ดๅๆญฅ๏ผๅบไบ ROS2 ่ฏ้ขๆถ้ดๆณๅๆญฅ๏ผ็กฎไฟๆฐๆฎไธ่ดๆง
- ็ซฏๅฐ็ซฏไฝๅปถ่ฟ๏ผๆฐๆฎ้้โๅๅค็โๆจ็โๅๅค็โๆง่ก๏ผๅ จ้พ่ทฏ่ๆถ็ๆง
- ๅจไฝๅนณๆปๅค็๏ผ้ฆไธชๅจไฝไปๅฝๅ็ถๆๆๅผ่ฟๆธก๏ผๆๅไธไธชๅจไฝๅนณๆปๆถๆ๏ผไธญ้ดๅจไฝไธ้ถไฝ้ๆปคๆณข
- ๅ ณ่ไธๅคน็ชๅ็ฆปๆงๅถ๏ผ6ไธชๅ ณ่ไฝฟ็จๆปคๆณขๆๅผ๏ผๅคน็ช็ถๆ็ดๆฅๅๅธ
| ๆฐๆฎ็ฑปๅ | ๅฝข็ถ | ๆฐๆฎ็ฑปๅ | ่ฏดๆ |
|---|---|---|---|
| ๅพๅๆฐๆฎ (3่ทฏ) | [3, 224, 224] | uint8 | ๅคด้จ็ธๆบใๅทฆ่ ็ธๆบใๅณ่ ็ธๆบ๏ผ้ปๅพ๏ผ |
| ็ถๆๆฐๆฎ | [14] | float32 | ๅทฆ่ๅๅณ่็ๅ ณ่ๅๅคน็ช็ถๆ |
| ๆ็คบ่ฏ | - | string | ็จๆทๆไปค๏ผๅฆ "put the yellow mango on the blue plate" |
| ๆฐๆฎ็ฑปๅ | ๅฝข็ถ | ๆฐๆฎ็ฑปๅ | ่ฏดๆ |
|---|---|---|---|
| ๅจไฝๅบๅ | [50, 14] | float32 | 50ไธชๆถ้ดๆญฅ็ๅจไฝ๏ผๆฏๆญฅๅ ๅซๅทฆ่็6ไธชๅ ณ่ + ๅคน็ช๏ผๅๅณ่็6ไธชๅ ณ่ + ๅคน็ช |
| ้ถๆฎต | ๅนณๅ่ๆถ | ่ฏดๆ |
|---|---|---|
| ๆฐๆฎ้้ | 0.1ms | ROS2 ่ฏ้ขๅๆญฅไธๆฐๆฎ่ทๅ |
| ๅๅค็ | 3.2ms | ๅพๅๆ ผๅผ่ฝฌๆขใๅฝไธๅใtokenization |
| ๆจ็ | 192.5ms | Pi0 ๆจกๅๆจ็๏ผๆๅก็ซฏ๏ผ |
| ๅๅค็ | 0.1ms | ๅจไฝ่งฃ็ ใDelta ่ฟๅ |
| ๅจไฝๆง่ก | 700.5ms | 50ไธชๅจไฝ + ๆๅผ๏ผๆป่ฎก็บฆ70ไธชๆถ้ดๆญฅ |
| ้กน็ฎ | ็ๆฌ/่งๆ ผ |
|---|---|
| ็ผ็จ่ฏญ่จ | Python 3.12 |
| ๆไฝ็ณป็ป | Ubuntu 24.04 |
| ROS2 ็ๆฌ | Jazzy |
| ๆบๆขฐ่ๅนณๅฐ | S600 |
| ็ผ่ฏๅทฅๅ ท | colcon |
| ๆจ็ๆกๆถ | Pi0 (OE-LLM) |
conda create -n s600_pi0 python=312
conda activate s600_pi0
pip install -r resource/requirements.txt- realsense2_camera package: Publishes image messages in realsense for the example D457.
- websocket package: Renders image messages.
HBM ้ๅๆจกๅๅฏไป Hugging Face ่ทๅ๏ผhttps://huggingface.co/D-Robotics/openpi
| ็ๆฌ | ๆไปถๅคน | ๆจกๅ | ๆ็คบ่ฏ |
|---|---|---|---|
| v0.1.0 | put_the_box | pi0_base, HBM | put the box |
| v0.2.0 | pi0_put_the_yellow_mango_on_the_blue_plate | pi0_base, HBM | put the yellow mango on the blue plate |
| ๅๆฐๅ | ็ฑปๅ | ้ป่ฎคๅผ | ่ฏดๆ |
|---|---|---|---|
num_steps |
int | 1250 | ๆๅคงๆงๅถๆญฅๆฐ |
norm_stats_path |
string | "" | ๅฝไธๅ็ป่ฎกๆไปถ่ทฏๅพ |
action_topic |
string | "/aliciaD/action" | ๅจไฝๅๅธ่ฏ้ข |
qpos_topic |
string | "/piper/qpos" | ็ถๆ่ฎข้ ่ฏ้ข |
wait_timeout |
float | 10.0 | ๆฐๆฎ็ญๅพ ่ถ ๆถๆถ้ด๏ผ็ง๏ผ |
sync_time_window |
float | 0.1 | ่ฏ้ขๅๆญฅๆถ้ด็ชๅฃ๏ผ็ง๏ผ |
| Parameter Name | Explanation | Mandatory | Default Value | Remarks |
|---|---|---|---|---|
| user_prompt | Task name | No | beat block hammer | |
| max_limit_num | the max time the robot can try | No | 50 | |
| state_sub_topic_name | Subscribe to robotic arm state | No | /joint_states | |
| camera_topic_name | Brain side camera topic name for subscribing image msg | No | /camera/camera/color/image_raw | |
| camera_left_topic_name | Left-arm Camera on topic name for subscribing image msg | No | /camera_left/camera_left/color/image_raw |
-
็ผ่ฏ็ฏๅข็กฎ่ฎค
- ๆฟ็ซฏๅทฒๅฎ่ฃ S600 Ubuntu ็ณป็ป
- ๅฝๅ็ผ่ฏ็ป็ซฏๅทฒ่ฎพ็ฝฎ TogetherROS ็ฏๅขๅ้๏ผ
source PATH/setup.bash๏ผPATH ไธบ TogetherROS ็ๅฎ่ฃ ่ทฏๅพ๏ผ - ๅทฒๅฎ่ฃ
ROS2 ็ผ่ฏๅทฅๅ
ท colcon๏ผ่ฅๆชๅฎ่ฃ
๏ผๆง่ก
pip install -U colcon-common-extensions๏ผ - ๅทฒ็ผ่ฏ dnn node package
-
็ผ่ฏ
colcon build --packages-select openpi_runtime-
็ผ่ฏ็ฏๅข็กฎ่ฎค
ๅจ docker ไธญ็ผ่ฏ๏ผไธ docker ไธญๅทฒๅฎ่ฃ ๅฅฝ TogetherROSใdocker ๅฎ่ฃ ใไบคๅ็ผ่ฏ่ฏดๆใTogetherROS ็ผ่ฏๅ้จ็ฝฒ่ฏดๆ่ฏฆ่งๆบๅจไบบๅผๅๅนณๅฐ robot_dev_config repo ไธญ็ README.mdใ
-
็ผ่ฏ
้ป่ฎคๆๅผ shared mem ้ไฟกๆนๅผใ
bash robot_dev_config/build.sh -p S600 -s openpi_runtimeๅคด้จ็ธๆบ๏ผD457๏ผ
source /opt/ros/jazzy/setup.bash
export ROS_DOMAIN_ID=40
ros2 launch realsense2_camera rs_launch.py \
serial_no:='_234322302783' \
camera_namespace:=camera \
camera_name:=camera \
rgb_camera.color_profile:=640x480x50ๅทฆ่ ็ธๆบ๏ผD457๏ผ
source /opt/ros/jazzy/setup.bash
export ROS_DOMAIN_ID=40
ros2 launch realsense2_camera rs_launch.py \
serial_no:='_234322306420' \
camera_namespace:=camera_left \
camera_name:=camera_left \
rgb_camera.color_profile:=640x480x50export COLCON_CURRENT_PREFIX=./install
source /opt/ros/jazzy/setup.bash
source ./install/setup.bash
export ROS_DOMAIN_ID=40
python3 install/lib/openpi_runtime/piper_node \
--subscribe_topic /aliciaD/action \
--publish_topic /piper/qpos \
--publish_rate 50.0 \
--gripper_open_value 74000 \
--gripper_close_value 50 \
--gripper_threshold 0.5 \
--gripper_state_threshold 64000 \
--gripper_torque 3500 \
--can_name can0ๅฝไปค่กๅฏๅจ norm_stats_path่ฆไธไฝ ็ๆจกๅๆไปถๅน้ ๏ผๆณจๆไฟฎๆน่ทฏๅพใ norm_stats.json็ไธ่ฝฝ่ทฏๅพ๏ผ
- put_the_yellow_mango_on_the_blue_plate https://huggingface.co/D-Robotics/openpi/tree/main/pi0_put_the_yellow_mango_on_the_blue_plate/torch/assets/trossen
- put_the_box https://huggingface.co/D-Robotics/openpi/tree/main/put_the_box/torch/assets/trossen
export COLCON_CURRENT_PREFIX=./install
source /opt/ros/jazzy/setup.bash
source ./install/setup.bash
export ROS_DOMAIN_ID=40
python3 install/lib/openpi_runtime/s600_inference_node \
--ros-args \
-p norm_stats_path:=norm_stats.json \
-p action_topic:=/aliciaD/action \
-p qpos_topic:=/piper/qpos \
-p num_steps:=1250ๆฌ่็น้็จไธๆฎตๅผๅจไฝๅนณๆป็ญ็ฅ๏ผ็กฎไฟๅจไฝๅบๅๆขๆต็ ๅ่ฝๅ็กฎๅฐ่พพ็ฎๆ ็ถๆ๏ผ
ๅฝๅ็ถๆ โโโ ๆๅผ10ๆฌก โโโ action[0] โโโ ไธ้ถๆปคๆณข โโโ action[1] โโโ ... โโโ action[48] โโโ ๆๅผ10ๆฌก โโโ action[49]
โ โ โ โ
โผ โผ โผ โผ
ๅๅงไฝ็ฝฎ ้ฆไธชๅจไฝ ไธญ้ด48ไธชๅจไฝ ๆๅไธไธชๅจไฝ
(ๅนณๆป่ฟๆธก) (alpha=0.15) (ๅนณๆปๆถๆ)
-
็ฌฌไธๆฎตๆๅผ๏ผ้ฆไธชๅจไฝ๏ผ
ไปๅฝๅ็ถๆๅฐ action[0] ็บฟๆงๆๅผ 10 ๆฌก๏ผ้ฟๅ ไป้ๆญข็ถๆ็ดๆฅ่ทณๅๅฐ็ฎๆ ๅจไฝใ
-
ไธญ้ดๆฎตๆปคๆณข๏ผaction[1] ๅฐ action[48]๏ผ
ไฝฟ็จไธ้ถไฝ้ๆปคๆณขๅจ๏ผๆปคๆณขๅจ็ณปๆฐ๏ผalpha = 0.15
filtered = alpha ร action + (1 - alpha) ร previous_filtered -
็ฌฌไบๆฎตๆๅผ๏ผๆๅไธไธชๅจไฝ๏ผ
ไป action[48] ๅฐ action[49] ็บฟๆงๆๅผ 10 ๆฌก๏ผ็กฎไฟๅจไฝๅนณๆปๆถๆๅฐๆ็ป็ฎๆ ใ
-
ๅคน็ชๅค็
- ็ฌฌ 7 ็ปด๏ผๅคน็ช๏ผไธๅไธๆปคๆณขๆๅผ
- ็ดๆฅไฝฟ็จๆจ็่พๅบ็ๅคน็ช็ถๆ๏ผ0 ๆ 1๏ผ
| ้ถๆฎต | ๅจไฝๆฐ | ่ฏดๆ |
|---|---|---|
| ็ฌฌไธๆฎตๆๅผ | 10 | ๅฝๅ็ถๆ โ action[0] |
| ไธญ้ดๆฎตๆปคๆณข | 48 | action[1] โ action[48] |
| ็ฌฌไบๆฎตๆๅผ | 10 | action[48] โ action[49] |
| ๆป่ฎก | 68 | ็บฆ 1.36 ็ง๏ผๆฏๆญฅ 20ms๏ผ |
ไปฅไธ่ง้ขๆผ็คบไบ S600 ๆบๆขฐ่ๆง่ก Pi0 ๆจกๅ็่ฟ็จ๏ผ
่ง้ข่ฏดๆ๏ผๆผ็คบไบ S600 ๆบๆขฐ่ๆฅๆถ็จๆทๆไปค "put the yellow mango on the blue plate" ๅ๏ผ้่ฟ Pi0 ๆจกๅๆจ็็ๆๅจไฝๅบๅ๏ผๅนถๅนณๆปๆง่ก็ๅ จ่ฟ็จใๅฏไปฅ็ๅฐๆบๆขฐ่ไปๅๅงไฝ็ฝฎๅนณ็จณๆๅ้ป่ฒ่ๆๅนถๆพ็ฝฎๅฐ่่ฒ้ค็ไธใ
ๆฅ็่ง้ข๏ผ็นๅปไธๆนๅพ็ๆ ไธ่ฝฝ่ง้ข ๆฅ็ๅฎๆดๆผ็คบใ
openpi_runtime/
โโโ inference/
โ โโโ s600_inference_node.py # S600 ๆจ็ไธป่็น
โโโ robot/
โ โโโ piper_node.py # Piper ๆบๆขฐ่ๆงๅถ่็น
โโโ common/
โ โโโ utils/
โ โ โโโ ros_data_collector.py
โ โ โโโ topic_time_synchronizer.py
โ โโโ pi0_process/
โ โ โโโ preprocess.py # ๆจ็ๅๅค็
โ โ โโโ postprocess.py # ๆจ็ๅๅค็
โ โโโ ServerUtils/
โ โ โโโ server.py # TCP ้ไฟกๆๅก็ซฏ
โ โโโ msg/
โ โโโ msg.proto # ๆถๆฏๅ่ฎฎๅฎไน
โโโ launch/
โ โโโ run_pi0_s600.launch # ๅฏๅจๆไปถ
โ โโโ readme.md # ๅฏๅจ่ฏดๆ
โโโ resource/
โ โโโ s600_pi0.mp4 # ่ฟ่กๆผ็คบ่ง้ข
โโโ scripts/
โ โโโ data_collector/ # ๆฐๆฎ้้ๅทฅๅ
ทไธ่ฏดๆๆๆกฃ
โโโ README_cn.md # ๆฌๆๆกฃ
ๆฐๆฎ้้๏ผๅฆ้้้่ฎญ็ปๆฐๆฎ้๏ผ่ฏทๅ่ ๆฐๆฎ้้ๆๆกฃใ
1. ๆ ๆณ่ทๅ่งๆตๆฐๆฎ
- ๆฃๆฅ็ธๆบ่็นๆฏๅฆๆญฃๅธธ่ฟ่ก
- ็กฎ่ฎค ROS_DOMAIN_ID ่ฎพ็ฝฎไธ่ด
- ้ช่ฏ่ฏ้ขๅ็งฐๆฏๅฆๆญฃ็กฎ
2. ๆจ็่ฟๆฅๅคฑ่ดฅ
- ็กฎ่ฎค Pi0 ๆจ็ๆๅกๅทฒๅฏๅจ
- ๆฃๆฅ็ซฏๅฃ 8888 ๆฏๅฆ่ขซๅ ็จ
- ้ช่ฏ norm_stats.json ๆไปถ่ทฏๅพๆญฃ็กฎ
3. ๅจไฝๆง่กไธ่ฟ็ปญ
- ๆฃๆฅ็ฝ็ปๅปถ่ฟ
- ็กฎ่ฎค CAN ้ไฟกๆญฃๅธธ
- ่ฐๆด
sync_time_windowๅๆฐ
