从项目中一个实例说起,我们的目标是将决策层做出的控制小车的决策(主要是速度velocity还有角速度angular),通过TCP网络传输的方式传递到与控制小车的FPGA相连接的RaspberryPi。也许你会问,为毛要通过网络传输,不能通过其他方式,比如串口,不是会更快点吧?
Maybe…不过,这是有原因的。
其一,我觉得应该通过以太网线直接将运行决策的PC机网卡与树莓派上的网卡直接相连接,再用网络传输,应该比串口快,或者说,更稳定高效。遗憾的是,我们没办法通过以太网线直接相连,而是通过WiFi,这是因为,其二,PC机唯有的一个以太网卡,拿去插激光雷达了,而激光雷达作为一个sensor,是决策所必须的。
其三,整个体系运行在ROS之上,而,把ROS体系中做出来的决策送到控制端的树莓派上,我们得自己想办法或者说Coding。刚好,找到有一个开源的ros通讯,恰好人家是通过TCP传输的,所以,就没想那么多,直接用上了。
可想而知,这个开源的ros通讯要做的,就是把决策层做出来的velocity和angular,通过tcp传送到运行在树莓派上的程序进而控制FPGA控制小车。搞过ROS的应该知道,在ROS中节点都是通过消息进行通讯的,那么,这个ros通讯节点要做的肯定就是订阅决策层做出来的关于控制的消息,然后通过网络传输出去,这些,你可以阅读 这个开源项目 的源码进行了解。