gpt4 book ai didi

c++ - ROS 节点到节点持续时间

转载 作者:搜寻专家 更新时间:2023-10-31 01:37:35 26 4
gpt4 key购买 nike

我如何计算出从一个节点向另一个节点发送消息需要多少时间?是否有函数或 C++ 节点示例可用作此测试场景?

最佳答案

这取决于您的应用程序和您想要达到的精度:它可能会随着多线程环境中的随机过程而变化。

但是,您可以在 publish() 调用之前使用 pre_publish_time_ = ros::Time::now() 进行粗略估计,并计算耗时订阅者回调为 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;

// ...
}

关于c++ - ROS 节点到节点持续时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33945033/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com