↕️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)
Подробнее о настройке сервоприводов: ->
Режим отладки
В режиме отладки пакет 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