求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
要资料
 
追随技术信仰

随时听讲座
每天看新闻
 
 
ROS教程
1.初级教程
1.1 安装和配置ROS环境
1.2 ROS文件系统导览
1.3 创建ROS软件包
1.4 构建ROS软件包
1.5 理解ROS节点
1.6 理解ROS话题
1.7 理解ROS服务和参数
1.8 使用rqt_console和roslaunch
1.9 使用rosed在ROS中编辑文件
1.10 创建ROS消息和服务
1.11 编写简单的发布者和订阅者(C++)
1.12 编写简单的发布者和订阅者(Python)
1.13 检验简单的发布者和订阅者
1.14 编写简单的服务和客户端(C++)
1.15 编写简单的服务和客户端(Python)
1.16 检验简单的服务和客户端
1.17 录制和回放数据
1.18 从bag文件中读取消息
1.19 roswtf入门
1.20 探索ROS维基
1.21 接下来做什么?
2.中级教程
2.1手动创建ROS包
2.2管理系统依赖项
2.3Roslaunch在大型项目中的使用技巧
2.4ROS在多机器人上的使用
2.5自定义消息
2.6在python中使用C++类
2.7如何编写教程
ROS标准
ROS开发者指南
标准计量单位和坐标约定
 
 
使用rqt_console和roslaunch
来源: ros.org 在线教程    编辑:Alice(火龙果软件)
391 次浏览
2次  

Description: 本教程介绍在ROS中使用rqt_console和rqt_logger_level进行调试,以及使用roslaunch同时启动多个节点。

Tutorial Level: BEGINNER

注意:如果您使用的是ROS fuerte或早期版本,它们的rqt并不完善。请同时参考这个页面来使用旧的基于rx的工具。

1 预备工作

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

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

将<distro>替换成你安装的ROS发行版简称(比如kinetic或noetic等)。

注意:你可能已经在之前的某篇教程中构建过rqt和turtlesim。不过如果不确定的话,再安装一次也不会有什么问题。

2 使用rqt_console和rqt_logger_level

rqt_console连接到了ROS的日志框架,以显示节点的输出信息。rqt_logger_level允许我们在节点运行时改变输出信息的详细级别,包括Debug、Info、Warn和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

 

你会看到弹出两个窗口:

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

$ rosrun turtlesim turtlesim_node

因为默认的日志级别是Info,所以你会看到turtlesim启动后发布的所有信息,如下图所示:

现在让我们在rqt_logger_level窗口中刷新一下节点并选择Warn以修改日志级别,如下图所示:

然后让我们把乌龟撞到墙上,看看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 日志记录器级别

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

Fatal (致命)
Error (错误)
Warn  (警告)
Info  (信息)
Debug (调试)

 

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

现在按Ctrl+C退出turtlesim节点。接下来我们将使用roslaunch来启动多个turtlesim节点和一个模仿者节点,来让一个乌龟模仿另一个乌龟。

2.2 使用roslaunch

roslaunch可以用来启动定义在launch(启动)文件中的节点。

用法:

$ roslaunch [package] [filename.launch]

先切换到我们之前创建和构建的beginner_tutorials软件包目录下:

$ roscd beginner_tutorials

如果roscd提示类似于roscd: No such package/stack 'beginner_tutorials'的话,你需要按照创建catkin工作空间后面的步骤使环境变量生效:

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

然后创建一个launch目录:

$ mkdir launch
$ cd launch

注意:存放launch文件的目录不一定非要命名为launch,事实上都不用非得放在目录中,roslaunch命令会自动查找经过的包并检测可用的启动文件。然而,这种推荐的标准做法被认为是“最佳实践”。

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

 

2.4 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,两个分组中都有相同的名为sim的turtlesim节点。这样可以让我们同时启动两个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文件的XML标签闭合。

2.5 使用roslaunch

现在让我们通过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

你会看到两个turtlesims同时开始移动,虽然发布命令只发送给了turtlesim1。

我们还可以用rqt_graph来更好地理解launch文件所做的事情。运行rqt并在主窗口中选择Plugins > Introspection > Node Graph:

$ rqt

或者直接运行:

$ rqt_graph

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

 


您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码: 验证码,看不清楚?请点击刷新验证码 必填



391 次浏览
2次