[ROS]使用rqt_console和roslaunch

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

前言:本教程介绍 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,接下来的教程不需要使用到这些。

相关帖子

欢迎来到这里!

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

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

推荐标签 标签

  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    952 引用 • 944 回帖
  • WiFiDog

    WiFiDog 是一套开源的无线热点认证管理工具,主要功能包括:位置相关的内容递送;用户认证和授权;集中式网络监控。

    1 引用 • 7 回帖 • 611 关注
  • Mac

    Mac 是苹果公司自 1984 年起以“Macintosh”开始开发的个人消费型计算机,如:iMac、Mac mini、Macbook Air、Macbook Pro、Macbook、Mac Pro 等计算机。

    168 引用 • 597 回帖
  • 996
    13 引用 • 200 回帖 • 3 关注
  • IDEA

    IDEA 全称 IntelliJ IDEA,是一款 Java 语言开发的集成环境,在业界被公认为最好的 Java 开发工具之一。IDEA 是 JetBrains 公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。

    181 引用 • 400 回帖 • 1 关注
  • 新人

    让我们欢迎这对新人。哦,不好意思说错了,让我们欢迎这位新人!
    新手上路,请谨慎驾驶!

    52 引用 • 228 回帖
  • Vue.js

    Vue.js(读音 /vju ː/,类似于 view)是一个构建数据驱动的 Web 界面库。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。

    267 引用 • 666 回帖 • 2 关注
  • CSDN

    CSDN (Chinese Software Developer Network) 创立于 1999 年,是中国的 IT 社区和服务平台,为中国的软件开发者和 IT 从业者提供知识传播、职业发展、软件开发等全生命周期服务,满足他们在职业发展中学习及共享知识和信息、建立职业发展社交圈、通过软件开发实现技术商业化等刚性需求。

    14 引用 • 155 回帖
  • 开源

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

    411 引用 • 3588 回帖
  • GraphQL

    GraphQL 是一个用于 API 的查询语言,是一个使用基于类型系统来执行查询的服务端运行时(类型系统由你的数据定义)。GraphQL 并没有和任何特定数据库或者存储引擎绑定,而是依靠你现有的代码和数据支撑。

    4 引用 • 3 回帖 • 6 关注
  • 友情链接

    确认过眼神后的灵魂连接,站在链在!

    24 引用 • 373 回帖 • 1 关注
  • 微软

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

    8 引用 • 44 回帖
  • 微信

    腾讯公司 2011 年 1 月 21 日推出的一款手机通讯软件。用户可以通过摇一摇、搜索号码、扫描二维码等添加好友和关注公众平台,同时可以将自己看到的精彩内容分享到微信朋友圈。

    133 引用 • 796 回帖 • 1 关注
  • 星云链

    星云链是一个开源公链,业内简单的将其称为区块链上的谷歌。其实它不仅仅是区块链搜索引擎,一个公链的所有功能,它基本都有,比如你可以用它来开发部署你的去中心化的 APP,你可以在上面编写智能合约,发送交易等等。3 分钟快速接入星云链 (NAS) 测试网

    3 引用 • 16 回帖 • 2 关注
  • 学习

    “梦想从学习开始,事业从实践起步” —— 习近平

    173 引用 • 516 回帖
  • 前端

    前端技术一般分为前端设计和前端开发,前端设计可以理解为网站的视觉设计,前端开发则是网站的前台代码实现,包括 HTML、CSS 以及 JavaScript 等。

    245 引用 • 1338 回帖
  • 大数据

    大数据(big data)是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。

    93 引用 • 113 回帖 • 2 关注
  • 小说

    小说是以刻画人物形象为中心,通过完整的故事情节和环境描写来反映社会生活的文学体裁。

    31 引用 • 108 回帖
  • Sandbox

    如果帖子标签含有 Sandbox ,则该帖子会被视为“测试帖”,主要用于测试社区功能,排查 bug 等,该标签下内容不定期进行清理。

    431 引用 • 1250 回帖 • 596 关注
  • SMTP

    SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。

    4 引用 • 18 回帖 • 635 关注
  • 机器学习

    机器学习(Machine Learning)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。

    83 引用 • 37 回帖 • 1 关注
  • 30Seconds

    📙 前端知识精选集,包含 HTML、CSS、JavaScript、React、Node、安全等方面,每天仅需 30 秒。

    • 精选常见面试题,帮助您准备下一次面试
    • 精选常见交互,帮助您拥有简洁酷炫的站点
    • 精选有用的 React 片段,帮助你获取最佳实践
    • 精选常见代码集,帮助您提高打码效率
    • 整理前端界的最新资讯,邀您一同探索新世界
    488 引用 • 384 回帖 • 10 关注
  • Access
    1 引用 • 3 回帖 • 2 关注
  • Chrome

    Chrome 又称 Google 浏览器,是一个由谷歌公司开发的网页浏览器。该浏览器是基于其他开源软件所编写,包括 WebKit,目标是提升稳定性、速度和安全性,并创造出简单且有效率的使用者界面。

    63 引用 • 289 回帖 • 1 关注
  • Elasticsearch

    Elasticsearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful 接口。Elasticsearch 是用 Java 开发的,并作为 Apache 许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

    117 引用 • 99 回帖 • 210 关注
  • DNSPod

    DNSPod 建立于 2006 年 3 月份,是一款免费智能 DNS 产品。 DNSPod 可以为同时有电信、网通、教育网服务器的网站提供智能的解析,让电信用户访问电信的服务器,网通的用户访问网通的服务器,教育网的用户访问教育网的服务器,达到互联互通的效果。

    6 引用 • 26 回帖 • 532 关注
  • Pipe

    Pipe 是一款小而美的开源博客平台。Pipe 有着非常活跃的社区,可将文章作为帖子推送到社区,来自社区的回帖将作为博客评论进行联动(具体细节请浏览 B3log 构思 - 分布式社区网络)。

    这是一种全新的网络社区体验,让热爱记录和分享的你不再感到孤单!

    133 引用 • 1124 回帖 • 115 关注