Как связать ROS с приложением Qt для передачи видео и CAN-сообщений - PullRequest
0 голосов
/ 12 марта 2020

Я новичок в ROS. Мое приложение было разработано в Qt + OpenCV, оно кроссплатформенное. Он подключается к камере и отображает изображения и сигналы CAN с автобуса. Теперь я хочу передать изображение и сигнал CAN в систему ROS в режиме реального времени. После нескольких часов поиска в Google, похоже, есть несколько вариантов:

  1. Использовать ros_bridge: http://wiki.ros.org/rosbridge_suite При таком подходе требуется веб-сокет и передача данных в формате JSON , Требуется сторона ROS запустить сервер моста. Затем моему qpp нужно запустить web-браузер и открыть страницу HTML, которая использует websocket с библиотекой roslib js JavaScript. Я не понял, как передать объект iamge и как получить его на стороне ROS. любая помощь приветствуется.

  2. Я нашел это: http://wiki.ros.org/web_video_server, но он передает изображения из ROS на веб-сайт через HTTP. Это наоборот.

Мой вопрос: какой способ является лучшим и быстрым для реализации поддержки передачи изображений в ROS?

Я не могу использовать ROS-Qt-Plugin для повторной компиляции моего приложение, поскольку это слишком большой проект, который не подходит для моей ситуации.

Спасибо за любую помощь.

1 Ответ

0 голосов
/ 13 марта 2020

У меня был похожий проект, в итоге мы использовали OpenCV для чтения изображений, затем просто использовали cv_bridge , чтобы преобразовать его в сообщение ROS и опубликовать sh в topi c. Это было действительно просто, но мы должны были быть осторожны с размерами изображений / скоростями передачи данных, чтобы избежать переполнения нашей сети.

Запустить узел ros в приложении Qt просто, даже без ROS-Qt. Может быть, что-то вроде в этом примере ? И, очевидно, когда у вас есть узел, просто создайте подходящего издателя, и получить его в ROS просто. Использовать пакет cv_bridge просто, просто следуйте инструкциям для C ++ или Python.

Дайте мне знать, если это поможет.

...