文档章节

使用 rqt_console 和 roslaunch

慕水
 慕水
发布于 2017/09/08 13:23
字数 1339
阅读 9
收藏 0
点赞 0
评论 0

预先安装rqt和turtlesim程序包

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

 

$ 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_console和rqt_logger_level:

 

$ rosrun rqt_console rqt_console

 

$ rosrun rqt_logger_level rqt_logger_level

你会看到弹出两个窗口:

 

http://wiki.ros.org/ROS/Tutorials/UsingRqtconsoleRoslaunch?action=AttachFile&do=get&target=rqt_console(start).png

 

http://wiki.ros.org/ROS/Tutorials/UsingRqtconsoleRoslaunch?action=AttachFile&do=get&target=rqt_logger_level.png

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

 

$ rosrun turtlesim turtlesim_node

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

 

http://wiki.ros.org/ROS/Tutorials/UsingRqtconsoleRoslaunch?action=AttachFile&do=get&target=rqt_console(turtlesimstart).png

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

 

http://wiki.ros.org/ROS/Tutorials/UsingRqtconsoleRoslaunch?action=AttachFile&do=get&target=rqt_logger_level(error).png

现在我们让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]'

 

http://wiki.ros.org/ROS/Tutorials/UsingRqtconsoleRoslaunch?action=AttachFile&do=get&target=rqt_console(turtlesimerror).png

 

日志等级说明

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

 

Fatal
Error
Warn
Info
Debug

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

现在让我们按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文件并复制粘贴以下内容到该文件里面:

 

切换行号显示

   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文件。

 

切换行号显示

   1 <launch>

在这里我们以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>

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

 

切换行号显示

  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。

 

切换行号显示

  16 </launch>

这个是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发送了速度设定消息。

 

http://wiki.ros.org/ROS/Tutorials/UsingRqtconsoleRoslaunch?action=AttachFile&do=get&target=mimic.png

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

 

$ rqt

或者直接运行:

 

$ rqt_graph

 

http://wiki.ros.org/ROS/Tutorials/UsingRqtconsoleRoslaunch?action=AttachFile&do=get&target=mimiclaunch.jpg

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

© 著作权归作者所有

共有 人打赏支持
慕水
粉丝 1
博文 11
码字总数 0
作品 0
深圳
ubuntu14.04 +ros indigo +kinect(xbox360) 启动

1. 安装驱动 sudo apt-get install libfreenect-dev sudo apt-get install ros-indigo-freenect-launch 2.启动:roslaunch freenect_launch freenect.launch 3查看: rosrun imageview image......

v7xyy ⋅ 2017/10/22 ⋅ 0

ROS kinetic 机器视觉

ROS 中的图像数据 二维图像 显示图像类型 kinetic@vm:~$ roslaunch usbcam usbcam-test.launch kinetic@vm:~$ rostopic list /imageview/output /imageview/parameterdescriptions /imagevie......

youshijian99 ⋅ 05/11 ⋅ 0

ROS学习笔记(三)先锋机器人的使用 — 参考 ROS wiki 和 Mobile wiki

–参考方案: 找到了关于p3-dx的一些关于ROS的资料 https://github.com/ManolisCh/pioneerp3dx https://github.com/SeRViCE-Lab/p3-dx http://wiki.ros.org/demopioneer 先锋机器人ROS的教程......

David_Han008 ⋅ 2017/01/25 ⋅ 0

ROS roslaunch 学习

roslaunch 用处:将多个rosnode 结合起来,一起运行。这样就不需要一个个的运行。 roslaunch格式 (add_two.launch) launch文件为xml格式。 每个tag的格式至少包含下面三部分 1.pkg = “you...

yiranhaiziqi ⋅ 2016/10/27 ⋅ 0

turtlebot二代机器人实用操作

联网!连接!打开机器人开关!(使用二代换成roomba) 一、遥控 1、 turtlebot接收命令:roslaunch turtlebot_bringup minimal.lauch 2、操控 先给USB端口赋予权限:单次生效:sudo chmod 77...

weixin_39577852 ⋅ 04/21 ⋅ 0

EAI激光雷达X4使用hector_slam建图(二)

通过上一节,我在虚拟机下测试雷达驱动成功,现在,我们就拿树莓派3B为例,给激光雷达单独供电后,按着上一节来操作图上为PC端通过VNC与树莓派远程桌面连接,接在按着上一节在树莓派上操作完...

zhu751191958 ⋅ 01/04 ⋅ 0

[译]机器人操作系统简介:终极机器人应用框架(上)

