我们正在尝试使用ros和turtlebot开发自动驾驶。我试图从raspicam_node获取图像并通过车道仪式开车,但是从turpicBot3上的raspicam_node发布太慢了,当然,从远程PC获取图像很慢,因此很难获取图像。 / p>
因此,我们仅通过存储图像并将“接收到的”打印到控制台中来对其进行了测试以降低速度。但是,我们已验证控制台中的文本每10秒输出一次。因此,我认为这不是我们实现的代码的开销。
TurtleBot和远程PC之间的连接已连接到100Mbps的“ IpTime”无线网络计算机。
是因为无线连接速度慢吗?还是必须设置TurtleBot3的raspicam_node? p>
答案 0 :(得分:1)
答案是不对Raspberry PI中的OpenCV或ROS进行任何处理/发布。这是一个非常慢的平台,不允许您执行复杂的操作。
我的建议是在处理大图像数据时通过Raspbeery 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
您必须保持预设的超快调谐零延迟在
上通过这种方式,由于您不进行任何处理而是仅通过Internet转发,因此延迟应该最小。在GCS中,您可以使用opencv或其他必要的工具来获取http或udp服务器地址
然后,您可以对地面控制站上的图像流执行任何操作。例如。单眼深度估计,目标检测,定位。
如有必要,将摄像机流的大小减小为640 * 480。它将加快您的输出速度。即使质量最低的无线设备也应该能够处理640 * 480压缩流。
ROS仅需要以较低的更新频率来处理控制命令