↕️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

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

Last updated