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,这时候便可以在该窗口中看见该节点的信息了

ROS学习笔记(六):多节点通信

通过设置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
这时候会出来两个小乌龟
ROS学习笔记(六):多节点通信
让它们动起来
$ 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更直观
ROS学习笔记(六):多节点通信
可以看见拓扑结构,消息传给turtlesim1之后会复制一份传递给turtlesim2,因此两个小乌龟的运动完全一样。