Перейти к основному содержимому
Версия: Bbrain 1.0

Пакет neck_driver

Назначение: Пакет neck_driver позволяет взаимодействовать с шейным суставом головы: плавно перемещать голову по двум углам (вертикали и горизонтали).


Содержание пакета

neck_driver/
├── CMakeLists.txt
├── package.xml
├── launch/
│ └── neck_driver_py.launch
├── config/
│ └── neck_driver.yaml
├── scripts/
│ └── main.py
├── srv/
│ └── NeckSetAngle.srv
└── examples/
└── example_zigzag.py

Запуск пакета

  • Пакет neck_driver запускается автоматически при старте устройства.
  • Запуск инициируется через launch-файл robohead_controller_py.launch из пакета robohead_controller.

Основные возможности

Пакет neck_driver предоставляет ROS-сервис NeckSetAngle для управления шейным суставом головы:

ROS-сервис NeckSetAngle позволяет задать позицию шейного сустава с контролем углов и времени движения.

Пример вызова:

rosservice call robohead_controller/neck_driver/NeckSetAngle "vertical_angle: 15
horizontal_angle: 0
duration: 1.5
is_blocking: 1"

Параметры:

ПараметрОписание
vertical_angleУгол тангажа (вертикальное движение), в градусах
horizontal_angleУгол рыскания (горизонтальное движение), в градусах
durationВремя перемещения до заданного положения, в секундах
is_blockingБлокирующий вызов: 1 — ждать окончания движения, 0 — не блокировать

Коды ответа:

КодЗначение
0Успешное выполнение
-1Угол по вертикали вне диапазона (см. robohead_control/config/neck_driver.yaml)
-2Угол по горизонтали вне диапазона (см. robohead_control/config/neck_driver.yaml)
-3Негативное значение duration (должно быть ≥ 0)
примечание

• Рекомендуемый диапазон углов: -30°…+30° для обеих осей. • Если указать duration: 0, перемещение будет максимально быстрым — использовать с осторожностью.

Подробнее о настройке сервоприводов: ->

Режим отладки

В режиме отладки пакет neck_driver запускается изолированно (отдельно) для тестирования функций, без участия других компонентов системы.

Шаг 1. Остановка всех запущенных пакетов

Остановите фоновый Linux-сервис:

sudo systemctl stop robohead.service

Шаг 2. Запуск пакета вручную

Запустите пакет отдельно через launch-файл:

roslaunch neck_driver neck_driver_py.launch

Шаг 3. Особенности работы в режиме отладки

  • Пространство имен: сервис пакета не имеет приставки /robohead_controller/. Используется /neck_driver/NeckSetAngle вместо /robohead_controller/neck_driver/NeckSetAngle

  • Файл конфигурации: настройки берутся из neck_driver/config/neck_driver.yaml вместо robohead_controller/config/neck_driver.yaml


Шаг 4. Возможности тестирования

ROS-сервис NeckSetAngle позволяет задать позицию шейного сустава с контролем углов и времени движения.

Пример вызова:

# Запустите в отдельном терминале
rosservice call neck_driver/NeckSetAngle "vertical_angle: 15
horizontal_angle: 0
duration: 1.5
is_blocking: 1"

Убедитесь, что вы находитесь в режиме отладки!

Пример использования сервиса в Python:

Команда для запуска примера с использованием сервиса /neck_driver/NeckSetAngle в Python:

# Запустите в отдельном терминале
rosrun neck_driver example_zigzag.py

Убедитесь, что вы находитесь в режиме отладки!