ROS小工具学习与使用
rqt的使用
-
rqt_bag工具
rqt_bag <your bagfile> #使用rqt_bag查看你的rosbag
例如:可以查看第一帧GPS的rawdata信息,如下图:
参考文献:
1、http://wiki.ros.org/rqt_bag
2、rosbag与rqt_bag的常用
-
rqt_console和rqt_logger_level工具
rqt_console:属于ROS日志框架(logging framework)的一部分,用来显示节点的输出信息。
rqt_logger_level:允许我们修改节点运行时输出信息的日志等级(logger levels)(包括 DEBUG、WARN、INFO和ERROR)。
现在用实例在rqt_console中的输出信息,同时在rqt_logger_level中修改日志等级。在启动例子之前先在另外两个新终端中运行rqt_console和rqt_logger_level:
# 在终端直接运行 $ rqt_console $ rqt_logger_level
打开例子:
$ ./catkin_make.sh
因为默认日志等级是INFO,所以你会看到例子启动后输出的所有信息,如下图所示:
【注】:默认输出等级为INFO, 不输出Debug信息,可以打开rqt_logger_level配置输出等级, 选择节点 /lio_sam_gpsOdometry, logger: ros.lio_sam, levels改为Debug,如下图:
日志等级说明
日志等级按以下优先顺序排列: Fatal Error Warn Info Debug
【注】:Fatal是最高优先级,Debug是最低优先级。
终端消息解读
解释一下输出信息:第一个为系统时间戳。第二个为消息的输出的时候时钟源的时间(仿真时间),当ros系统设置了use_sim_time true的时候,这个为播放的bag包的时间,没有bag数据包播放时会卡住,这里可以参考博客:ros::Rate 设定的帧率循环进入一次就卡住。
【注】:
这里对仿真时间做进一步说明:
如果设置了ros时钟仿真参数(use_sim_time true),发布一个时间的clock话题(/clock),就可以控制ros系统的时间,效果如下:
问:当发布clock话题的节点没有运行,会出现什么反应?
答:当其他所有节点线程遇到延时,执行rospy.sleep,rate.sleep等函数时,会一直卡住,while循环不跳出。一直等待 ,直到时钟初始化。
当然你都无法直接分辨是哪天,这都是从1970-01-01 00:00:00 UTC开始算起的时间,单位为秒。国内北京时间UTC+8.0所以时间戳是从1970-01-01 08:00:00开始。
通过rqt_console查看
要想看懂时间戳,下面就轮到rqt_console登场了,如下图stamp显示的就是转换过后的时间戳:
【注】:双击每条消息任意位置可以查看消息的所有详细信息。
配置过滤哪些消息,可根据等级,消息内容,时间范围,节点以及话题来滤除,如下图:
配置高亮哪些消息,可根据等级,消息内容,时间范围,节点以及话题来设置,如下图:
参考博客:关于ROS日志ROS_INFO需要知道的一些东西
-
bag数据回放注意事项
从包文件重新发布时不要忘记使用模拟时间:使用模拟时间