使用 rqt_console 和 roslaunch

Description: 本教程介绍如何使用rqt_consolerqt_logger_level进行调试,以及如何使用roslaunch同时运行多个节点。早期版本中的rqt工具并不完善,因此,如果你使用的是“ROS fuerte”或更早期的版本,请同时参考这个页面学习使用老版本的“rx”工具。

Tutorial Level: BEGINNER

Next Tutorial: 如何使用rosed

预先安装rqt和turtlesim程序包

本教程会用到rqtturtlesim这两个程序包,如果你没有安装,请先安装:

$ sudo apt-get install ros-<distro>-rqt ros-<distro>-rqt-common-plugins ros-<distro>-turtlesim

请使用ROS发行版名称(比如 electric、fuerte、groovy、hydro或最新的indigo)替换掉<distro>。

注意: 你可能已经在之前的某篇教程中编译过rqt和turtlesim,如果你不确定的话重新编译一次也没事。

使用rqt_console和rqt_logger_level

rqt_console属于ROS日志框架(logging framework)的一部分,用来显示节点的输出信息。rqt_logger_level允许我们修改节点运行时输出信息的日志等级(logger levels)(包括 DEBUG、WARN、INFO和ERROR)。

现在让我们来看一下turtlesim在rqt_console中的输出信息,同时在rqt_logger_level中修改日志等级。在启动turtlesim之前先在另外两个新终端中运行rqt_consolerqt_logger_level

$ rosrun rqt_console rqt_console
$ rosrun rqt_logger_level rqt_logger_level

你会看到弹出两个窗口:

现在让我们在一个新终端中启动turtlesim:

$ rosrun turtlesim turtlesim_node

因为默认日志等级是INFO,所以你会看到turtlesim启动后输出的所有信息,如下图所示:

现在让我们刷新一下rqt_logger_level窗口并选择Warn将日志等级修改为WARN,如下图所示:

现在我们让turtle动起来并观察rqt_console中的输出(非hydro版):

rostopic pub /turtle1/command_velocity turtlesim/Velocity -r 1 -- 2.0  0.0

hydro版:

rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, 0.0]'

日志等级说明

日志等级按以下优先顺序排列:

Fatal
Error
Warn
Info
Debug

Fatal是最高优先级,Debug是最低优先级。通过设置日志等级你可以获取该等级及其以上优先等级的所有日志消息。比如,将日志等级设为Warn时,你会得到WarnErrorFatal这三个等级的所有日志消息。

现在让我们按Ctrl-C退出turtlesim节点,接下来我们将使用roslaunch来启动多个turtlesim节点和一个模仿节点以让一个turtlesim节点来模仿另一个turtlesim节点。

使用roslaunch

roslaunch可以用来启动定义在launch文件中的多个节点。

用法:

$ roslaunch [package] [filename.launch]

先切换到beginner_tutorials程序包目录下:

$ roscd beginner_tutorials

如果roscd执行失败了,记得设置你当前终端下的ROS_PACKAGE_PATH环境变量,设置方法如下:

$ export ROS_PACKAGE_PATH=~/<distro>_workspace/sandbox:$ROS_PACKAGE_PATH
$ roscd beginner_tutorials

如果你仍然无法找到beginner_tutorials程序包,说明该程序包还没有创建,那么请返回到ROS/Tutorials/CreatingPackage教程,并按照创建程序包的操作方法创建一个beginner_tutorials程序包。

然后创建一个launch文件夹:

$ mkdir launch
$ cd launch

Launch 文件

现在我们来创建一个名为turtlemimic.launch的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>

Launch 文件解析

现在我们开始逐句解析launch xml文件。

在这里我们以launch标签开头以表明这是一个launch文件。

Toggle line numbers

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>

在这里我们创建了两个节点分组并以'命名空间(namespace)'标签来区分,其中一个名为turtulesim1,另一个名为 turtlesim2,两个组里面都使用相同的turtlesim节点并命名为'sim'。这样可以让我们同时启动两个turtlesim模拟器而不会产 生命名冲突。

Toggle line numbers

11   <node pkg="turtlesim" name="mimic" type="mimic">
12 <remap from="input" to="turtlesim1/turtle1"/>
13 <remap from="output" to="turtlesim2/turtle1"/>
14 </node>

在这里我们启动模仿节点,并将所有话题的输入和输出分别重命名为turtlesim1和turtlesim2,这样就会使turtlesim2模仿turtlesim1。

这个是launch文件的结束标签。

roslaunching

现在让我们通过roslaunch命令来启动launch文件:

$ roslaunch beginner_tutorials turtlemimic.launch

现在将会有两个turtlesims被启动,然后我们在一个新终端中使用rostopic命令发送速度设定消息:

非hydro版:

$ rostopic pub /turtlesim1/turtle1/command_velocity turtlesim/Velocity -r 1 -- 2.0  -1.8

hydro版:

$ rostopic pub /turtlesim1/turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, -1.8]'

你会看到两个turtlesims会同时开始移动,虽然发布命令只是给turtlesim1发送了速度设定消息。

