使用 rqt_console 和 roslaunch

Description:  本教程介绍如何使用 rqt_console rqt_logger_level 进行调试,以及如何使用 roslaunch 同时运行多个节点。早期版本中的 rqt 工具并不完善,因此,如果你使用的是“ROS fuerte”或更早期的版本,请同时参考 这个页面 学习使用老版本的“rx”工具。

Tutorial Level:  BEGINNER

Next Tutorial:   如何使用rosed  

目录

  1. 预先安装rqt和turtlesim程序包
  2. 使用rqt_console和rqt_logger_level
    1. 日志等级说明
    2. 使用roslaunch
    3. Launch 文件
    4. Launch 文件解析
    5. roslaunching

预先安装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_consolerqt_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时,你会得到WarnErrorFatal这三个等级的所有日志消息。

现在让我们按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节点了,因为在下一篇教程中你不会再用到它们。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/440113.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习必备宝典-《统计学习方法》的python代码实现、电子书及课件

本文转自微信公众号&#xff1a;机器学习初学者 原创&#xff1a; 机器学习初学者 机器学习初学者 6天前 《统计学习方法》可以说是机器学习的入门宝典&#xff0c;许多机器学习培训班、互联网企业的面试、笔试题目&#xff0c;很多都参考这本书。本站根据网上资料用python复现…

【2019牛客暑期多校训练营(第一场) - H】XOR(线性基,期望的线性性)

题干&#xff1a; 链接&#xff1a;https://ac.nowcoder.com/acm/contest/881/H 来源&#xff1a;牛客网 Bobo has a set A of n integers a1,a2,…,ana1,a2,…,an. He wants to know the sum of sizes for all subsets of A whose xor sum is zero modulo (1097)(1097). F…

机器学习入门必备的13张“小抄”(附下载)

目录 1&#xff09;TensorFlow 2&#xff09;Keras 3&#xff09;Neural Networks 4&#xff09;Numpy 5&#xff09;Scipy 6&#xff09;Pandas 7&#xff09;Scikit-learn 8&#xff09;Matplotlib 9&#xff09;PythonForDataScience 最近在github上发现了很有用的…

ROS launch文档介绍

本文章转自&#xff1a;https://charlyhuangrostutorial.wordpress.com/2015/08/12/20/ 前面已经提过关于launch 档的角色&#xff0c;很类似bash 档&#xff0c;基本上就是把所有为了执行某个特定功能所需要的指令都写在一张纸上&#xff0c;交给ROS 一次执行开来。举例来说&a…

【2019牛客暑期多校训练营(第一场) - A】Equivalent Prefixes(单调栈,tricks)

题干&#xff1a; 链接&#xff1a;https://ac.nowcoder.com/acm/contest/881/A 来源&#xff1a;牛客网 Two arrays u and v each with m distinct elements are called equivalent if and only if RMQ(u,l,r)RMQ(v,l,r) for all 1≤l≤r≤m where RMQ(w,l,r) denotes th…

吴恩达机器学习作业(1):线性回归

目录 1&#xff09;导入相关库和数据 2&#xff09;代价函数 3&#xff09;批量梯度下降 4&#xff09;绘制线性模型 前阵子在网易云课堂学习了吴恩达老师的机器学习课程&#xff0c;今天结合网上资料&#xff0c;用Python实现了线性回归作业&#xff0c;共勉。建议大家使…

【HDU - 5886】Tower Defence(树的直径,思维,dp)

题干&#xff1a; There was a civil war between two factions in Skyrim, a province of the Empire on the continent of Tamriel. The Stormcloaks, led by Ulfric Stormcloak, are made up of Skyrims native Nord race. Their goal is an independent Skyrim free from …

(1).数据结构概述

目录 数据结构概述 预备知识&#xff1a; 模块&#xff1a; 这篇笔记是根据郝斌老师的上课讲义整理而得&#xff1a; 数据结构概述 定义&#xff1a;如何把现实中大量复杂的问题以特定的数据类型和特定的存储结构保存到主存储器中(内存)中&#xff0c; 以及在此基础上为实…

ROS导航之参数配置和自适应蒙特卡罗定位

我们的机器人使用两种导航算法在地图中移动&#xff1a;全局导航&#xff08;global&#xff09;和局部导航&#xff08;local)。这些导航算法通过代价地图来处理地图中的各种信息&#xff0c;导航stack使用两种costmaps http://www.cnblogs.com/zjiaxing/p/5543386.html存储环…

