display_controller

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

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


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

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

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

  • Видео: .mp4, .mov, .avi


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

roslaunch display_controller display_controller.launch

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

# displayControllerPlay.srv
string FileName
---
uint8 Data

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

Через CLI:

rosservice call /displayControllerPlay "FileName: '/home/pi/robohead_ws/src/robohead/display_controller/examples/pic.png'"

Через Python:

rosrun display_controller file.py

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

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

# Запустите в отдельном терминале пакет cv-camera
rosrun cv_camera cv_camera_node

# Запустите скрипт-пример
rosrun display_controller stream.py

Убедитесь, что во время потокового вывода у вас не воспроизводятся видео-материалы. Чтобы остановить воспроизведение видео вызовите сервис displayController со значением "__BLANK__".

CLI:

rosservice call /displayControllerPlay "FileName: '__BLANK__'"

Python:

service_display_player('__BLANK__')

Работа с тачскрином:

rosrun display_controller toucher.py

При запуске пакета создаётся ROS-нода "/display_controller_node".

При ошибках разрешения/расширения/пути и др. Информация об ошибке выводится на дисплей.

Last updated