本教程来自于:http://wiki.ros.org/ROS/Tutorials/UsingRqtconsoleRoslaunch

rqt_console 和 rqt_logger_level 是ros的调试工具(类似于控制台和日志)。roslaunch可以用于一次启动多个节点(不同于rosrun只能启动一个节点)。

  1. 使用rqt_console和rqt_logger_level
    假设安装了ros和rqt工具,以及小乌龟的示例包。rqt_console控制台将ros的日志系统关联到节点的显示输出,rqt_logger_level允许我们在节点运行期间改变他们的信息显示级别。
    信息显示级别包括:DEBUG(调试信息), WARN(警告信息), INFO(提示信息), 和ERROR(错误信息)。
    在运行小乌龟的示例之前,在两个新的终端中分别运行如下语句,打开rqt_console和rqt_logger_level的界面:

    $ rosrun rqt_console rqt_console
    $ rosrun rqt_logger_level rqt_logger_level

    rqt_console界面

    rqt_logger_level界面

    现在我们在一个新终端中运行小乌龟的示例:

    $ rosrun turtlesim turtlesim_node
    

    则控制台中会出来如下信息:

    然后我们可以在rqt_logger_level中改变信息级别。

    将显示级别改为Warning,然后运行如下命令,让乌龟撞墙:

    rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0,y: 0.0,z: 0.0}}'
    

    然后我们再看rqt_console中的信息:

    可以看出显示出了警告信息。

    所有的日志级别如下:

    Fatal
    Error
    Warn
    Info
    Debug

    其中,Debug是最低级别,Fatal是最高级别,选择一个级别后,会显示选择级别以及比他低的级别。例如,选择Warn后,会显示Debug、Info和Warn级别的信息。

  2. roslaunch
    roslaunch 通过一个启动文件来启动节点
    用法如下:

    $ roslaunch [package] [filename.launch]
    

    使用如下命令进入一个ros包,该例中进入beginner_tutorials

    $ roscd beginner_tutorials
    

    如果提示没有该包,参考文档创建一个ros包。运行如下命令,建立ros的环境。

    $ cd ~/catkin_ws
    $ source devel/setup.bash
    $ roscd beginner_tutorials

    然后使用如下命令创建一个启动文件目录:

    $ mkdir launch
    $ cd launch

    事实上,不用单独建立个目录来存储启动文件,启动文件可以存放在包目录下的任何位置,ros会自动寻找他,不过为便于文件组织,还是单独创建一个目录比较好。

    然后创建一个启动文件,文件名为: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>

    从启动文件的标签可以看出,该文件采用的xml语法,有两个group和一个node,其中,两个group都有一个ns的标签指定命名空间(namespace)为turtlesim1和turtlesim2,两个group中各有一个node,node的名字(name)为sim。这样可以让我们同时启动两个仿真器而没有命名冲突。然后,我们定义了一个模拟(mimic)节点,该节点有输入输出主题,输入和输出分别被重映射到turtlesim1 和 turtlesim2,该重命名会让turtlesim2模拟turtlesim1(将turtlesim1的输出直接给turtlesim2)。
    然后我们采用roslaunch来启动该文件。

    $ roslaunch beginner_tutorials turtlemimic.launch
    

    输出如下:

    started roslaunch server http://UAVlab1:36470/
    
    SUMMARY
    ======== PARAMETERS
    * /rosdistro: kinetic
    * /rosversion: 1.12.14 NODES
    /
    mimic (turtlesim/mimic)
    /turtlesim1/
    sim (turtlesim/turtlesim_node)
    /turtlesim2/
    sim (turtlesim/turtlesim_node) ROS_MASTER_URI=http://localhost:11311 process[turtlesim1/sim-1]: started with pid [4107]
    process[turtlesim2/sim-2]: started with pid [4108]
    process[mimic-3]: started with pid [4109]

    可以看出来,运行了三个节点,分别为/mimic,/turtlesim1/sim和/turtlesim2/sim。
    并出现了两个小乌龟:

    我们再启动一个新终端,在其中发布消息让turtlesim1中的乌龟开始移动:

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

    可以看出来两个窗口里的小乌龟都开始移动:

    可以看出来其中的消息传递:

    /mimic节点起到了消息转发的作用。

