求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
 


业务架构设计
4月18-19日 在线直播



基于UML和EA进行系统分析设计
4月25-26日 北京+在线



AI 智能化软件测试方法与实践
5月23-24日 上海+在线
 
追随技术信仰

随时听讲座
每天看新闻
 
 
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(火龙果软件)
713 次浏览
7次  

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元





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



713 次浏览
7次