ROS总结—— rqt

    xiaoxiao2021-03-25  114

    使用 rqt_console 和 roslaunch

    本博客是对http://wiki.ros.org/上ROS教程的学习总结,欢迎大家交流学习。本节讲解如何使用rqt_console和rqt_logger_level进行调试,以及如何使用roslaunch同时运行多个节点。早期版本中的rqt工具并不完善,如果你使用的是“ROS fuerte”或更早期的版本,请同时参考学习使用老版本的“rx”工具。

    1. 预先安装rqt和turtlesim程序包 会用到rqt 和 turtlesim这两个程序包,请先安装:

    $ sudo apt-get install ros-indigo-rqt ros-indigo-rqt-common-plugins ros-indigo-turtlesim

    2.使用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

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

    $ rosrun turtlesim turtlesim_node

    因为默认日志等级是INFO,所以你会看到turtlesim启动后输出的所有信息,如下图所示: 现在刷新一下rqt_logger_level窗口并选择Warn将日志等级修改为WARN,如下图所示: 现在让turtle动起来并观察rqt_console中的输出:

    $ rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, 0.0]'

    3. 日志等级说明 日志等级按以下优先顺序排列:

    Fatal Error Warn Info Debug

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

    4. 使用roslaunch roslaunch可以用来启动定义在launch文件中的多个节点,基本用法:

    $ roslaunch [package] [filename.launch]

    先切换到beginner_tutorials程序包目录下:

    $ roscd beginner_tutorials

    如果roscd执行失败了,需设置当前终端下的ROS_PACKAGE_PATH环境变量,设置方法如下:

    $ export ROS_PACKAGE_PATH=~/indigo_workspace/sandbox:$ROS_PACKAGE_PATH $ roscd beginner_tutorials

    如果你仍然无法找到beginner_tutorials程序包,说明该程序包还没有创建,请参考ROS总结——ROS程序包(一),并按照创建程序包的操作方法创建一个beginner_tutorials程序包。然后创建一个launch文件夹:

    $ mkdir launch $ cd launch

    5. Launch 文件 创建一个名为turtlemimic.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> <node pkg="turtlesim" name="mimic" type="mimic"> <remap from="input" to="turtlesim1/turtle1"/> <remap from="output" to="turtlesim2/turtle1"/> </node> </launch>

    6. Launch 文件解析 现在开始逐句解析launch xml文件:

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

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

    <node pkg="turtlesim" name="mimic" type="mimic"> <remap from="input" to="turtlesim1/turtle1"/> <remap from="output" to="turtlesim2/turtle1"/> </node>

    在这里启动模仿节点,并将所有话题的输入和输出分别重命名为turtlesim1和turtlesim2,这样就会使turtlesim2模仿turtlesim1。

    </launch>

    这个是launch文件的结束标签。

    7. roslaunching 现在通过roslaunch命令来启动launch文件:

    $ roslaunch beginner_tutorials turtlemimic.launch

    现在将会有两个turtlesims被启动,然后在一个新终端中使用rostopic命令发送速度设定消息:

    $ 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发送了速度设定消息。 也可以通过rqt_graph来更好的理解在launch文件中所做的事情。运行rqt并在主窗口中选择rqt_graph:

    $ rqt

    或直接运行:

    $ rqt_graph

    到此,已经基本学会了rqt_console和roslaunch命令的使用,接下来讲解使用rosed——ROS中的编辑器。

    转载请注明原文地址: https://ju.6miu.com/read-17543.html

    最新回复(0)