Ответ - не выполнять обработку / публикацию на 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 нужно обрабатывать только управляющую команду при низкой частоте обновления