Работа с камерой (v0.10)
Last updated
Last updated
При включении робота автоматически включается камера video0
и начинают публиковаться данные в топики камеры:
Данные c камеры принимаются в формате mjpeg
и без дополнительной обработки публикуются в топик /front_camera/image_raw/compressed
. Для заполнения топика /front_camera/image_raw
происходит перекодирование jpeg->raw с использованием пакета image_transport
.
Если вы не используете данные /front_camera/image_raw
рекомендуется отключить лишнее преобразование (аргумент republish_raw
).
Для просмотра видео через топики ROS, можно использовать робота. При загрузке веб-интерфейса происходит поиск всех доступных видеоданных (топики с sensor_msgs/CompressedImage
). Если такие топики найдены, то все они будет добавлены в веб-интерфейс для просмотра. При добавлении новых топиков, веб-интерфейс робота необходимо перезагрузить.
Вы можете использовать rviz для отображения видеопотока камеры. При удаленной работе рекомендуем выбирать для просмотра сжатые видеоданные (топик /front_camera/image_raw/compressed
)
Для просмотра видео можно использовать специальные Linux программы. Например или
Пакет публикует сжатые данные sensor_msgs/CompressedImage
в топик front_camera/image_raw/compressed
Для работы с OpenCV данные из камеры ROS необходимо конвертировать из топиков в объект OpenCV
Для создания объекта с OpenCV используется библиотеке CvBridge и метод imgmsg_to_cv2
, где image_msg
это сообщение из топика.
Важно понимать, что в случае использования compressed происходит дополнительное преобразование jpeg->raw. Но при этом происходит экономия сетевых ресурсов.
Также вы можете отключить ноду ROS по захвату изображения с камеры и сделать захват данных из своего OpenCV приложения самостоятельно.
cap = cv2.VideoCapture(0)
После этого удобно опубликовать данные в топик самостоятельно для просмотра через веб-интерфейс и тп.
Далее производить с видео все необходимые манипуляции, и после этого, при необходимости, публиковать видео в топики.
Официальная документация пакета
Пример программы на pytnon, которая, используя opencv
, следит за цветным мячиком и управляет роботом: