一、准备
确保你已经安装了rqt和turtlesim包,没有的话,使用以下命令安装:1
sudo apt-get install ros-<distro>-rqt ros-<distro>-rqt-common-plugins ros-<distro>-turtlesim
请用你所使用的版本(比如indigo、jade)代替<distro>
。
二、使用rqt_console and rqt_logger_level命令
rqt_console
连接着ROS的日志框架,可以查看节点的输出 rqt_logger_level
则可以调整节点输出信息的详细级别(DEBUG, WARN, INFO, and ERROR)。
现在我们使用rqt_console
查看小海龟节点的日志输出,使用rqt_logger_level
调整日志输出级别。
在启动小海龟之前,先在两个终端分别启用两条命令:1
rosrun rqt_console rqt_console
1 | rosrun rqt_logger_level rqt_logger_level |
你将看到:
和:
然后我们启动小海龟:1
rosrun turtlesim turtlesim_node
图形界面的操作很简单,不再细说,放个链接:ROS wiki。
1、信息优先级
各种级别的优先级由上到下越来越低:1
2
3
4
5Fatal
Error
Warn
Info
Debug
现在我们可以按Ctrl-C
退出小海龟了,
2、使用roslaunch
roslaunch
可以启动launch文件内定义的所有节点,用法:1
roslaunch [package] [filename.launch]
首先进入我们前一步创建的beginner_tutorials包:1
roscd beginner_tutorials
如果你已经把它删除而且忘记怎么创建包的话,请参阅本系列的最前面两篇文章。
然后创建并进入launch
文件夹:
1 | mkdir launch |
3、launch文件
创建一个turtlemimic.launch
文件:
1 | <launch> |
4、launch文件解释
1 | <launch> |
这是一个xml文件,它首先以一个launch
标签开头,以表明它是一个launch文件。1
2
3
4
5
6
7<group ns="turtlesim1">
<node pkg="turtlesim" name="sim" type="turtlesim_node"/>
</group>
<group ns="turtlesim2">
<node pkg="turtlesim" name="sim" type="turtlesim_node"/>
</group>
然后使用命名空间ns
标签创建了两个组,分别命名为turtlesim1
和 turtlesim2
,命名空间内都只有一个名为sim
的海龟节点。而两个节点位于不同的命名空间从而避免了命名冲突。1
2
3
4<node pkg="turtlesim" name="mimic" type="mimic">
<remap from="input" to="turtlesim1/turtle1"/>
<remap from="output" to="turtlesim2/turtle1"/>
</node>
然后我们启动了mimic
节点,它的topic输入输出分别被重命名为turtlesim1
和turtlesim2
。以这种方式可以令turtlesim2
模仿turtlesim1
。1
</launch>
最后是launch
文件的结束标签。
5、roslaunching
现在我们可以使用roslaunch
命令启动这个launch
文件了:
1 | roslaunch beginner_tutorials turtlemimic.launch |
可以看到两只龟已经启动起来了。
在一个新终端里,我们向turtlesim1
发送信息:1
rostopic pub /turtlesim1/turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, -1.8]'
然后就可以看到海龟2模仿海龟1开始转圈。
我们可以使用rqt_graph
命令查看节点关系图来更好地理解两个节点的关系:1
rqt_graph
可以看到micmic
节点起到一个中继的作用,它将turtlsim1
发布的信息发布给turtlesim2
,从而使turtlesim2
模仿turtlesim1
的运动轨迹。