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

来源:互联网 发布:nat 穿透 java 编辑:程序博客网 时间:2024/06/06 12:21

        这篇博客主要介绍如何利用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,因此两个小乌龟的运动完全一样。

原创粉丝点击