Пакет 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
Убедитесь, что вы находитесь в режиме отладки!