ROS学习笔记(五)

    xiaoxiao2021-03-25  82

    rqt_console

    这部分我们介绍用ros_console和rqt_logger_level调试roslaunch一次开启多个节点。先把前几部分的terminal关闭,打开一个新的:

    $ roscore

    将其挂到后台或者重新开一个新的terminal,启动我们的工具:

    $ rosrun rqt_console rqt_console $ rosrun rqt_logger_level rqt_logger_level 我们还可以这样直接启动他们: $ rqt_console $ rqt_logger_level

    rqt_console连接ROS日志框架,能够显示节点的日志。rqt_logger_level允许我们改变显示日志的信息级别(DEBUG, WARN, INFO, and ERROR),默认是显示INFO。现在我们启动小乌龟节点来看看两个工具的表现:

    $ rosrun turtlesim turtlesim_node

    让我们改变一下日志显示的级别到WARN: 既然日志要看WARN,那我们肯定要制造一点WARN嘛 XD :

    $ rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0,y: 0.0,z: 0.0}}'

    OK,接下来我们来熟悉下日志的各个级别:Fatal,Error,Warn,Info,Debug,优先级从左到右依次降低,Fatal最高,Debug最低。设置成低优先级的级别可以看到所有比他高(包括他本身)级别的日志,例如设置Info,你就能看到Fatal,Error,Warn,Info四个级别的日志。

    roslaunch

    roslaunch启动那些启动文件定义的节点,可以理解为“开机启动”,来看用法:

    用法:$ roslaunch [package] [filename.launch]

    我们先创建一个文件夹来存放launch文件,但是这步并不是必须的,roslaunch会自动搜索检测整个package中适合的launch,当然这样做可以更加清晰:

    $ roscd beginner_tutorials $ mkdir launch $ cd launch $ gedit turtlemimic.launch 粘贴以下内容: <launch> <group ns="turtlesim1"> <node pkg="turtlesim" name="sim" type="turtlesim_node"/> </group> <group ns="turtlesim2"> <node pkg="turtlesim" name="sim" type="turtlesim_node"/> </group> <node pkg="turtlesim" name="mimic" type="mimic"> <remap from="input" to="turtlesim1/turtle1"/> <remap from="output" to="turtlesim2/turtle1"/> </node> </launch>

    这里解释以下我们的launch文件内容,第一行不用说launch文件的标签必不可少。后面两段是创建了两个turtlesim1和turtlesim2的组员,节点名字是sim,节点类型都是turtlesim_node,这样我们就创建了两个小乌龟模拟器,虽然名字相同,但是并不冲突。第三段是启动mimic节点,输入是turtlersim1/turtle1,输出是turtlersim2/turtle1,意思就是让turtlersim1得到消息也要发一份给turtlersim2,也即是turtlesim2模仿turtlesim1。我们看看这个启动文件有没有效果:

    $ roslaunch beginner_tutorials turtlemimic.launch $ rostopic pub /turtlesim1/turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, -1.8]'

    最后我们要看看节点之间的通信情况,看看是如何实现这个功能的:

    $ rqt_graph

    从图中就可以看出来,的确是turtlesim1先订阅消息,然后发布给mimic,由mimic转发布给turtlesim2。

    转载请注明原文地址: https://ju.6miu.com/read-36020.html

    最新回复(0)