ROS学习笔记8-rqt_console和roslaunch的更多相关文章

  1. ROS学习笔记(二) :使用roslaunch

    目录 roslaunch roslaunch的使用 以turtlesim为例 roslaunch roslaunch是ros自带的一个库,使用roslaunch可以同时运行多个节点,通过编写launc ...

  2. ROS学习笔记七:在ROS中使用USB摄像头

    下面是一些USB摄像头的驱动(大多数摄像头都支持uvc标准): 1 使用软件库里的uvc-camera功能包 1.1 检查摄像头 lsusb ----------------------------- ...

  3. ROS学习笔记八:基于Qt搭建ROS开发环境

    1 前言 本文介绍一种Qt下进行ROS开发的完美方案,使用的是ros-industrial的Levi-Armstrong在2015年12月开发的一个Qt插件ros_qtc_plugin,这个插件使得Q ...

  4. ROS学习笔记1-引言

    该学习笔记参考ROS官方wiki的内容,见:http://wiki.ros.org/ROS/Introduction 什么是ROSROS的全称是Robot Operating System,即机器人操 ...

  5. ROS学习笔记

    创建ros工作环境: mkdir -p ~/catkin_ws/src //建立项目目录,同时生成src文件夹 cd ~/catkin_ws/ //进入项目目录 catkin_make //编译项目, ...

  6. ROS学习笔记十二:使用gazebo在ROS中仿真

    想要在ROS系统中对我们的机器人进行仿真,需要使用gazebo. gazebo是一种适用于复杂室内多机器人和室外环境的仿真环境.它能够在三维环境中对多个机器人.传感器及物体进行仿真,产生实际传感器反馈 ...

  7. ROS学习笔记(二)

    ===================================================== QT工具箱sudo apt-get install ros-kinetic-rqtsudo ...

  8. ros学习笔记 - 深度传感器转换成激光数据(hector_slam)

    前提条件:1,确保读者已经安装了kinect或者其他深度摄像头的驱动,如果未安装,可以直接在网盘下载:http://pan.baidu.com/s/1hqHB10w 提取密码:wrmn 利用深度相机仿 ...

  9. ROS学习笔记(一) : 入门之基本概念

    目录 基本概念 1. Package 2. Repositories 3. Computation Graph 4. Node 5. Master 6. Message 7. Topic 8. Ser ...

随机推荐

  1. DataGrid DataGridTextColumn 樣式

    <DataGridTextColumn.ElementStyle> <Style TargetType="TextBlock" > <Setter P ...

  2. Codeforces 1311F Moving Points

    题目链接 根据题意,d是两个点的最短距离,分析知,假设\(x_i\)<\(x_j\), 若\(v_i\)>\(v_j\),那么d(i,j)一定为0,因为i一定能追上j,否则,d(i,j)就 ...

  3. Windows配置本地Hadoop运行环境

    很多人喜欢用Windows本地开发Hadoop程序,这里是一个在Windows下配置Hadoop的教程. 首先去官网下载hadoop,这里需要下载一个工具winutils,这个工具是编译hadoop用 ...

  4. python爬虫(八) requests库之 get请求

    requests库比urllib库更加方便,包含了很多功能. 1.在使用之前需要先安装pip,在pycharm中打开: 写入pip install requests命令,即可下载 在github中有关 ...

  5. leetcode 0207

    目录 ✅ 561. 数组拆分 I ✅ 1025. 除数博弈 聪明的数学归纳法: 动态规划又来了(没理解,todo 0207): ✅ 557. 反转字符串中的单词 III py 中的 字符 split ...

  6. Jmeter 如何发起一个post请求

    举例平台:https://www.juhe.cn/docs/api/id/65 前提条件: 1)要在聚合网站注册实名认证才可以收到Key,用于Get请求的参数数值 2)Jmeter本地安装好 3.这是 ...

  7. Educational Codeforces Round 81 (Rated for Div. 2)

    A 0~9需要多少笔画,自取7和1,判奇偶 #include<bits/stdc++.h> using namespace std; #define ll long long #defin ...

  8. yp寒假训练一

    19年东北四省省赛 做了J G C 补了E H J签到题 G 题意: 给n个正方形的两个斜对角点坐标,问最小的移动可以重叠(移动上下左右一格) 思路: 一开始想的是中心pos移动,但是可能有小数,而且 ...

  9. 设计模式课程 设计模式精讲 6-2 抽象工厂coding

    1 代码讲解 1.1 抽象工厂优点 1.2 抽象工厂缺点 1.3 为何有产品族的业务场景宜用抽象工厂设计模式?而不是工厂设计模式? 2 代码演练 2.1 抽象工厂代码演练 1 代码讲解 1.1 抽象工 ...

  10. C/C++网络编程8——多进程服务器端之销毁僵尸进程

    上一节提到,当子进程执行结束,父进程还在执行,在父进程结束之前子进程会成为僵尸进程,那么怎么销毁僵尸进程呢?父进程主动接收子进程的返回值. 销毁僵尸进程的方法: 1:使用wait函数 2:使用wait ...