• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

ROS入门学习笔记(五)—–launch启动文件的使用方法、常用可视化工具的使用方法

人工智能 慕羽★ 3046次浏览 0个评论

   本系列文章是与大家分享一下,我在学习ROS过程中所做的笔记,本系列文章主要的学习资料是古月老师(胡春旭老师)的 ROS入门21讲(文章中部分图片来源于ROS入门21讲课件),以及其编著的《ROS机器人开发实践》,当然其中也加入了我自己的理解和其他的相关资料,本系列文章共五篇,本篇文章是本系列第五篇文章。launch启动文件的使用方法、常用可视化工具的使用方法


十四、launch启动文件的使用方法

   1、Launch文件通过XML文件实现多节点的配置和启动,Launch文件可自动启动ROS Master,文件中每一个note都是一个节点,相当于rosrun命令

   7、launch示例1

在这里插入图片描述

   (1)首先我们在工作空间的src文件夹下,新建一个名为learning_launch的功能包,不需要添加依赖,因为launch文件是一个启动文件,基本都是链接其他库里面的功能

         catkin_create_pkg learning_launch

   (2)我们在该功能包下创建一个名为launch的文件夹,然后将写好的名为simple.launch的文件添叫到该文件夹下,该文件的内容如下:

<launch>
    <node pkg="learning_topic" type="person_subscriber" name="talker" output="screen" />
    <node pkg="learning_topic" type="person_publisher" name="listener" output="screen" /> 
</launch>

   该程序中两个node标签分别启动两个节点,第一个节点是learning_topic功能包里面的person_subscriber节点,运行后名为talker,使用output在终端中显示日志信息,第二个节点是learning_topic功能包里面的learning_topic节点,运行后名为listener,使用output在终端中显示日志信息

  (3)在打开该文件后在下方选择MXML后会进行高亮显示,方便我们查看和阅读

在这里插入图片描述

   (4)我们回到工作空间根目录下,对其进行编译(catkin_make),让工作空间知道有个learning_launch党的功能包加进来了,

   (5)接下来就可以运用roslaunch命令来启动launch文件了,后面的跟的第一个参数是功能包名,第二个参数是launch文件名,如下所示,启动learning_launch功能包下的simple.launch文件

       roslaunch learning_launch simple.launch

   8、launch示例2

在这里插入图片描述

   (1)依旧是将我们写好的代码文件放到learning_launch功能包的launch文件夹下,取名为turtlesim_parameter_config.launch,代码如下所示:

<launch>

    <param name="/turtle_number"   value="2"/>

    <node pkg="turtlesim" type="turtlesim_node" name="turtlesim_node">
        <param name="turtle_name1"   value="Tom"/>
        <param name="turtle_name2"   value="Jerry"/>

        <rosparam file="$(find learning_launch)/config/param.yaml" command="load"/>
    </node>

    <node pkg="turtlesim" type="turtle_teleop_key" name="turtle_teleop_key" output="screen"/>

</launch>

   (4)接下来的两行语句分别设置了值为Tom的变量turtle_name1和值为Jerry的变量turtle_name2

   这里需要在learning_launch功能包下新建一个名为config的文件夹,并把我们需要的名为param.yaml的文件放在该文件夹下,该文件的内容如下图所示:

在这里插入图片描述

   (7)接下来我们再终端输入以下命令,运行一下示例2所介绍的launch文件,运行后,使用键盘的↑↓←→就可以控制海龟运动了,

        roslaunch learning_launch turtlesim_parameter_config.launch

 
在这里插入图片描述

   (8)我们打开一个新的终端输入rosparam list命令就可以查看当前的参数,下图红色框内的参数就是我们通过启动文件turtlesim_parameter_config.launch加载的

在这里插入图片描述

   (9)这里我们发现参数/turtle_number前没有前缀,而上图的红框内的其他参数都有一个前缀/turtlesim_node,这是因为在该launch文件中参数/turtle_number是在节点之外设定的(如下图的红框所示),而其他的是在节点turtlesim_node之内设定的(如下图的蓝框和所示),所以他会在变量前加一个节点名的前缀,在变量C和D前还有个/group的前缀,这是因为在param.yaml文件中C和D参数前加了个命名空间group,这样做可以有效的避免资源冲突

在这里插入图片描述

   9、launch示例3

在这里插入图片描述

   (1)依旧是将我们写好的代码文件放到learning_launch功能包的launch文件夹下,取名为start_tf_demo_c++.launch,代码如下所示:

 <launch>

    <!-- Turtlesim Node-->
    <node pkg="turtlesim" type="turtlesim_node" name="sim"/>
    <node pkg="turtlesim" type="turtle_teleop_key" name="teleop" output="screen"/>

    <node pkg="learning_tf" type="turtle_tf_broadcaster" args="/turtle1" name="turtle1_tf_broadcaster" />
    <node pkg="learning_tf" type="turtle_tf_broadcaster" args="/turtle2" name="turtle2_tf_broadcaster" />

    <node pkg="learning_tf" type="turtle_tf_listener" name="listener" />

  </launch>

   (2)上面运行节点的方法跟之前的示例一样,就不详细展开了,首先先启动了海龟仿真器,再启动了键盘控制节点,接下来启动了两个广播器turtle_tf_broadcaster在这里我们对同一个节点调用了两次,第一次运行后重命名为turtle1_tf_broadcaster,输入参数为/turtle1,第二次运行后重命名为turtle2_tf_broadcaster,输入参数为turtle2,接下来运行了监听器turtle_tf_listener,运行后的名字为listener

   (3)在终端中输入以下命令,来启动本例中的launch文件,启动成功后,使用键盘控制海龟1移动,海龟2就会自动跟随海龟1的运动

       roslaunch learning_launch start_tf_demo_c++.launch

