ROS节点到节点的持续时间

时间:2015-11-26 18:24:12

标签: c++ ros

如何计算从一个节点向另一个节点发送消息所需的时间?是否有一个函数或c ++节点示例用作此测试场景?

1 个答案:

答案 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;

  // ...
}