欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ROS及C++中如何记录程序运行时间并使用rqt_plot工具实时绘制运行时间

程序员文章站 2022-05-27 14:52:01
...

ROS及C++中如何记录程序运行时间并使用rqt_plot工具实时绘制运行时间

ROS及C++中常用的记录时间的方式

示例1:C++中简单实现

#include <time.h>
#include <iostream>
clock_t start, finish;
double duration;
start = clock();
/*
主题程序执行部分
*/
finish = clock();
duration = (double)(finish - start) / CLOCKS_PER_SEC;
cout<<"The run time is:"<<duration<<endl;

示例2:ROS中简单实现

#include <time.h>
#include <iostream>
int main(int argc, char** argv)
{
	ros::init(argc,argv,"RecordTime");
	clock_t startTime,endTime;
    startTime = ros::Time::now().toNSec();
    /*
    主体程序运行
    */
    endTime = ros::Time::now().toNSec();
    cout << "The run time is:" << (double)(endTime - startTime) / 10e6 << "ms" << endl;
}

示例3:ROS中以话题形式实现并使用rqt_plot进行实时绘制

#include <std_msgs/Float64.h>
#include <time.h>

int main(int argc, char** argv)
{
	ros::init(argc,argv,"RecordTime");
	ros::NodeHandle nh;
	ros::Publisher pub_time;
	pub_time = nh.advertise<std_msgs::Float64>("/run_time",10);
	clock_t start;
    start = clock();
    /*
    主体程序运行
    */
    clock_t finish;
    finish = clock();
    std_msgs::Float64 duration;
    duration.data = (double)(finish - start) / CLOCKS_PER_SEC;
    pub_time.publish(duration);
}

前期工作:
打开终端,运行roscore,在运行程序节点之后,在终端中输入以下命令:

 rosrun rqt_plot rqt_plot

输入命令后会弹出以下窗口,在窗口中Topic文本框中输入所要绘制的话题名称,如下图中所示的**/turtle1/pose/x**,/turtle1/pose/y
ROS及C++中如何记录程序运行时间并使用rqt_plot工具实时绘制运行时间
按下减号按钮会显示一组菜单让你隐藏图形中指定的话题。 现在隐藏掉你刚才添加的话题并添加**/turtle1/pose/theta**,你会看到如下图所示的图形:
ROS及C++中如何记录程序运行时间并使用rqt_plot工具实时绘制运行时间