TCPROS是ROS默认使用的传输方式。另一种通信类型是 UDPROS,这种方式是一种低延迟、非可靠的传输,仅适用于远程操作。
在发布的消息头中,在发布消息之前将当前时间戳写到timeStamp中,然后在订阅器的回调函数中再计算消息中的timeStamp到当前时间的Duration,这样子能够大概计算这个经过的时间;实际上网络延迟会比这个Duration稍微短一点。
更换为UDP 通信只需要在 ros::Subscriber
的构造函数最后加上ros::TransportHints().unreliable().maxDatagramSize(1000)
即可。
- 随着频率的增加,通信延迟也相应增加
- 在UDP通信中,随着
maxDatagramSize
的增加,通信延迟也随着降低。 - 随着订阅者数量增加,通信延迟也会增加。