理解ROS rqt_console和 roslaunch
1.使用rqt_console和roslaunch
这篇教程将介绍使用rqt_console和rqt_logger_level来调试以及使用roslaunch一次启动许多nodes.如果你使用ROS fuerte或者更早的版本,rqt不是十分完善,请查看这篇文章使用基于old rxthis page.
1.1前提rqt和tuetlesim package
需要用到rqt和tuetlesim package.如果没有安装,请执行:
$ sudo apt-get install ros-<distro>-rqt
ros-<distro>-rqt-common-plugins ros-<distro>-turtlesim
注意:前面的教程中已经编译过rqt和tuetlesim这两个package了,如果不确定,再安装一次也无妨.
1.2使用rqt_console和rqt_logger_level
rqt_console附着在ROS logging框架上去显示nodes的输出结果.
rqt_logger_level允许我们去改变nodes运行时候的信息显示级别(调试,警告,信息和错误)。
现在让我们看看turtlesim在rqt_console上的输出并且当我们使用turtlesim的时候变化logger级别.
在运行turtlesim之前,在两个新的终端中分别运rqt_consolerqt和rqt_logger_level:
$ rosrun rqt_console rqt_console
$ rosrun rqt_logger_level rqt_logger_level
你会看到两个弹出的窗口:
现在再在新的窗口中运行:
$ rosrun turtlesim turtlesim_node
因为默认的记录器级别是INFO所以你会看到turtlesim启动时发布的信息,大概是这个样子:
现在我们把记录器级别改为Warn,在rqt_logger_level窗口中刷新nodes并且选择Warn作为显示选项:
现在把小乌龟遥控到墙边看看在rqt_console上有什么显示:
对于ROS Hydro和之后的版本:
rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, 0.0]'
1.2.1logger级别的概述
记录级别是按下列的的优先级别区分的:
Fatal
Error
Warn
Info
Debug
Fata的级别最高,Debug的级别最低.通过设置logger级别,你会得到 这个优先级别或更高级别的message.比如,通过设置级别为Warn,我们会得到所有的Warn,Error,和Fatal的记录消息.
先ctrl+c turtlesim,并且用roslaunch去生成更多的turtlesim nodes和一个mimicking node,让一个turtlesim去模仿另一个。
1.2.3使用roslaunch
roslaunch按照launch文件中的定义去启动nodes.
用法:
$ roslaunch [package] [filename.launch]
首先进入我们之前创建和编译的beginner_tutorials package:
$ roscd beginner_tutorials
如果roscd说类似于:No such package/stack 'beginner_tutorials' 你需要启动环境变量设置的文件,像你之前在create_a_workspace教程末尾中做的一样。
$ cd ~/catkin_ws
$ source devel/setup.bash
$ roscd beginner_tutorials
创建一个launch目录:
$ mkdir launch
$ cd launch
1.2.3launch文件
现在创建一个叫做turtlemimic.launch的launch文件并且把下面的东西粘贴在上面:
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>
1.2.4Launch文件的解释
现在我们把xml分解:
1 <launch>
我们用lauch标签开始launch文件,所以launch文件是这样鉴定的.
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>
我们用一个叫做sim的turtlesim node定义两个命名空间turtlesim1 和turtlesim2 ,这样我们就可以启动两个仿真器而不会有名字冲突了.
11 <node pkg="turtlesim" name="mimic" type="mimic">
12 <remap from="input" to="turtlesim1/turtle1"/>
13 <remap from="output" to="turtlesim2/turtle1"/>
14 </node>
我们通过把topic的输入和输出去重命名为turtlesim1和turtlesim2来定义mimic node(即messages在topic中从turtlesim1输入,从turtlesim2输出),这样重命名会导致turtlesim2模仿turtlesim1。
16 </launch>
末尾的xml标签也是代表launch文件.
1.2.5roslaunching
现在我们用roslaunch 启动launch文件:
$ roslaunch beginner_tutorials turtlemimic.launch
两个turtlesim会启动,在新的终端启动中并且发送rostopic命令:
对于ROS Hyhydro:
$ rostopic pub /turtlesim1/turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, -1.8]'
你将会看到即使命令只是发布给turtlesim1但是两个小乌龟都开始运动.
可以用rqt_graph去更好的理解launch文件做了什么.运行rqt的主窗口选择rqt_graph:
$ rqt
或者直接:
$ rqt_graph
理解ROS rqt_console和 roslaunch的更多相关文章
- ROS知识(2)----理解ROS系统结构
学习新事物,方法高于技术本身,如果没有把握"BIG PICTURE"的话很难理解进去.通过以下几点进行理解ROS: ROS实际上不是操作系统,他只是一个通信的框架,一个代码管理的架 ...
- 理解ros话题--6
理解ROS话题(原创博文,转载请标明出处--周学伟http://www.cnblogs.com/zxouxuewei/) Description: 本教程介绍ROS话题(topics)以及如何使用ro ...
- 由浅到深理解ROS(1)
ROS机器人操作系统 ( Robot Operating System 或简称 ROS),可以帮助提高机器人软件的开发效率.ROS能够提供类似传统操作系统的诸多功能,如硬件抽象.底层设备控制.常用功能 ...
- ROS学习(九)—— rqt_console 和 roslaunch
一.rqt_console 和rqt_logger_level 1.作用: rqt_console依据ROS编译日志,输出节点信息 rqt_logger_level可以改变节点的警告出差的警告等级 2 ...
- Using rqt_console and roslaunch
Description: This tutorial introduces ROS using rqt_console and rqt_logger_level for debugging and r ...
- 由浅到深理解ROS(5)- launch启动文件的理解与编写
ROS提供了一个同时启动节点管理器(master)和多个节点的途径,即使用启动文件(launch file).事实上,在ROS功能包中,启动文件的使用是非常普遍的.任何包含两个或两个以上节点的系统都可 ...
- 理解ROS的参数
记住每次操作之前都要在一个单独的终端中运行ros的核心. roscore rosparam命令允许你在ROS的参数服务器上操作和存储数据,参数服务器可以存储整数,浮点数,布尔类型,字典,列表.ROS使 ...
- 理解ROS话题
首先需要打开一个终端在里面运行roscore: roscore 再打开一个终端,在里面运行一个turtlesim_node节点: rosrun turtlesim turtlesim_node 打开另 ...
- ROS学习手记 - 5 理解ROS中的基本概念_Services and Parameters
上一节完成了对nodes, Topic的理解,再深入一步: Services and Parameters 我不理解为何 ROS wiki 要把service与parameter放在一起介绍, 很想分 ...
随机推荐
- Monkey学习(3)如何在Android模拟器中安装apk
1.运行SDK Manager,选择模拟器,并运行模拟器,我这里用的是已经配置好的模拟器“RedMI” 2.已启动好的模拟器“RedMI” 3.记住需要安装apk文件的位置,我这里放在了F盘的根目录下 ...
- openfire升级指南
原文:http://www.liuhaihua.cn/archives/355.html 升级Openfire是和从头开始安装Openfire几乎一样简单.作为升级过程的一部分,它强烈建议您先备份当前 ...
- Linux 下没有 my.cnf 文件的解决方式,完全是我自己整的,好多教程都是瞎扯的 (zhuan)
http://blog.csdn.net/jspping/article/details/40400691?utm_source=tuicool&utm_medium=referral *** ...
- java中的堆内存和栈内存
Java把内存分成两种: 一种叫做栈内存 一种叫做堆内存 栈内存 : 在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配.当在一段代码块中定义一个变量时,java就在栈中为这个变 ...
- 动画Animation
动画分类:Animation 单一动画 AnimationSet 复合动画 AnimationSet是Animation的实现子类,Animation是一个抽象类,他的实现子类主要有如下几种: 主要有 ...
- 在滚动列表中实现视频的播放(ListView & RecyclerView)
英文原文:Implementing video playback in a scrolled list (ListView & RecyclerView) 本文将讲解如何在列表中实现视频播放. ...
- c time_t 和 oc NSDate 的转换
c time_t 和 oc NSDate 的转换 1:time_t 转 oc NSDate time_t some_time_t=NULL; NSDate *someDate = [NSDate da ...
- vc++编译libtiff4.0.4
目录 第1章简介 1 第2章命令行编译 2 2.1 编译 2 2.1.1 使用VC++2010编译 2 2.1.2 使用VC++6编译 4 2.2 生成的文件 5 ...
- canvas调节视频颜色
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- python 练习 7
#!/usr/bin/python # -*- coding: utf-8 -*- def gcd(x,y): #最大公因子 if x>y:x%=y while x: x,y=y%x,x ret ...