吴恩达机器学习作业(2):多元线性回归

目录 1&#xff09;数据处理 2&#xff09;代价函数 3&#xff09;Scikit-learn训练数据集 4&#xff09;正规方程 练习1还包括一个房屋价格数据集&#xff0c;其中有2个变量&#xff08;房子的大小&#xff0c;卧室的数量&#xff09;和目标&#xff08;房子的价格&#…

【洛谷 - P2756】飞行员配对方案问题(网络流最大流,输出方案)

题干&#xff1a; 题目背景 第二次世界大战时期.. 题目描述 英国皇家空军从沦陷国征募了大量外籍飞行员。由皇家空军派出的每一架飞机都需要配备在航行技能和语言上能互相配合的2 名飞行员&#xff0c;其中1 名是英国飞行员&#xff0c;另1名是外籍飞行员。在众多的飞行员中…

office 安装错误 1920 osppsvc服务无法启动 failed to start

今天忽然发现Office 报 1920 错误&#xff0c;按照网上的的各类教程&#xff0c;还是不行&#xff0c;没有办法启动。答搞了一下午了&#xff0c;终于Ok&#xff0c;超级简单&#xff1a; 首先&#xff0c;到文件夹 C:\Program Files\Common Files\microsoft shared\OfficeSo…

机器学习笔记(八):神经网络:学习

目录 1&#xff09;Cost function 2&#xff09;Backpropagation algorithm 3&#xff09;Backpropagation intuition 4) Gradient checking 5&#xff09;Random initialization 6&#xff09;Putting it together 注&#xff1a;吴恩达老师的机器学习课程对反向传播算…

【HDU - 6231】K-th Number(二分,思维)

题干&#xff1a; Alice are given an array A[1..N]A[1..N] with NN numbers. Now Alice want to build an array BB by a parameter KK as following rules: Initially, the array B is empty. Consider each interval in array A. If the length of this interval is les…

C 语言运算符优先级(记忆口诀)

优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [] 数组下标 数组名[常量表达式] 左到右 () 圆括号 &#xff08;表达式&#xff09;/函数名(形参表) . 成员选择&#xff08;对象&#xff09; 对象.成员名 -> 成员选择&#xff08;指针&#xff0…

吴恩达机器学习作业(3):逻辑回归

目录 1&#xff09;数据处理 2&#xff09;sigmoid函数 3&#xff09;代价函数 4&#xff09;梯度下降 5&#xff09;预测函数 我们首先做一个练习&#xff0c;问题是这样的&#xff1a;设想你是大学相关部分的管理者&#xff0c;想通过申请学生两次测试的评分&#xff0c…

机器学习笔记(九):应用机器学习的建议

目录 1&#xff09;Deciding what to try next 2&#xff09;Evaluating a hypothesis 3&#xff09;Model selection and training/validation/test sets 4&#xff09;Diagnosing bias vs. variance 5&#xff09;Regularization and bias/variance 6&#xff09;Learn…

【洛谷 - P3410】拍照(最大权闭合图,网络流最小割)

题干&#xff1a; 题目描述 小B有n个下属&#xff0c;现小B要带着一些下属让别人拍照。 有m个人&#xff0c;每个人都愿意付给小B一定钱让n个人中的一些人进行合影。如果这一些人没带齐那么就不能拍照&#xff0c;小B也不会得到钱。 注意&#xff1a;带下属不是白带的&…

ROS有三个层级的概念,分别是:文件系统级、计算图级和开源社区级

ROS有三个层级的概念&#xff0c;分别是&#xff1a;文件系统级、计算图级和开源社区级。 文件系统级&#xff1a;ROS的内部结构、文件结构和所需的核心文件都在这一层里&#xff0c;理解ROS文件系统是入门ROS的基础。一个ROS程序的结构&#xff0c;是一些按不同功能进行区分的…

【洛谷 - P1231 】教辅的组成(网络流最大流,拆点)

题干&#xff1a; 题目描述 蒟蒻HansBug在一本语文书里面发现了一本答案&#xff0c;然而他却明明记得这书应该还包含一份练习题。然而出现在他眼前的书多得数不胜数&#xff0c;其中有书&#xff0c;有答案&#xff0c;有练习册。已知一个完整的书册均应该包含且仅包含一本书…