AgileX Пайпер
Технические характеристики
Полные характеристики оборудования, справочник по темам ROS2, сводка API Piper_sdk и руководство по устранению неполадок.
Механические характеристики
| Спецификация | Ценить |
|---|---|
| Степени свободы | 6 степеней свободы + дополнительный захват |
| Достигать | ~600 мм |
| Макс. полезная нагрузка | ~1,5 кг |
| Повторяемость | ±0,1 мм |
| Форм-фактор | Компактная столешница/рабочий стол |
| Многорукий | Двойной ведущий-ведомый через отдельные интерфейсы CAN |
| Производитель | AgileX Робототехника |
Электрика и связь
| Спецификация | Ценить |
|---|---|
| Источник питания | 24 В постоянного тока |
| Коммуникация | CAN-шина – 1 000 000 бит/с (1 Мбит/с) |
| Хост-интерфейс | Адаптер USB-CAN (например, CANable, GS_USB) |
| Linux-интерфейс | СокетCAN (can0, can1, …) |
Программное обеспечение и управление
| Спецификация | Ценить |
|---|---|
| Режимы управления | Положение сустава, поза конечного исполнительного органа, захват |
| Python SDK | pip3 install piper_sdk — agilexrobotics/piper_sdk |
| Пакет РОС | agilexrobotics/piper_ros (РОС Noetic + MoveIt) |
| Моделирование | Беседка далеко piper_gazebo.launch |
| URDF | piper_description.urdf (прошивка ≥ S-V1.6-3) |
| Поддержка ОС | Убунту 18.04, 20.04, 22.04 |
| Версия Python | Питон 3.6+ |
Совместные ограничения
| Соединение | мой (ты) | Макс (ты) |
|---|---|---|
| Сустав 1 | −175 | +175 |
| Сустав 2 | −90 | +135 |
| Сустав 3 | −150 | +80 |
| Сустав 4 | −175 | +175 |
| Совместное 5 | −90 | +90 |
| Сустав 6 | −175 | +175 |
Темы и услуги ROS
Стандартные темы и услуги, представленные piper_ros после запуска start_single_piper.launch.
| Тема/Услуга | Тип | Направление | Описание |
|---|---|---|---|
/joint_states |
датчик_msgs/JointState | Суб (отправка команд) | Команды положения сустава — подпишитесь на отправку целей движения в руку. |
/arm_status |
piper_msgs/ArmStatus | Паб (отзыв) | Обратная связь о состоянии рычага: включено/выключено, флаги ошибок, текущие положения суставов. |
/end_pose |
Geometry_msgs/Поза | Паб (отзыв) | Обратная связь позы конечного эффектора в декартовом пространстве (позиция + кватернион) |
/enable_srv |
std_srvs/SetBool | Услуга | Давать возможность (true) или отключить (false) все суставы рук |
/go_zero_srv |
std_srvs/Триггер | Услуга | Прикажите руке переместиться в нулевое/исходное положение |
/gripper_srv |
piper_msgs/GripperCmd | Услуга | Установите положение захвата (0 = открыто, макс = полностью закрыто) |
/stop_srv |
std_srvs/Триггер | Услуга | Немедленно прекратить все движения суставов (аварийная остановка через ROS) |
/reset_srv |
std_srvs/Триггер | Услуга | Сброс ошибок постановки на охрану и повторное включение после неисправности. |
Справочник по API piper_sdk
Ключевые методы на C_PiperInterface сорт. Инициализируйте с помощью piper = C_PiperInterface("can0").
| Метод | Описание |
|---|---|
ConnectPort() |
Откройте интерфейс CAN и запустите поток связи. |
EnableArm(7) |
Включить все 6 суставов и захват (битовая маска; 7 = все) |
DisableArm(7) |
Отключите все соединения — всегда звоните по завершении или перед отключением. |
EmergencyStop() |
Немедленно прекратить все движения суставов. |
MotionCtrl_2(j1, j2, j3, j4, j5, j6) |
Отправьте команду положения сустава с 6 степенями свободы (углы в градусах) |
GetArmJointMsgs() |
Чтение текущих положений суставов, скоростей и крутящих моментов |
GetArmEndPoseMsgs() |
Прочитать текущую декартову позу конечного эффектора |
GripperCtrl(position, speed) |
Установите положение захвата (0 = открыто) и скорость. |
GetArmGripperMsgs() |
Чтение текущего состояния захвата и обратной связи по положению |
Поиск неисправностей
| Симптом | Вероятная причина | Исправить |
|---|---|---|
OSError: [Errno 19] No such device |
CAN-интерфейс не работает | Бегать sudo ip link set can0 up и проверьте с помощью ifconfig can0 |
| Рука не реагирует на команды | Постановка не в ведомом режиме или не включена | Вызов piper.EnableArm(7) после подключения. Убедитесь, что перемычка ведомого режима установлена на рычаге правильно. |
| Совместная обратная связь считывает все нули | Несоответствие битрейта | Убедитесь, что битрейт интерфейса CAN равен точно 1000000. Повторите запуск. ip link set can0 type can bitrate 1000000. |
can.CanError: Failed to transmit |
CAN-шина не окончена | Убедитесь, что на обоих концах шины CAN присутствуют согласующие резисторы сопротивлением 120 Ом. Включите внутренний терминатор Piper с помощью DIP-переключателя. |
| Неверная модель робота URDF в RViz | Несоответствие прошивки | Прошивка < S-V1.6-3: используйте piper_description_old.urdf. Более новая прошивка: используйте piper_description.urdf. |
| Разрешение отклонено на can0 | Пользователь не в сети dialout группа |
SocketCAN требует root или соответствующих разрешений. Запускайте команды с помощью sudo или настроить правила udev. |
| VR-телеоп: рука выходит за пределы/выходит за пределы | scaleFactor слишком высоко в Unity |
Уменьшать scaleFactor в приложении Unity и постепенно повторите тестирование. Рабочее пространство Piper меньше, чем xArm. |
Репозитории GitHub
| Репозиторий | Описание |
|---|---|
| agilexrobotics/piper_sdk | Официальный Python SDK. Установить: pip3 install piper_sdk. Включает демоверсии, спецификацию интерфейса (INTERFACE_V2.MD) и двуручная направляющая. |
| agilexrobotics/piper_ros | Пакет ROS Noetic с MoveIt, моделированием Gazebo, URDF и стандартными темами/услугами ROS. |