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

SLAM+语音机器人DIY系列:(二)ROS入门——8.理解roslaunch在大型项目中的作用

人工智能 小虎哥哥爱学习 1455次浏览 0个评论

摘要

ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便。我们的机器人“miiboo”中的大部分程序也采用ROS进行开发,所以本文就重点对ROS基础知识进行详细的讲解,给不熟悉ROS的朋友起到一个抛砖引玉的作用。本章节主要内容: 1.ROS是什么 2.ROS系统整体架构 3.在ubuntu16.04中安装ROS kinetic 4.如何编写ROS的第一个程序hello_world 5.编写简单的消息发布器和订阅器 6.编写简单的service和client 7.理解tf的原理 8.理解roslaunch在大型项目中的作用 9.熟练使用rviz 10.在实际机器人上运行ROS高级功能预览


8.理解roslaunch在大型项目中的作用

(1)roslaunch的作用

在一个大型的机器人项目中,经常涉及到多个node协同工作,并且每个node都有很多可设置的parameter。比如我们的机器人miiboo_nav导航项目,涉及到地图服务节点、定位算法节点、运动控制节点、底盘控制节点、激光雷达数据获取节点等众多节点,和几百个影响着这些node行为模式的parameter。如果全部手动rosrun逐个启动node并传入parameter,工程的复杂程度将难以想象。所以这个时候就需要用roslaunch来解决问题,将需要启动的节点和需要设置的parameter全部写入一个*.launch文件,然后用roslaunch一次性的启动*.launch文件,这样所有的节点就轻而易举的启动了。miiboo_nav导航项目的miiboo_nav.launch文件内容如图28。   SLAM+语音机器人DIY系列:(二)ROS入门——8.理解roslaunch在大型项目中的作用

(图28)miiboo_nav导航项目的miiboo_nav.launch文件内容

(2)launch标签介绍

launch文件采用xml文本标记语言进行编写,对比较常用的标签进行介绍。

<launch>标签:

这个是顶层标签,所有的描述标签都要写在<launch></launch>之间。

<launch>
...
</launch> 

 

<node>标签:

这个是最常见的标签,每个node标签里包含了ROS图中节点的名称属性name、该节点所在的包名pkg、节点的类型type(type为可执行文件名称,如果节点用c++编写;type为*.py,如果节点用python编写)、调试属性output(如果output=“screen”,终端输出信息将被打印到当前控制台,而不是存入ROS日志文件)。

<node name=”xx” pkg=”xx” type=”xx” output=”xx”>
...
</node> 

 

<include>标签:

这个标签是用于导入另一个*.launch文件到当前文件。也就是说高层级的launch文件可以通过include的方法调用其它launch文件,这样可以使launch文件的组织方式更加模块化,便于移植与复用。

<include file=”$(find pkg_name)/launch/xx.launch”/>

  <remap>标签: 这个标签是用于将topic的名称进行重映射, from中填入原来的topic名称,to中填入新的topic名称。<remap>标签根据放置在launch文件的层级不同,在相应的层级起作用。  

<remap from=”orig_topic_name” to=”new_topic_name”/>

  <param>标签: 这个标签用于在参数服务器中创建或设置一个指定名称的参数值。  

<param name=”param_name” type=”xx” value=”xx”/>

  <rosparam>标签: 这个标签用于从yaml文件中一次性导入大量参数到参数服务器中。  

<rosparam command=”load” file=”$(find pkg_name)/path_to_file.yaml”/>

  <arg>标签: 这个标签用于在launch文件中定义用于存储的临时变量,该标签定义的变量只在当前launch文件中使用。推荐使用第一种方式赋值,这样可以方便从命令行中传入参数。  

<arg name=”xx” default=”xx”/>
或者
<arg name=”xx” value=”xx”/>

  <group>标签: 这个标签用于将node批量划分到某个命名空间。便于大项目中节点的批量管理。  

<group ns=”group_one”>
< node ... />
< node ... />
</group>

<group ns=”group_two”>
< node ... />
< node ... />
</group>

 

(3)launch的使用方法

首先在相应功能包目录下新建一个launch文件夹。   然后在launch文件夹中新建*.launch文件,并按照上面的launch标签规则编写好launch文件的内容。   最后在终端中用roslaunch命令启动launch文件,命令如下:  

cd ~/catkin_ws/
source devel/setup.bash
roslaunch <pkg_name> <file_name.launch> 

  特别说明,由于roslaunch命令会自动去启动roscore,所以不需要像之前使用rosrun那样特意先去手动启动roscore。  


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明SLAM+语音机器人DIY系列:(二)ROS入门——8.理解roslaunch在大型项目中的作用
喜欢 (0)

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

加载中……