ROS及C++中如何记录程序运行时间并使用rqt

    科技2022-07-13  122

    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 按下减号按钮会显示一组菜单让你隐藏图形中指定的话题。 现在隐藏掉你刚才添加的话题并添加**/turtle1/pose/theta**,你会看到如下图所示的图形:

    Processed: 0.009, SQL: 8