Могу ли я увеличить скорость публикации 'raspicam_node' в OpenCV? - PullRequest
1 голос
/ 09 июня 2019

Мы пытаемся развивать самостоятельное вождение, используя ros и turtlebot. Я пытаюсь получить изображение из raspicam_node и использовать диск с церемонией переулка, но его слишком медленно публиковать из raspicam_node на turtleBot3. Конечно, его медленно получить с удаленного ПК, поэтому трудно получить изображение.

Итак, мы протестировали его, чтобы замедлить, просто сохраняя изображения и печатая «полученные» в консоли. Однако мы убедились, что текст в консоли выводится один раз каждые 10 секунд. В результате я думаю, что это не накладные расходы на код, который мы реализовали.

Соединение между TurtleBot и удаленным ПК подключено к устройству беспроводной сети IpTime со скоростью 100 Мбит / с.

Это из-за медленного беспроводного соединения или мне нужно установить raspicam_node для TurtleBot3?

1 Ответ

1 голос
/ 09 июня 2019

Ответ - не выполнять обработку / публикацию на OpenCV или ROS в Raspberry PI.Это довольно медленная платформа и не позволяет выполнять сложные операции.

Мое предложение состоит в том, чтобы обойти все ROS и OpenCV на Raspbeery PI при работе с большими данными изображения.

(1) Если вам действительно нужно использовать ROS, по крайней мере, используйте сжатый поток из

Смотрите здесь, чтобы узнать, как это делается http://wiki.ros.org/image_transport

rosrun image_transport republish [in_transport] in:=<in_base_topic> [out_transport] out:=<out_base_topic>

(2) Другой недорогой способ отправки на землю - использование v4l2 driver , поэтому его можно либо

sudo modprobe bcm2835-v4l2
cvlc v4l2:///dev/video0 --v4l2-width 1920 --v4l2-height 1080 --v4l2-chroma h264 --sout '#standard{access=http,mux=ts,dst=0.0.0.0:22322}'

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

ffmpeg -f v4l2 -framerate 30 -video_size 800x448 -i /dev/video0 -i /home/pi/Desktop/sound/logo.png -codec:v h264 -r 30 -s 800x448 -bf 0 -g 30 -bufsize 8000k -maxrate 8000k -filter_complex "[0:v][1:v] overlay=(W-w)/2:(H-h)/2:enable='gte(t,1)'" -preset ultrafast -tune zerolatency -f h264 udp://192.168.5.10:23003

Вы должны сохранить предустановленную сверхбыструю настройку нуля на

Таким образом, задержка должна быть минимальной, так как вы не выполняете никакой обработки, а просто пересылаете через Интернет,В GCS вы можете использовать opencv или другие инструменты, необходимые для получения адреса http или udp-сервера

Затем вы делаете все, что хотите, с потоком изображений на наземной станции управления.Например, оценка глубины монокуляра, обнаружение объекта, локализация.

Если необходимо уменьшить РАЗМЕР потока камеры до 640 * 480., Это ускорит вашу скорость вывода.Даже самое низкое качество беспроводной связи должно обрабатывать сжатый поток 640 * 480.

ros нужно обрабатывать только управляющую команду при низкой частоте обновления

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...