我们也可以通过rqt_graph来更好的理解在launch文件中所做的事情。运行rqt并在主窗口中选择rqt_graph

$ rqt

或者直接运行:

$ rqt_graph

到此,我们算是已经学会了rqt_console和roslaunch命令的使用,接下来我们开始学习使用rosed——ROS中的编辑器。现在你可以按Ctrl-C退出所有turtlesims节点了,因为在下一篇教程中你不会再用到它们。

使用 rqt_console 和 roslaunch---8的更多相关文章

  1. 理解ROS rqt_console和 roslaunch

    1.使用rqt_console和roslaunch 这篇教程将介绍使用rqt_console和rqt_logger_level来调试以及使用roslaunch一次启动许多nodes.如果你使用ROS  ...

  2. Using rqt_console and roslaunch

    Description: This tutorial introduces ROS using rqt_console and rqt_logger_level for debugging and r ...

  3. ROS学习(九)—— rqt_console 和 roslaunch

    一.rqt_console 和rqt_logger_level 1.作用: rqt_console依据ROS编译日志,输出节点信息 rqt_logger_level可以改变节点的警告出差的警告等级 2 ...

  4. ROS学习手记 - 6 使用ROS中的工具:rqt_console & roslaunch & rosed

    http://wiki.ros.org/ROS/Tutorials/UsingRqtconsoleRoslaunch Using rqt_console and roslaunch This tuto ...

  5. 快速了解 Robot Operating System(ROS) 机器人操作系统

     http://www.ros.org/ 关于ROS About ROS http://www.ros.org/about-ros/ 机器人操作系统(ROS)是用于编写机器人软件的灵活框架.目的在简化 ...

  6. ROS机器人程序设计(原书第2版)补充资料 (柒) 第七章 3D建模与仿真 urdf Gazebo V-Rep Webots Morse

    ROS机器人程序设计(原书第2版)补充资料 (柒) 第七章 3D建模与仿真 urdf Gazebo V-Rep Webots Morse 书中,大部分出现hydro的地方,直接替换为indigo或ja ...

  7. ROS_Kinetic_02 ROS Kinetic 迁移指南及中文wiki指南(Migration guide)

    ROS_Kinetic_02 ROS Kinetic 迁移指南(Migration guide) 对于ROS Kinetic Kame有些功能包已经更新改变,提供关于这些包的迁移注意或教程.主要针对于 ...

  8. ROS教程

    Learning ROS 学习ROS Depending on your learning style and preferences, you can take two approaches to ...

  9. ROS官网新手级教程总结

    第 1 关卡:安装和配置 ROS 环境 目标:在计算机上安装和配置 ROS 环境. 安装 ROS 按照 ROS 安装说明进行安装. 管理环境 确定环境变量 ROS_ROOT 和 ROS_PACKAGE ...

随机推荐

  1. https://docs.mongodb.org/manual/reference/operator/aggregation/unwind/#examples

    https://docs.mongodb.org/manual/reference/operator/aggregation/unwind/#examples http://www.clusterdb ...

  2. .className = "highlight";.setAttribute("class", "highlight");

    document.getElementById("top").innerHTML = newHTML; document.getElementById("contact& ...

  3. struts2 文件的上传下载 表单的重复提交 自定义拦截器

    文件上传中表单的准备 要想使用 HTML 表单上传一个或多个文件 须把 HTML 表单的 enctype 属性设置为 multipart/form-data 须把 HTML 表单的method 属性设 ...

  4. [vijos P1531] 食物链

    做出的第一道NOI题目?(噗,还是看题解才会的…按某篇解题说的,这题就比我年轻四岁…T T 做的第一道IOI题目是USACO上的Packing Rectangles...这题比我还老!)对我等弱渣来说 ...

  5. Spring学习笔记之整合hibernate

    1.web.xml里边要配置好对应的springxml的路径 <context-param> <param-name>contextConfigLocation</par ...

  6. powershell加win的dns服务器,解决网站负载均衡问题

    用我发明的powershell填坑法,加windows的dns服务器.从调整dns服务器解析ip时间段的角度,解决网站负载均衡问题. ------------------------win2012r2 ...

  7. 推荐一款作图神器:ProcessOn

    本人近日发现一款作图神器:ProcessOn 它是一款在线的作图工具,完全国产,前台是用HTML5  Canvas加javascript做绘图,后台用java实现数据处理和图片生成, 整站UI基本类似 ...

  8. 【转】 linux 安装nginx及编译参数详解

    版权声明:本文为博主原创文章,未经博主允许不得转载. 从官网下载一个nginx 的tar.gz 版. 安装方式使用make 安装 第一步:解压 tar -zxvf  nginx-1.7.4.tar.g ...

  9. C/C++中函数参数传递详解(一)

    *在定义时使用代表指针类型,其他情况代表取内容.&在定义时使用代表引用(别名),在其他情况代表取地址 在编写个人函数的时候,你将会受到C++中的一条基本的原则的限制:在默认的情况下,变量只能以 ...

  10. Repeater控件的分页效果

    <webdiyer:AspNetPager ID="AspNetPager1" runat="server" HorizontalAlign=" ...