ROS的学习(十)rqt_console和roslaunch

来源:互联网 发布:fpga 开发板 数据采集 编辑:程序博客网 时间:2024/04/30 11:27
     打开一个新的终端在里面输入:
sudo apt-get install ros-hydro-rqt ros-hydro-rqt-common-plugins ros-hydro-turtlesim

安装使用rqt_console所需要的插件,如果你不知道之前是否安装,没关系,把这个命令运行一下就行了,它不会对你之前的系统有任何的伤害。在终端中运行rqt_console:
rosrun rqt_console rqt_console

     再新打开一个终端运行:
rosrun rqt_logger_level rqt_logger_level

在运行这两条命令的时候,你会看到弹出了两个窗口,在一个新的终端中输入:
rosrun turtlesim turtlesim_node

运行一只乌龟节点,就可以看到在rqt_console中有信息输出。我们点击一下logger_level窗口中的refresh按钮,就可以看到在最左边的框中出现了turtlesim,选中turtlesim,选中右边的warn,运行下面指令:
rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, 0.0]'

就可以看到console窗口中不断的输出警告信息,如过我们将logger_level窗口中的级别修改为fatal,就会发现信息的输出停止。如果再将它选为warn,信息就会继续输出。

     在ros中将信息分为五个等级,从高到低如下:

FatalErrorWarnInfoDebug

fatal有最高的优先级,而debug的优先级最低。如果你选择的优先级是debug,那么就会接收所有的消息,如果你选择的是warn,就会接收warn及高于它的优先级的信息。

     roslaunch命令从launch文件中启动一个节点,它的使用方法如下:

roslaunch [package] [filename.launch]

     首先切换到beginner_tutorials文件下:
roscd beginner_tutorials

     创建launch文件夹,切换到该文件夹下:
 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>

     保存退出就可以了。

     现在使用如下命令载入:

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]'

就可以看到两只乌龟都在运动。下面来解释一下原因:<lanuch>标签用来识别这是一个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>

上面的这些被荣使turtlesim2模仿turtlesim1。所以虽然我们只向turtlesim1发布了话题,turtlesim2也做出了反应。