neck_driver
Last updated
Last updated
Пакет позволяет взаимодействовать с шейным суставом головы: плавно перемещать голову по двум углам.
Запуск пакета через CLI:
перед экспериментами отключите все запущенные пакеты. В частности, остановите , чтоб отключить пакеты, запущенные автоматичеси: sudo systemctl stop robohead.service
Для установки положения шейного сустава воспользуйтесь ROS-сервисом /neck_driver/NeckSetAngle с типом сообщения neck_driver/NeckSetAngle:
Обозначения:
vertical_angle - угол поворота по вертикали (тангаж), градусы-degrees
horizontal_angle - угол поворота по условной горизонтали (рысканье), градусы-degrees
duration - время, за которое голова должна достичь заданного положения, секунды
is_blocking - блокирующий ли вызов, 0-нет, 1-да
#TODO update photo:
Возвращаемые значения при вызове сервиса:
0 - успешный вызов
-1 - угол по вертикали не подходит под ограничения (см. конфигурационный файл neck_driver.yaml)
-2 - угол по горизонтали не подходит под ограничения (см. конфигурационный файл neck_driver.yaml)
-3 - отрицательное значение длительности движения (должно быть >=0)
Пример управления шеей на Python:
Конфигурационный файл 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-контроллера сервоприводов