我可以加快OpenCV的'raspicam_node'发布速度吗?

Can I speed up the 'raspicam_node' publish speed of OpenCV?

本文关键字:布速度 速度 OpenCV 我可以 raspicam node      更新时间:2023-10-16

我们正在尝试使用ros和turtlebot开发自动驾驶。我正在尝试从raspicam_node获取图像并以车道仪式驾驶,但是在 turtleBot3 上从raspicam_node发布太慢了.当然,从远程 PC 获取它很慢,所以很难获得图像。

因此,我们测试了它,通过仅存储图像并将"接收"打印到控制台中来减慢速度。但是,我们已验证控制台中的文本每 10 秒输出一次。因此,我认为这不是我们实现的代码的开销。

TurtleBot和远程PC之间的连接连接到100Mbps的"IpTime"无线网络机器。

是因为这种缓慢的无线连接还是我必须设置 TurtleBot3 的raspicam_node?

答案不是在Raspberry PI中的OpenCV或ROS上进行任何处理/发布。这是一个非常慢的平台,不允许您执行复杂的操作。

我的建议是在处理大型图像数据时,通过Raspberry PI上的所有ROS和OpenCV。

(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 驱动程序,因此它要么

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

您必须保持 -预设的超快 -tune 零延迟打开

这样,延迟应该是最小的,因为您不进行任何处理,而只是通过互联网转发。在GCS中,您可以使用opencv或其他必要的工具来获取http或udp服务器地址。

然后,您可以对地面控制站上的图像流执行任何操作。 例如单目深度估计、物体检测、定位。

如有必要,将相机流的大小减小到640480.,它将加快输出速度。即使是质量最低的无线也应该能够处理压缩的 640 480流。

ros只需要在低更新频率下处理控制命令