Робо-голова
  • Общая информация
  • Технические характеристики
  • Комплект поставки
  • Полезные ссылки
  • Быстрый старт
  • Настройка и обслуживание
    • Подключение к Робоголове по сети
      • Настройка подключения к Сети
      • Подключение по SSH к Робоголове
      • Подключение по SFTP
      • Подключение через VSCode
    • Смена данных устройства
    • Выключение головы
    • Возврат к заводским настройкам
    • Ubuntu-сервис
    • Подключение аккумулятора
    • Зарядка батареи
    • Подключение сервоприводов к плате расширения
  • Интеграция с роботом TurtleBro
  • Устройство головы
    • Аппаратная конфигурация
    • Программное обеспечение
    • ROS-пакеты
      • robohead_controller
      • display_driver
      • neck_driver
      • ears_driver
      • speakers_driver
      • respeaker_driver
      • voice_recognizer_pocketsphinx
        • ROS-нода ~kws_recognizer
        • ROS-нода ~cmds_recognizer
        • Настройка собственных команд и ключевых слов для распознавания
      • sensor_driver
      • usb_cam
  • Кейсы взаимодействия
    • 1. Смена ресурс-пака стандартных действий
    • 2. Внесение изменений в стандартные действия
    • 3. Написание своего действия для robohead_controller
    • 4. Создание своих сценариев взаимодействия без использования robohead_controller
    • 5. Создание ROS-пакета со своим сценарием взаимодействия и его автозагрузка
Powered by GitBook
On this page
  1. Устройство головы
  2. ROS-пакеты

display_driver

Previousrobohead_controllerNextneck_driver

Last updated 1 month ago

Пакет display_driver позволяет взаимодействовать с физическим экраном головы: выводить на него картинки, видео, выполнять потоковый вывод "сырых" изображений и получать данные с тачскрина.

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


Обратите внимание: все выводимые на экран медиа-материалы должны быть строго с разрешением 1080x1080 пикселей

Доступные (протестированные) форматы для вывода:

  • Картинки: .jpg, .png

  • Видео: .mp4


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

перед экспериментами отключите все запущенные пакеты. В частности, остановите , чтоб отключить пакеты, запущенные автоматичеси: sudo systemctl stop robohead.service

roslaunch display_driver display_driver_py.launch

Для вывода картинки/видео из файла воспользуйтесь ROS-сервисом "/display_driver/PlayMedia" с одноимённым типом сообщения "display_driver/PlayMedia".

Пример вывода на дисплей картинки, расположенной по адресу: "/home/pi/robohead_ws/src/robohead/display_driver/examples/pic.png" (вводите в новом терминале):

rosservice call /display_driver/PlayMedia "path_to_file: '/home/pi/robohead_ws/src/robohead/display_driver/examples/pic.png'
is_blocking: 0
is_cycled: 0" 
  • path_to_file - путь до файла. Для остановки воспроизведения (например, неблокирующего зацикленного видео) оставьте это поле пустым.

  • is_blocking - блокирующий ли вызов сервиса? (0 - нет, 1 - да). Если запустить на воспроизведение видео с параметром is_blocking: 1, то в терминале вызов сервиса будет висеть, пока воспроизведение не завершится.

  • is_cycled - зациклено ли воспроизведение? Имеет смысл для видео, если оно завершилось, то автоматически начнется воспроизведение сначала.

Будьте аккуратны при использовании блокирующего вызова и зацикленного воспроизведения

  • При попытке вывода несуществующего файла вызов сервиса вернет -1. При несовпадении разрешения/расширения и других ошибках - подробная информация будет выведена на экран.

Так же имеется пример вызова этого сервиса для вывода изображений на Python, для запуска используйте:

rosrun display_driver example_file.py

Для потокового вывода (например с веб-камеры) воспользуйтесь ROS-топиком /display_driver/PlayMedia со стандартным типом сообщений sensor_msgs/Image

Обратите внимание, что есть ROS-сервис /display_driver/PlayMedia и есть ROS-топик /display_driver/PlayMedia, для потокового вывода необходим именно топик.

Пример вывода изображения с веб-камеры (необходим запущенный пакет usb_cam):

# Запустите в отдельном терминале пакет usb_cam
roslaunch usb_cam usb_cam.launch color_format:=yuv422p pixel_format:=mjpeg io_method:=mmap image_width:=640 image_height:=480 framerate:=25

# Запустите в отдельном терминале скрипт-пример
rosrun display_driver example_stream.py

Убедитесь, что во время потокового вывода у вас не воспроизводятся медиа-материалы. Чтобы остановить воспроизведение вызовите сервис /display_driver/PlayMedia с пустым полем path_to_file


Данные о координате касания тачскрина публикуются в топик /display_driver/touchscreen в формате стандартного сообщения geometry_msgs/Pose2D. Для просмотра публикуемых в топик сообщений используйте:

rostopic echo /display_driver/touchscreen

Так же имеется пример работы с данными тачскрина на Python, для его запуска используйте:

rosrun display_driver example_touch.py

Во время подключенного зарядного устройства могут наблюдаться шумы в данных с тачскрина!


В файле display_driver/config/display_driver.yaml указаны настройки для запуска пакета. Там можно изменить разрешение экрана, частоту обновления, поворот изображения, вкл/выкл тачскрин, изменить названия топиков и сервисов. Данные из этого конфигурационного файла используются при запуске display_driver/launch/display_driver_py.launch. Обратите внимание, внесение изменений в этот файл не влияет на настройки этого пакета при запуске через лаунч-файл пакета robohead_controller, для этого используйте конфигурационные файлы именно пакета .

robohead_controller
Ubuntu-сервис
Успешный запуск пакета