[ROS]使用rqt_console和roslaunch

本贴最后更新于 2800 天前,其中的信息可能已经时移俗易

前言:本教程介绍 ROS 调试中的 rqt_console 和 rqt_logger_level 以及一次启动多个节点的 roslaunch。如果你在使用 ROS fuerte 或者更早的版本,rqt 不是完全可用的,请查看[http://wiki.ros.org/ROS/Tutorials/UsingRxconsoleRoslaunch],使用来的 rx 基础工具。

###1.rqt 和 turtlesim 包的前置需求

本教程使用了 rqt 和 turtlesim 包。使用本教程需要安装 2 个包。如果没有安装过。执行:

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

用你使用的ROS版本名称替换<distro> (比如:indigo, jade, kinetic).

注意:你可能已经在之前的某一个教程构建过 rqt 和 turtlesim。如果你不确定的话,重新安装过一遍也无伤大雅。

###2.使用 rqt_console 和 rqt_logger_level

rqt_console 连接了 ROS 的日志框架,它显示了节点的输出信息。rqt_logger_level 允许我们改变运行的节点繁琐的等级(DEBUG、WARN、INFO、ERROR)。

现在我们来看看 turtlesim 在 rqt_console 上的输出以及改变使用的 turtlesim 的时候 rqt_logger_level 里的日志等级。在开启 turtlesim 之前,首先在两个新的命令行窗口中开启 rqt_console 和 rqt_logger_level:

$ rosrun rqt_console rqt_console

$ rosrun rqt_logger_level rqt_logger_level

你将看到两个悬浮窗:

现在我们可以开启一个新的命令行窗口:

$ rosrun turtlesim turtlesim_node

因为默认的 logger 等级是 INFO,所以你将看到 turtlesim 启动之后发布的任意消息,类似下面图片中看到的:

现在让我们改变 logger 的等级到 WARN,然后在 rqt_logger_level 窗口刷新节点,如下:

现在让我们让小乌龟撞墙,然后看看 rqt_console 将会显示什么消息:
Now let's run our turtle into the wall and see what is displayed in our rqt_console:

ROS Hydro 之后的版本运行:

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

ROS Groovy 之前的版本运行:

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


####2.1 快速的学习 logger 的等级
日志等级的优先级如下:

Fatal>Error>Warn>Info>Debug

Fatal 是最高的优先级,Debug 是最低的优先级。通过设置 logger 的等级,可以得到设置的优先级及以上的所有消息。例如,设置 logger 的等级是 Warn,那么可以收到 Warn,Error,Fatal 的日志信息。

对着 turtlesim 窗口点击 Ctrl+C,让我们通过 roslaunch 来建立多个 turtlesim 节点和一个克隆的节点用来一个 turtlesim 克隆另外一个:

####2.2 使用 roslaunch

roslaunch 开启在 launch 文件中定义的节点。
用法:

$ roslaunch [package] [filename.launch]

首先进入我们之前创建的 beginner_tutorials 包:

$ roscd beginner_tutorials

如果使用 roscd 之后看到类似的:No such package/stack 'beginner_tutorials',就需要像创建工作空间那篇教程一样设置环境变量:

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

创建 launch 文件夹:

$ mkdir launch
$ cd launch

注意:保存 launch 文件的文件夹不用非要命名为 launch。实际上你甚至不需要把 launch 文件保存在目录中。roslaunch 自动的查找给定的包里面可用的 launch 文件。事实上,结果证明设施一个好的实践。

####2.3The Launch File

现在让我们创建一个 launch 文件,名字叫做 turtlesmimic,然后复制下面的内容:

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

####2.4launch 文件的说明

现在,让我们来分解 launch 的 xml 文件。

<launch>

launch 标签表示 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>

这里定义了 2 个组各有一个 namespace 标签,值是 turtlesim1 和 turtlesim2,以及一个 turtlesim 节点,值是 sim。这允许我们开启 2 个仿真器并能避免名称冲突。

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

这里开启 mimic 节点,并具有重命名为 turtlesim1 和 turtlesim2 的 input 和 output 主题。重命名将导致 turtlesim2 克隆 turtlesim1.

<launch>

launch 文件的结束标签。

####2.5roslaunching

现在我们通过 roslaunch 运行 launch 文件:

$ roslaunch beginner_tutorials turtlemimic.launch

两个 turtlesim 窗口将被启动,新建一个新的命令行窗口发送 rostopic 命令:

对于 ROS Hydro 及其之后的版本,

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

对于 ROS Groovy 及其之前的版本,

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

我们可以看到 2 个 turtlesim 窗口里面的小乌龟在移动,尽管我们只发不了消息到 turtlesim1.

我们也可以使用 rqt_graph 来更好的理解上面的 launch 文件做了什么。运行 rqt,然后在主界面的 Plugins 中选择 Node Graph:

$ rqt

或者直接运行:

$ rqt_graph

现在我们已经成功的使用了 rat_console 和 roslaunch,让我们来学习 ROS 编辑选项。使用 ctrl+c 停止所有的 turtlesim,接下来的教程不需要使用到这些。

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • 服务

    提供一个服务绝不仅仅是简单的把硬件和软件累加在一起,它包括了服务的可靠性、服务的标准化、以及对服务的监控、维护、技术支持等。

    41 引用 • 24 回帖 • 5 关注
  • 开源

    Open Source, Open Mind, Open Sight, Open Future!

    396 引用 • 3416 回帖
  • Spark

    Spark 是 UC Berkeley AMP lab 所开源的类 Hadoop MapReduce 的通用并行框架。Spark 拥有 Hadoop MapReduce 所具有的优点;但不同于 MapReduce 的是 Job 中间输出结果可以保存在内存中,从而不再需要读写 HDFS,因此 Spark 能更好地适用于数据挖掘与机器学习等需要迭代的 MapReduce 的算法。

    74 引用 • 46 回帖 • 548 关注
  • SEO

    发布对别人有帮助的原创内容是最好的 SEO 方式。

    35 引用 • 200 回帖 • 24 关注
  • 倾城之链
    23 引用 • 66 回帖 • 100 关注
  • 钉钉

    钉钉,专为中国企业打造的免费沟通协同多端平台, 阿里巴巴出品。

    15 引用 • 67 回帖 • 370 关注
  • Sphinx

    Sphinx 是一个基于 SQL 的全文检索引擎,可以结合 MySQL、PostgreSQL 做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。

    1 引用 • 180 关注
  • TextBundle

    TextBundle 文件格式旨在应用程序之间交换 Markdown 或 Fountain 之类的纯文本文件时,提供更无缝的用户体验。

    1 引用 • 2 回帖 • 47 关注
  • ZooKeeper

    ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 Google 的 Chubby 一个开源的实现,是 Hadoop 和 HBase 的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

    59 引用 • 29 回帖 • 18 关注
  • 数据库

    据说 99% 的性能瓶颈都在数据库。

    330 引用 • 614 回帖
  • 房星科技

    房星网,我们不和没有钱的程序员谈理想,我们要让程序员又有理想又有钱。我们有雄厚的房地产行业线下资源,遍布昆明全城的 100 家门店、四千地产经纪人是我们坚实的后盾。

    6 引用 • 141 回帖 • 559 关注
  • SpaceVim

    SpaceVim 是一个社区驱动的模块化 vim/neovim 配置集合,以模块的方式组织管理插件以
    及相关配置,为不同的语言开发量身定制了相关的开发模块,该模块提供代码自动补全,
    语法检查、格式化、调试、REPL 等特性。用户仅需载入相关语言的模块即可得到一个开箱
    即用的 Vim-IDE。

    3 引用 • 31 回帖 • 71 关注
  • RIP

    愿逝者安息!

    8 引用 • 92 回帖 • 291 关注
  • 资讯

    资讯是用户因为及时地获得它并利用它而能够在相对短的时间内给自己带来价值的信息,资讯有时效性和地域性。

    53 引用 • 85 回帖
  • Solidity

    Solidity 是一种智能合约高级语言,运行在 [以太坊] 虚拟机(EVM)之上。它的语法接近于 JavaScript,是一种面向对象的语言。

    3 引用 • 18 回帖 • 350 关注
  • 周末

    星期六到星期天晚,实行五天工作制后,指每周的最后两天。再过几年可能就是三天了。

    14 引用 • 297 回帖 • 1 关注
  • 反馈

    Communication channel for makers and users.

    123 引用 • 906 回帖 • 192 关注
  • 爬虫

    网络爬虫(Spider、Crawler),是一种按照一定的规则,自动地抓取万维网信息的程序。

    106 引用 • 275 回帖
  • 尊园地产

    昆明尊园房地产经纪有限公司,即:Kunming Zunyuan Property Agency Company Limited(简称“尊园地产”)于 2007 年 6 月开始筹备,2007 年 8 月 18 日正式成立,注册资本 200 万元,公司性质为股份经纪有限公司,主营业务为:代租、代售、代办产权过户、办理银行按揭、担保、抵押、评估等。

    1 引用 • 22 回帖 • 685 关注
  • Ngui

    Ngui 是一个 GUI 的排版显示引擎和跨平台的 GUI 应用程序开发框架,基于
    Node.js / OpenGL。目标是在此基础上开发 GUI 应用程序可拥有开发 WEB 应用般简单与速度同时兼顾 Native 应用程序的性能与体验。

    7 引用 • 9 回帖 • 345 关注
  • gRpc
    10 引用 • 8 回帖 • 54 关注
  • Kotlin

    Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,由 JetBrains 设计开发并开源。Kotlin 可以编译成 Java 字节码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运行。在 Google I/O 2017 中,Google 宣布 Kotlin 成为 Android 官方开发语言。

    19 引用 • 33 回帖 • 27 关注
  • 笔记

    好记性不如烂笔头。

    303 引用 • 777 回帖
  • Typecho

    Typecho 是一款博客程序,它在 GPLv2 许可证下发行,基于 PHP 构建,可以运行在各种平台上,支持多种数据库(MySQL、PostgreSQL、SQLite)。

    12 引用 • 60 回帖 • 467 关注
  • 微软

    微软是一家美国跨国科技公司,也是世界 PC 软件开发的先导,由比尔·盖茨与保罗·艾伦创办于 1975 年,公司总部设立在华盛顿州的雷德蒙德(Redmond,邻近西雅图)。以研发、制造、授权和提供广泛的电脑软件服务业务为主。

    8 引用 • 44 回帖
  • 禅道

    禅道是一款国产的开源项目管理软件,她的核心管理思想基于敏捷方法 scrum,内置了产品管理和项目管理,同时又根据国内研发现状补充了测试管理、计划管理、发布管理、文档管理、事务管理等功能,在一个软件中就可以将软件研发中的需求、任务、bug、用例、计划、发布等要素有序的跟踪管理起来,完整地覆盖了项目管理的核心流程。

    5 引用 • 15 回帖 • 222 关注
  • 外包

    有空闲时间是接外包好呢还是学习好呢?

    26 引用 • 232 回帖 • 6 关注