在这里插入图片描述


   10、launch示例4

在这里插入图片描述

   (1)依旧是将我们写好的代码文件放到learning_launch功能包的launch文件夹下,取名为turtlesim_remap.launch,代码如下所示:

<launch>

    <include file="$(find learning_launch)/launch/simple.launch" />

    <node pkg="turtlesim" type="turtlesim_node" name="turtlesim_node">
        <remap from="/turtle1/cmd_vel" to="/cmd_vel"/>
    </node>

</launch>

c++中的include的作用)

   (4)通过以下命令来运行本例中的launch文件

        roslaunch learning_launch  turtlesim_remap.launch

在这里插入图片描述

   (5)此时使用rostopic list命令,来查看当前的话题,已经由/turtle1 /cmd_vel变为了/cmd_vel

在这里插入图片描述

   (6)此时,我们使用rostopic pub去发布一个速度指令,海龟就会进行运动(输入rostopic pub /cmd_vel后,双击tab键会自动补齐剩余部分)

在这里插入图片描述

十五、常用可视化工具的使用方法

   1、计算图可视化工具rqt_graph: 可以显示ros里面的计算图资源,椭圆代表节点,箭头代表话题

   首先我们先运行节点管理器,再运行海龟仿真器,再运行键盘控制节点,最后通过rqt_graph命令,来显示计算图,通过这个计算图我们可以很快的了解系统的全貌,依次输入的命令如下所示:

roscore
rosrun turtlesim turtlesim_node
rosrun turtlesim turtlesim_teleop_key
rqt_graph

 
在这里插入图片描述


   如上图所示,其中的/turtlesim是我们启动的仿真器节点,/teleop_turtle 是键盘控制节点,他们之间的话题是/turtle1/cmd_vel

   2、日志输出工具 rqt_console

   首先我们依旧先运行节点管理器,再运行海龟仿真器,再运行键盘控制节点,再运行rqt_console命令,rqt_console可以帮助我们查看日志信息、警告信息、错误信息等,依次输入的命令如下所示:

roscore
rosrun turtlesim turtlesim_node
rosrun turtlesim turtlesim_teleop_key
rqt_console

   我们用键盘控制海龟碰撞边界,就可以在rqt_console中查看到警告信息了

在这里插入图片描述


   3、数据绘图工具 rqt_plot

   首先我们依旧先运行节点管理器,再运行海龟仿真器,再运行键盘控制节点,再运行rqt_plot命令,rqt_plot可以用来绘制数据曲线,依次输入的命令如下所示:

roscore
rosrun turtlesim turtlesim_node
rosrun turtlesim turtlesim_teleop_key
rqt_plot

   我们在rqt_plot中输入/它会自动列出可选择的话题,使用键盘上的↑↓键可以来进行选择,按enter键确认,这里我们以海龟的位置信息为例,选择turtle1/pose,确认后,我们用键盘控制海龟移动,就可以在rqt_plot中查看到相关的波形变化了

在这里插入图片描述  
在这里插入图片描述

   有时候在拖拽rqt_plot窗口调整大小时会报错rqt_plot停止运行之类的,重新启动rqt_plot就行了,我试了好多遍只出现了一次错误

在这里插入图片描述

   4、图像渲染工具 rqt_image_view

   做图像时经常使用的一个工具,使用rqt_image_view命令,进行启动,启动后默认是空白的,配置后摄像头的图像、深度图、红外图都可以显示出来,目前我手头没有相关实物,就不做介绍了

在这里插入图片描述

   5、综合工具rqt 在菜单栏有很多可以选择的工具,大家可以根据自己的需要配置出适合的界面组合,可以用来充当我们调试用的上位机

在这里插入图片描述

   6、Rviz工具

在这里插入图片描述
在这里插入图片描述

   输入rviz指令可以运行rviz ,打开后界面如下所示,上面橙色框内的是工具栏,左边蓝色框内的是显示列表,中间红色框内的是显示区,模型、图像等都在该区域进行显示,右边黄框内的是视角设置区,可以用来设置中间显示区的视角,下面粉紫色的框内是时间显示区,显示系统时间、ros启动时间等

在这里插入图片描述


   rviz是一个数据显示平台,要显示的数据一定是已经存在的

   7、Gazebo是强大的三维物理仿真平台

在这里插入图片描述  
在这里插入图片描述


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明ROS入门学习笔记(五)—–launch启动文件的使用方法、常用可视化工具的使用方法
喜欢 (0)

您必须 登录 才能发表评论!

加载中……