rqt

您所在的位置:网站首页 百度趋势线 rqt

rqt

2023-07-25 21:15| 来源: 网络整理| 查看: 265

rqt_plot工具——ROS中查看变量时间趋势线

工欲善其事,必先利其器

本篇博文依旧是小白教程,最近在写利用二次规划方法优化机械臂关节轨迹的代码。想要通过查看误差变量的时间趋势线看一下控制效果。百度了一下,有rqt_plot这个亲民的小白包。

1.百度到了什么?

https://blog.csdn.net/ktigerhero3/article/details/80927310 这个博主的博文讲得比较清楚,就没有继续往下搜了。

2.然后看到了什么?

注意,由于rqt_plot开启了一个节点,所以要先运行roscore,把master运行起来。

$ roscore $ rosrun rqt_plot rqt_plot

这个时候,我们会看到弹出了一个窗口,先不管他。知己知彼百战不殆,姑且从宏观的角度看一下这个节点的信息。

$ rostopic list

然后没有弹出什么特别的与rqt_plot相关的东西,也就是说,这个rqt_plot本身不会发布消息。

$ rosnode list

可以看到一个匿名发布的节点,也就是说,可以任意开n个rqt_plot也是不影响的。 $ rosnode info rqt_gui_py_node_xxx 查看一下这个节点的信息,看到该节点没有订阅消息,提供了两种服务,没有发布任何消息。

$ rosnode info /rqt_gui_py_node_23864 -------------------------------------------------------------------------------- Node [/rqt_gui_py_node_23864] Publications: * /rosout [rosgraph_msgs/Log] Subscriptions: None Services: * /rqt_gui_py_node_23864/get_loggers * /rqt_gui_py_node_23864/set_logger_level contacting node http://dianyehuang-G7-7588:33125/ ... Pid: 23864 Connections: * topic: /rosout * to: /rosout * direction: outbound * transport: TCPROS 3.怎么用?

从功能上看,rqt_plot需要订阅消息,接收这些消息然后按时间序列画出曲线。在弹出的窗口中,我们可以在topic的文本框中填写我们自己编写的发布的“topic”。接下来需要考虑的是,消息的类型应该是怎么样子的?由前面的博主的代码中我们可以看到,可以是单个变量,也可以是向量。Vector3的类型是怎么样的?我们可以通过rosmsg show 来看一下:

$ rosmsg show geometry_msgs/Vector3 float64 x float64 y float64 z

可见,当我们自定义msg的时候,能够对应上变量就可以了。

4. 测试代码

自定义msg

rqtpltMsg,msg float64 x float64 y int32 z

曲线对应代码如下:

#include #include "my_package/rqtpltMsg.h" #include #include using namespace std; int main(int argc, char** argv) { ros::init(argc,argv, "test_rqtplt"); ros::NodeHandle nh; ros::Publisher my_pub = nh.advertise("my_msg_plt",1); my_package::rqtpltMsg msg; ros::Rate loopRate(200); double t=0; while(ros::ok()){ msg.x=0.1*sin(2*t); msg.y=0.2*cos(t); msg.z=0; my_pub.publish(msg); loopRate.sleep(); t+=1.0/200.0; } }


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3