Руководство по установке

От подключения CAN-шины до первого эпизода телеуправления. Охватывает piper_sdk, запуск ROS2 и телеоперацию Meta Quest 3 VR.

1

Настройка CAN-шины и хоста

~15 мин.

AgileX Piper общается исключительно через CAN-шина на скорости 1 Мбит/с. Вам понадобится адаптер USB-CAN (например, CANable, GS_USB), чтобы предоставить интерфейс SocketCAN на вашем хосте Linux.

Безопасность прежде всего Перед включением питания физически закрепите основание манипулятора на устойчивой поверхности. Держите людей подальше от зоны действия руки (радиус ~600 мм) во время движения.

Поднимите 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
Скрипт автоматической активации. The piper_sdk репозиторий включает в себя can_activate.sh помощник. Запустите его как: bash can_activate.sh can0 1000000. Это тот же сценарий, который используется piper_ros.
Название интерфейса может отличаться Если у вас подключено несколько адаптеров USB-CAN, интерфейс может выглядеть так: can1, can2и т. д. Используйте ip link show чтобы перечислить все CAN-интерфейсы и передать правильное имя C_PiperInterface.

Поддержка ОС

Ubuntu 18.04, 20.04 и 22.04 являются официально протестированными платформами. Требуется Python 3.6+.

2

Установите 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.")
Демо-скрипты. SDK поставляется с готовыми к использованию демо-версиями в формате piper_sdk/demo/V2/. Начните с demo_joint_ctrl.py чтобы проверить базовое движение перед созданием собственного контура управления.
3

Первое движение

~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.")
4

Интеграция 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.

5

Meta Quest 3 VR Телеоперация

~90 мин.

Piper можно управлять в реальном времени с помощью Мета Квест 3 гарнитура. Архитектура использует UDP в вашей локальной сети: Quest запускает приложение Unity, которое передает данные о позе рук, а сервер Python на ПК-роботе преобразует их в команды Piper SDK.

Архитектура

Цель Квест 3 (Unity)
↓ UDP — порты 8888/8889
Python UDP-сервер (хост-компьютер)
Piper_sdk → C_PiperInterface
AgileX Piper (CAN-шина)

Сторона Единства (VRHandPoseSender.cs, VRGripperController.cs, VRTeleoperationManager.cs) и уровень UDP полностью пригодны для повторного использования в настройках xArm — необходимо заменить только модуль контроллера робота.

Шаги настройки

  1. Запустите интерфейс CAN и включите рычаг.
    sudo ip link set can0 type can bitrate 1000000
    sudo ip link set can0 up
  2. Создайте PiperController упаковка C_PiperInterface. Замените XArmController класс в существующем стеке телеоперации с новым piper_controller.py. Осуществлять connect(), set_pose(x, y, z, roll, pitch, yaw), set_gripper(value), и emergency_stop() используя вызовы Piper_sdk.
  3. Запустите UDP-сервер Python на ПК-роботе.
    python3 teleoperation_main.py --robot-type piper
    Сервер прослушивает UDP-порты 8888/8889 и пересылает полученные пакеты позы руки Piper.
  4. Запустите приложение Unity на Quest 3 и подключитесь к IP-адресу ПК. Регулировать positionOffset, rotationOffset, и scaleFactor в Unity, чтобы соответствовать рабочему пространству Piper. Эти параметры отличаются от xArm из-за меньшего диапазона действия Piper.
Различия в системах координат Рабочее пространство Piper меньше, чем xArm. Уменьшать scaleFactor в Unity, чтобы предотвратить попадание руки в пределы сустава во время телеоперации. Начните с консервативного масштаба и постепенно увеличивайте его, следя за углами суставов.
Полное руководство по квесту 3. Полные инструкции по настройке — установке приложения Unity, сопряжению с ПК и калибровке отслеживания рук — см. Руководство по телеоперации в Quest 3 VR.
6

Сбор данных

Непрерывный

Как только телеоперация заработает, используйте платформу SVRC для записи, маркировки и экспорта демонстраций манипуляций.

  • Записывайте телеуправляемые эпизоды через UDP-сервер Python или напрямую через piper_ros запись сумки
  • Экспорт в RLDS или ЛеРобот формат для последующего обучения политике
  • Используйте Платформа SVRC для управления наборами данных, проведения проверок качества и обучения моделей ACT или Diffusion Policy.
Кончик. Использовать piper.GetArmJointMsgs() и piper.GetArmEndPoseMsgs() на частоте ~50 Гц в фоновом потоке для захвата синхронизированного состояния сустава и рабочего органа во время телеоперации.
Открытая платформа → Полная вики для разработчиков →

Нужна помощь с настройкой?

Наша команда доступна для практических занятий на базе Маунтин-Вью, Калифорния.