Работа с камерой

При включении робота автоматический стартует вещание видео необходимое для работы web интерфейса. Для этого используется launch файл camera_stream.launch, который запускает ROS ноду mjpg_camera

Web интерфейс для просмотра видео и управления роботом доступен на URL http://192.168.0.100:8080 где 192.168.0.100 IP вашего робота. Данный способ работы с камерой не создает ROS топика с данными камеры. Но его удобно использовать для работы с камерой в браузере, без дополнительных настроек.

Работа с камерой в через ROS

Если вам необходимо получить данные из камеры в ROS, то вам необходимо поменять запускаемый launch файл для работы с пакетом uvc_camera.

Для запуска ноды uvc_camera небходимо использовать файл camera_ros.launch

Одновременно с камерой работать обе ноды не много, поэтому необходимо переконфигурировать файл запуска /etc/ros/melodic/turtlebro.d/turtlebro.launch в части:

<arg name="run_turtlebro_web" default="true"/>
<arg name="run_uvc_camera" default="false"/>

Выключить веб интерфейс run_turtlebro_web и включить run_uvc_camera

Для версии до 0.0.6

В стандартной комплектации на робот установлена фронтальная камера. В настройках по умолчанию обработка камеры отключена с целью экономии ресурсов.

Подключить работу камеры необходимо в настройках файла turtlebro.launch или запустить командой

roslaunch turtlebro uvc_camera.launch

Для простого визуального наблюдения через камеру рекомендуется использовать uvc_camera

Пакет uvc_camera

Пакет публикует сжатые данные sensor_msgs/CompressedImage в топик front_camera/compressed

Официальная документация пакета http://wiki.ros.org/uvc_camera

Пакет cv_camera

Данный пакет работает с камерой через библиотеку ОpenCV, может работать как в режиме node , так и вnodelet

Конфигурация в файле cv_camera.launch данные в формате sensor_msgs/Image в топик front_camera/image_raw Данные передаются в RAW формате (без компрессии), что удобно для дальнейшей программной обработки.

Конвертация из sensor_msgs/Image в формат OpenCV возможна через библиотеку http://wiki.ros.org/cv_bridge

Работа с камерой через OpenCV

На роботе установлена библиотека OpenCV, поэтому с камерой можно работать напрямую, подключившись к камере "стандартной" для opencv функцией вида cap = cv2.VideoCapture(0)

Далее производить с видео все необходимые манипуляции, и после этого, при необходимости, публиковать видео в топики.

Пример программы на pytnon, которая, используя opencv , следит за цветным мячиком и управляет роботом: ball_tracking.py