[译]机器人操作系统简介:终极机器人应用框架 /** * 原文出处:https://www.toptal.com/robotics/introduction-to-robot-operating-system * @author dogstar.huang chanzonghuang@gmail.co......

暗夜在火星 ⋅ 2016/03/06 ⋅ 0

ROS launch文件的作用和编写

launch文件功能 使用launch file, 可以同时启动多个ros节点,包括ROS-master. 所以这样只要一个roslaunch,就可以启动 roscore和多个节点程序。 如何启动launch 文件 roslaunch package-name...

CSDNhuaong ⋅ 2017/10/17 ⋅ 0

在pcDuino内安装ROS Groovy

转自: http://yuanboshe.github.io/blog/2013/07/installrosgroovyin_pcduino.html 配置更新源 应该会出现一个错误(20130531版Lubuntu): 安装ROS 安装适合自己的配置,我这里装基本包: ...

pc朵拉 ⋅ 2013/08/10 ⋅ 0

cartographer_ros 下使用hokuyo测试 (二)

https://google-cartographer-ros.readthedocs.io/en/latest/ https://github.com/googlecartographer/cartographerros 环境 : ubuntu14.04 + ros indigo 1. 下载hokuyo 驱动节点 sudo apt......

v7xyy ⋅ 2017/10/26 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Spring Boot整合模板引擎thymeleaf

项目结构 引入依赖pom.xml <!-- 引入 thymeleaf 模板依赖 --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId......

yysue ⋅ 11分钟前 ⋅ 0

ConstraintLayout使用解析

AndroidStudio3.0创建Project默认的布局就是ConstraintLayout。 AndroidStudio3.0前的可以自己修改,使用ConstraintLayout。 为了要使用ConstraintLayout,我们需要在app/build.gradle文件中...

_OUTMAN_ ⋅ 22分钟前 ⋅ 0

OSChina 周三乱弹 —— 这样的女人私生活太混乱了

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @ 胖达panda :你经历过体验到人生的大起大落吗?我一朋友在10秒内体验了,哈哈。@小小编辑 请点一首《almost lover》送给他。 《almost love...

小小编辑 ⋅ 56分钟前 ⋅ 9

自己动手写一个单链表

文章有不当之处,欢迎指正,如果喜欢微信阅读,你也可以关注我的微信公众号:好好学java,获取优质学习资源。 一、概述 单向链表(单链表)是链表的一种,其特点是链表的链接方向是单向的,对...

公众号_好好学java ⋅ 今天 ⋅ 0

Centos7重置Mysql 8.0.1 root 密码

问题产生背景: 安装完 最新版的 mysql8.0.1后忘记了密码,向重置root密码;找了网上好多资料都不尽相同,根据自己的问题总结如下: 第一步:修改配置文件免密码登录mysql vim /etc/my.cnf 1...

豆花饭烧土豆 ⋅ 今天 ⋅ 0

熊掌号收录比例对于网站原创数据排名的影响[图]

从去年下半年开始,我在写博客了,因为我觉得业余写写博客也还是很不错的,但是从2017年下半年开始,百度已经推出了原创保护功能和熊掌号平台,为此,我也提交了不少以前的老数据,而这些历史...

原创小博客 ⋅ 今天 ⋅ 0

LVM讲解、磁盘故障小案例

LVM LVM就是动态卷管理,可以将多个硬盘和硬盘分区做成一个逻辑卷,并把这个逻辑卷作为一个整体来统一管理,动态对分区进行扩缩空间大小,安全快捷方便管理。 1.新建分区,更改类型为8e 即L...

蛋黄Yolks ⋅ 今天 ⋅ 0

Hadoop Yarn调度器的选择和使用

一、引言 Yarn在Hadoop的生态系统中担任了资源管理和任务调度的角色。在讨论其构造器之前先简单了解一下Yarn的架构。 上图是Yarn的基本架构,其中ResourceManager是整个架构的核心组件,它负...

p柯西 ⋅ 今天 ⋅ 0

uWSGI + Django @ Ubuntu

创建 Django App Project 创建后, 可以看到路径下有一个wsgi.py的问题 uWSGI运行 直接命令行运行 利用如下命令, 可直接访问 uwsgi --http :8080 --wsgi-file dj/wsgi.py 配置文件 & 运行 [u...

袁祾 ⋅ 今天 ⋅ 0

JVM堆的理解

在JVM中,我们经常提到的就是堆了,堆确实很重要,其实,除了堆之外,还有几个重要的模块,看下图: 大 多数情况下,我们并不需要关心JVM的底层,但是如果了解它的话,对于我们系统调优是非常...

不羁之后 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部