neck_driver

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


Запуск пакета через CLI:

roslaunch neck_driver neck_driver_py.launch

Для установки положения шейного сустава воспользуйтесь ROS-сервисом /neck_driver/NeckSetAngle с типом сообщения neck_driver/NeckSetAngle:

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

Обозначения:

  • vertical_angle - угол поворота по вертикали (тангаж), градусы-degrees

  • horizontal_angle - угол поворота по условной горизонтали (рысканье), градусы-degrees

  • duration - время, за которое голова должна достичь заданного положения, секунды

  • is_blocking - блокирующий ли вызов, 0-нет, 1-да

Углы задавайте в небольшом диапазоне: -30...30 градусов, чтобы избежать резких движений и повреждения конструкции.

Если указать duration равным нулю, то голова достигнет заданного положения с максимальной скоростью - не рекомендуется использовать такое значения.

#TODO update photo:

Направления углов

Возвращаемые значения при вызове сервиса:

  • 0 - успешный вызов

  • -1 - угол по вертикали не подходит под ограничения (см. конфигурационный файл neck_driver.yaml)

  • -2 - угол по горизонтали не подходит под ограничения (см. конфигурационный файл neck_driver.yaml)

  • -3 - отрицательное значение длительности движения (должно быть >=0)


Пример управления шеей на Python:

rosrun neck_driver example_zigzag.py

Файлы примеров расположены в директории examples этого пакета.


Конфигурационный файл neck_driver/config/neck_driver.yaml

  • service_name - название сервиса, по которому устанавливается положение шеи

  • std_vertical_angle - стандартное положение головы по вертикали (при включении)

  • std_horizontal_angle - стандартное положение головы по горизонтали (при включении)

  • servo_1_channel - канал на плате расширения, к которому подключен сервопривод 1

  • servo_2_channel - канал на плате расширения, к которому подключен сервопривод 2

  • servo_1_coef - линейное смещение, которе учитывается при вычислении угла сервопривода 1

  • servo_2_coef - линейное смещение, которое учитывается при вычислении угла сервопривода 2

  • constraints: v_from и v_to - диапазон допустимых углов по вертикали

  • constraints: h_from и h_to - диапазон допустимых углов по горизонтали

  • i2c_address - i2c адрес PWM-контроллера сервоприводов

Last updated