display_driver

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

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


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

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

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

  • Видео: .mp4


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

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.

Last updated