如何计算从一个节点向另一个节点发送消息所需的时间?是否有一个函数或c ++节点示例用作此测试场景?
答案 0 :(得分:3)
这取决于您的应用程序和您希望实现的准确性:它可能会随着多线程环境中的随机过程而变化。
但是,您可以在pre_publish_time_ = ros::Time::now()
来电之前使用publish()
进行粗略估算,并将订阅者回调中的已用时间计算为ros::Time elapsed_time = ros::Time::now() - pre_publish_time_
,其中pre_publish_time_
为ros::Time
成员变量。
如果发布商和订阅者位于不同的类中,您可以在邮件中添加std_msgs/Header,并将header.stamp
字段用作pre_publish_time_
(在publish()
方法之前正确填写如上所述)。
geometry_msgs/Vector3Stamped示例:
void publishFcn() {
// ...
geometry_msgs::Vector3Stamped msg;
msg.vector.x = 0;
msg.vector.y = 0;
msg.vector.z = 1;
msg.header.stamp = ros::Time::now();
publisher_.publish(msg);
}
void msgCallback(const geometry_msgs::Vector3Stamped &msg) {
ros::Time elapsed_time = ros::Time::now() - msg.header.stamp;
// ...
}