ROS学习笔记(六):多节点通信
这篇博客主要介绍如何利用rqt_console和rqt_logger_level来同时启动和调试多个节点。
1.rqt_console 和rqt_logger_level
rqt_console利用ROS的日志框架来显示节点输出,rqt_logger_level允许我们查看节点的详细运行信息,包括调试信息,警告信息,错误信息等。我们先确认已安装相关包并更新。
$sudo apt-get install ros-<distro>-rqt ros-<distro>-rqt-common-plugins ros-<distro>-turtlesim之后在新命令窗口下运行:(需要先运行roscore)
$ rosrun rqt_console rqt_console
$ rosrun rqt_logger_level rqt_logger_level
接下来运行turtlesim,这时候便可以在该窗口中看见该节点的信息了
通过设置logging evel我们可以筛选所需要的信息,level优先级由高到低分别为Fatal,Error,Warn,Info,Debug。例如当我们将优先级设为Warn时,只会显示Warn及比它更高优先级的提示信息。
2.roslaunch
roslaunch将节点定义为一个launch文件。用法为:
$ roslaunch [package] [filename.launch] 我们先进入之前创建好的beginner_tutorials包
$ roscd beginner_tutorials这个地方可能会出现如下错误:
No such package/stack 'beginner_tutorials'
这时候可以:
$ cd ~/catkin_ws $ source devel/setup.bash $ roscd beginner_tutorials接下来就可以建一个launch了
$ mkdir launch $ cd launch
3.创建turtlemimic.launch
Toggle line numbers
1 <launch>
2
3 <group ns="turtlesim1">
4 <node pkg="turtlesim" name="sim" type="turtlesim_node"/>
5 </group>
6
7 <group ns="turtlesim2">
8 <node pkg="turtlesim" name="sim" type="turtlesim_node"/>
9 </group>
10
11 <node pkg="turtlesim" name="mimic" type="mimic">
12 <remap from="input" to="turtlesim1/turtle1"/>
13 <remap from="output" to="turtlesim2/turtle1"/>
14 </node>
15
16 </launch>
这里创建了两个包含turtlesim的节点,还创建了一个模仿节点(mimic)。
4.运行。$ 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之后会复制一份传递给turtlesim2,因此两个小乌龟的运动完全一样。