8.2 使用rqt_console和rqt_logger_level
Last updated
Last updated
rqt_console属于ROS日志框架(logging framework)的一部分,用来显示节点的输出信息。
rqt_logger_level允许我们修改节点运行时输出信息的日志等级(logger levels)(包括 DEBUG、WARN、INFO和ERROR)。
现在让我们来看一下turtlesim在rqt_console中的输出信息,同时在rqt_logger_level中修改日志等级。在启动turtlesim之前先在另外两个新终端中运行rqt_console和rqt_logger_level:
你会看到弹出两个窗口:
现在让我们在一个新终端中启动turtlesim:
因为默认日志等级是INFO,所以你会看到turtlesim启动后输出的所有信息,如下图所示:
![image][2] [2]http://wiki.ros.org/ROS/Tutorials/UsingRqtconsoleRoslaunch?action=AttachFile&do=get&target=rqt_console(turtlesimstart).png
现在让我们刷新一下rqt_logger_level窗口并选择Warn将日志等级修改为WARN,如下图所示:
![image][3] [3]http://wiki.ros.org/ROS/Tutorials/UsingRqtconsoleRoslaunch?action=AttachFile&do=get&target=rqt_logger_level(error).png
现在我们让turtle动起来并观察rqt_console中的输出
![image][4] [4]http://wiki.ros.org/ROS/Tutorials/UsingRqtconsoleRoslaunch?action=AttachFile&do=get&target=rqt_console(turtlesimerror).png
日志等级按以下优先顺序排列:
Fatal是最高优先级,Debug是最低优先级。通过设置日志等级你可以获取该等级及其以上优先等级的所有日志消息。比如,将日志等级设为Warn时,你会得到Warn、Error和Fatal这三个等级的所有日志消息。
现在让我们按Ctrl-C退出turtlesim节点,接下来我们将使用roslaunch来启动多个turtlesim节点和一个模仿节点以让一个turtlesim节点来模仿另一个turtlesim节点。
roslaunch可以用来启动定义在launch文件中的多个节点。
用法:
先切换到beginner_tutorials功能包目录下:
如果roscd执行失败了,记得设置你当前终端下的ROS_PACKAGE_PATH环境变量,设置方法如下:
或者
如果你仍然无法找到beginner_tutorials功能包,说明该功能包还没有创建,那么请返回到ROS/Tutorials/CreatingPackage教程,并按照创建功能包的操作方法创建一个beginner_tutorials功能包。
然后创建一个launch文件夹:
现在我们来创建一个名为turtlemimic.launch的launch文件并复制粘贴以下内容到该文件里面:
现在我们开始逐句解析launch xml文件。
在这里我们以launch标签开头以表明这是一个launch文件。
在这里我们创建了两个节点分组并以'命名空间(namespace)'标签来区分,其中一个名为turtulesim1,另一个名为turtlesim2,两个组里面都使用相同的turtlesim节点并命名为'sim'。这样可以让我们同时启动两个turtlesim模拟器而不会产生命名冲突。
在这里我们启动模仿节点,并将所有话题的输入和输出分别重命名为turtlesim1和turtlesim2,这样就会使turtlesim2模仿turtlesim1。
这个是launch文件的结束标签。
现在让我们通过roslaunch命令来启动launch文件:
现在将会有两个turtlesims被启动,然后我们在一个新终端中使用rostopic命令发送速度设定消息:
你会看到两个turtlesims会同时开始移动,虽然发布命令只是给turtlesim1发送了速度设定消息。
我们也可以通过rqt_graph来更好的理解在launch文件中所做的事情。运行rqt并在主窗口中选择node_graph:
或者直接运行:
到此,我们算是已经学会了rqt_console和roslaunch命令的使用,接下来我们开始学习使用rosed——ROS中的编辑器。现在你可以按Ctrl-C退出所有turtlesims节点了,因为在下一篇教程中你不会再用到它们。