Руководство по установке
От подключения CAN-шины до первого эпизода телеуправления. Охватывает piper_sdk, запуск ROS2 и телеоперацию Meta Quest 3 VR.
Настройка CAN-шины и хоста
~15 мин.AgileX Piper общается исключительно через CAN-шина на скорости 1 Мбит/с. Вам понадобится адаптер USB-CAN (например, CANable, GS_USB), чтобы предоставить интерфейс SocketCAN на вашем хосте Linux.
Поднимите CAN-интерфейс
Подключите адаптер USB-CAN и запустите:
# Set bitrate and bring up the CAN interface
sudo ip link set can0 type can bitrate 1000000
sudo ip link set can0 up
# Verify the interface is active
ifconfig can0
piper_sdk репозиторий включает в себя can_activate.sh помощник. Запустите его как: bash can_activate.sh can0 1000000. Это тот же сценарий, который используется piper_ros.
can1, can2и т. д. Используйте ip link show чтобы перечислить все CAN-интерфейсы и передать правильное имя C_PiperInterface.
Поддержка ОС
Ubuntu 18.04, 20.04 и 22.04 являются официально протестированными платформами. Требуется Python 3.6+.
Установите piper_sdk
~20 мин.The piper_sdk Библиотека Python обрабатывает кадрирование CAN, обратную связь о состоянии соединения и управление захватом. Установите из PyPI (рекомендуется) или из исходного кода.
# Option A: Install from PyPI (recommended)
pip3 install piper_sdk
# Option B: Install from source
git clone https://github.com/agilexrobotics/piper_sdk.git
cd piper_sdk
pip install -e .
# Verify installation
python3 -c "import piper_sdk; print('piper_sdk OK')"
SDK устанавливается автоматически python-can как зависимость для связи по шине CAN.
Подключитесь и включите
The C_PiperInterface class является основной точкой входа. После подключения рычаг должен быть включен, прежде чем он сможет принимать команды движения. EnableArm(7) включает все шесть суставов плюс захват.
from piper_sdk import C_PiperInterface
# Initialize with the CAN interface name (default: "can0")
piper = C_PiperInterface("can0")
# Connect to the arm
piper.ConnectPort()
# Enable all joints (required before motion commands)
piper.EnableArm(7)
print("Piper connected and enabled.")
piper_sdk/demo/V2/. Начните с demo_joint_ctrl.py чтобы проверить базовое движение перед созданием собственного контура управления.
Первое движение
~20 мин.Подключив и активировав рычаг, считайте состояние сустава и отправьте первую команду положения.
Прочитать совместное состояние
import time
# Read joint angles in a polling loop
for _ in range(10):
joint_state = piper.GetArmJointMsgs()
print(joint_state)
time.sleep(0.1)
# Read end-effector pose
end_pose = piper.GetArmEndPoseMsgs()
print(end_pose)
Отправить команду совместной позиции
# Move to a joint configuration (angles in degrees)
# Arguments: joint1, joint2, joint3, joint4, joint5, joint6
piper.MotionCtrl_2(
0, # joint 1
0, # joint 2
90, # joint 3
0, # joint 4
0, # joint 5
0 # joint 6
)
time.sleep(2) # wait for motion to complete
Управление захватом
# Open gripper
piper.GripperCtrl(0, 1000)
# Close gripper (check your gripper's max value)
piper.GripperCtrl(70, 1000)
# Read gripper state
gripper_state = piper.GetArmGripperMsgs()
print(gripper_state)
piper.DisableArm(7) когда закончите. Включенная рука немедленно реагирует на любую команду, в том числе ошибочную из-за ошибок или потерянных пакетов.
Двойная установка (главный-подчиненный)
Для биручных конфигураций подключите два Piper к отдельным интерфейсам CAN:
piper_left = C_PiperInterface("can0")
piper_right = C_PiperInterface("can1")
piper_left.ConnectPort()
piper_right.ConnectPort()
piper_left.EnableArm(7)
piper_right.EnableArm(7)
print("Both arms connected.")
Интеграция ROS2 / MoveIt
~60 мин.The piper_ros Пакет предоставляет полный драйвер ROS Noetic с планированием движения MoveIt и симуляцией Gazebo. Он оборачивает piper_sdk внутри и предоставляет стандартные интерфейсы ROS.
Установить зависимости
# Install required ROS packages
sudo apt-get install -y \
ros-noetic-moveit \
ros-noetic-ruckig \
ros-noetic-ompl
# Install Python CAN dependency
pip3 install python-can piper_sdk
Запуск
# Step 1: Activate CAN interface
bash can_activate.sh can0 1000000
# Step 2: Launch the Piper control node
roslaunch piper start_single_piper.launch
# For dual-arm:
roslaunch piper start_double_piper.launch
Планирование MoveIt
# Launch MoveIt with RViz for interactive planning
roslaunch piper_moveit_config demo.launch
# Gazebo simulation (no physical arm required)
roslaunch piper piper_gazebo.launch
S-V1.6-3 требуют наследства piper_description_old.urdf файл. В новой прошивке используется стандарт piper_description.urdf. Перед загрузкой моделей ROS проверьте этикетку версии прошивки на основании кронштейна.
См. Страница технических характеристик для получения полной таблицы тем и услуг ROS.
Meta Quest 3 VR Телеоперация
~90 мин.Piper можно управлять в реальном времени с помощью Мета Квест 3 гарнитура. Архитектура использует UDP в вашей локальной сети: Quest запускает приложение Unity, которое передает данные о позе рук, а сервер Python на ПК-роботе преобразует их в команды Piper SDK.
Архитектура
Сторона Единства (VRHandPoseSender.cs, VRGripperController.cs, VRTeleoperationManager.cs) и уровень UDP полностью пригодны для повторного использования в настройках xArm — необходимо заменить только модуль контроллера робота.
Шаги настройки
-
Запустите интерфейс CAN и включите рычаг.
sudo ip link set can0 type can bitrate 1000000 sudo ip link set can0 up -
Создайте
PiperControllerупаковкаC_PiperInterface. ЗаменитеXArmControllerкласс в существующем стеке телеоперации с новымpiper_controller.py. Осуществлятьconnect(),set_pose(x, y, z, roll, pitch, yaw),set_gripper(value), иemergency_stop()используя вызовы Piper_sdk. -
Запустите UDP-сервер Python на ПК-роботе.
Сервер прослушивает UDP-порты 8888/8889 и пересылает полученные пакеты позы руки Piper.python3 teleoperation_main.py --robot-type piper -
Запустите приложение Unity на Quest 3 и подключитесь к IP-адресу ПК.
Регулировать
positionOffset,rotationOffset, иscaleFactorв Unity, чтобы соответствовать рабочему пространству Piper. Эти параметры отличаются от xArm из-за меньшего диапазона действия Piper.
scaleFactor в Unity, чтобы предотвратить попадание руки в пределы сустава во время телеоперации. Начните с консервативного масштаба и постепенно увеличивайте его, следя за углами суставов.
Сбор данных
НепрерывныйКак только телеоперация заработает, используйте платформу SVRC для записи, маркировки и экспорта демонстраций манипуляций.
- Записывайте телеуправляемые эпизоды через UDP-сервер Python или напрямую через
piper_rosзапись сумки - Экспорт в RLDS или ЛеРобот формат для последующего обучения политике
- Используйте Платформа SVRC для управления наборами данных, проведения проверок качества и обучения моделей ACT или Diffusion Policy.
piper.GetArmJointMsgs() и piper.GetArmEndPoseMsgs() на частоте ~50 Гц в фоновом потоке для захвата синхронизированного состояния сустава и рабочего органа во время телеоперации.