launch作用:便于一次启动多个节点,可启动本地节点和远程节点及修改添加参数服务器参数。

<launch>            //<launch>是所有launch文件的根标签<node>          //node为子集标签</node>
</launch>

launch文件的建立

在功能包下,新建launch文件夹 ,在launch文件夹下添加后缀为launch的文件。

launch文件的启动

roslaunch 功能包名  launch文件名

一、 launch文件之node标签

<launch><!-- pkg = "包名" --><!-- type = "节点名称,可执行文件名称" --><!-- name = "为节点其别名" --><!-- output = "输出类似 log/screen" --><!-- args = "将参数传递给节点" --> <!-- machine = "启动不同设备上的节点" --><!-- respawn = "退出后是否自动启动" --><!-- required = "节点退出后,关闭roscore" --><!-- ns = "设置节点命名空间,加前缀" --><node pkg="turtlesim" type="turtlesim_node" name="turtle" output="screen"/><node pkg="turtlesim" type="turtle_teleop_key" name="my_key" output="screen"/>
</launch>

上面例子中launch文件启动时是多线程的,不一定按照节点描述顺序启动。

二、launch文件之include标签

<launch><!-- 用于文件复用,此例将文件node.launch复用 --><!-- file="$(find 功能包名)/launch/launch文件名" --><include file="$(find launch02)/launch/node.launch"  /></launch>

三、launch文件之remap标签

<launch><node pkg="turtlesim" type="turtlesim_node" name="turtle" output="screen"><remap from="/turtle1/cmd_vel" to="/cmd_vel"/>   //将话题"/turtle1/cmd_vel"修改                                                //为"/cmd_vel"/>  </node><node pkg="turtlesim" type="turtle_teleop_key" name="my_key" output="screen"/>
</launch>

四、launch文件之param标签

<param>标签主要用于在参数服务器上设置参数,参数源可以在标签中通过 value 指定,也可以通过外部文件加载,在<node>标签中时,相当于私有命名空间。

<launch><!-- 格式一,在launch内,node外 --><!-- name为参数名 --><!-- type为参数类型 --><!-- value为参数赋值 --><param name="param_A" type="int" value="100"/>      <node pkg="turtlesim" type="turtlesim_node" name="turtle" output="screen"><!-- 格式二,在node内 --><param name="param_B" type="double" value="102.3"/></node><node pkg="turtlesim" type="turtle_teleop_key" name="my_key" output="screen"/></launch>

' 五、launch文件之rosparam标签

<rosparam>标签可以从 YAML 文件导入参数,或将参数导出到 YAML 文件,也可以用来删除参数,<rosparam>标签在<node>标签中时被视为私有。

  • command="load | dump | delete" (可选,默认 load)

    加载、导出或删除参数

  • file="$(find xxxxx)/xxx/yyy...."

    加载或导出到的 yaml 文件

  • param="参数名称"

  • ns="命名空间" (可选)

  • <launch><!-- 导出服务器参数到文件(find launch02)/launch/params_out.yaml --><rosparam command="dump" file="$(find launch02)/launch/params_out.yaml"/><!-- 删除参数bg_B --><rosparam command="delete" param="bg_B"/></launch>

    六、launch文件之group标签

<group>标签可以对节点分组,具有 ns 属性,可以让节点归属某个命名空间

<launch><!-- 节点分组,将不会出现节点覆盖问题 --><group ns="first"><node pkg="turtlesim" type="turtlesim_node" name="turtle" output="screen"/><node pkg="turtlesim" type="turtle_teleop_key" name="my_key" output="screen"/></group><group ns="second"><node pkg="turtlesim" type="turtlesim_node" name="turtle" output="screen"/><node pkg="turtlesim" type="turtle_teleop_key" name="my_key" output="screen"/></group>
</launch>

七、launch文件之args标签

<arg>标签是用于动态传参,类似于函数的参数,可以增强launch文件的灵活性

<launch><!-- 相当于宏定义,定义参数car_length --><arg name="car_length" default="0.55"/>  <param name="A" value="${arg car_length}"/><param name="B" value="${arg car_length}"/><param name="C" value="${arg car_length}"/></launch>

也可以动态传参

roslaunch launch02 _arg.launch car_length:=0.6

ROS分布式通信 

ros作为一个分布式的系统,一个运行的ros系统,多个节点可以分布在不同的设备中,并且节点之间可以相互通信。因此,配置需要满足以下条件

所有端口上的所有机器之间必须有完整的双向连接。

每台计算机必须通过所有其他计算机都可以解析的名称来公告自己。

实现:

1.准备

先要保证不同计算机处于同一网络中,最好分别设置固定IP,如果为虚拟机,需要将网络适配器改为桥接模式;首先通过终端输入命令ifconfig,获取本机的ip,掩码、网关,

再将其填入

点击应用即可,所有设备均做以上操作。

2.配置文件修改

分别修改不同计算机的 /etc/hosts 文件,在该文件中加入对方的IP地址和计算机名

主机加入从机的IP及从机的计算机名, 从机加入主机的IP及主机的计算机名,

IP地址查看名: ifconfig

计算机名称查看: hostname

设置成功后,重启计算机生效,主机可使用命令 ping 从机ip查看连接状态,同理从机

也可使用命令 ping 从机ip查看连接状态。

3.配置文件修改

配置主机的 IP 地址

~/.bashrc 追加

export ROS_MASTER_URI=http://主机IP:11311
export ROS_HOSTNAME=主机IP

4.配置从机IP

配置从机的 IP 地址,从机可以有多台,每台都做如下设置:

~/.bashrc 追加

export ROS_MASTER_URI=http://主机IP:11311
export ROS_HOSTNAME=从机IP

ROS入门学习三——launch文件相关推荐

  1. 古月居ROS入门21讲-launch文件

    视频链接:bilibili 搜 古月居 源代码:关注古月居公众号,回复ROS入门21讲 文章目录 1 launch文件语法 2 launch 示例 launch文集:通过XML文件实现多个节点的配置和 ...

  2. ROS中的roslaunch命令和launch文件(ROS入门学习笔记四)

    ROS中的基本对象和概念学习笔记(ROS入门学习笔记一) ROS中创建工作区和包(ROS入门学习笔记二) ROS功能包中CMakeLists.txt的说明(ROS入门学习笔记三) 1.roslaunc ...

  3. OpenGL入门学习[三]

    OpenGL入门学习[三] http://xiaxveliang.blog.163.com/blog/static/2970803420126246501930/ OpenGL入门学习[十一] 我们在 ...

  4. Redis6入门学习(三)--Redis_Jedis、事务、LUA脚本

    title: Redis6入门学习(三) 文章目录 title: Redis6入门学习(三) **Redis_Jedis_测试** **Jedis所需要的jar包** **连接Redis注意事项** ...

  5. ROS入门学习笔记|话题发布与订阅

    文章目录 一.工作空间 1.创建一个名称为sor_ws的工作空间 2.编译工作空间 3.创建功能包 二.自定义话题消息 1.定义msg文件 2.配置package.xml和CMakeLists.txt ...

  6. 【ROS入门学习01| ROS命令行工具的使用】

    ROS命令行工具的使用 -----------------可以配合古月居的ROS入门教程来学习实践. 文章目录 ROS命令行工具的使用 一.roscore 二.rosrun 三.rqt_graph 四 ...

  7. ROS入门学习(中科院ros视频笔记)

    >ros工程结构 catkin工作空间:组织和管理功能包的文件夹(工作空间:管理和组织ros工程代码的地方) catkin,编译构建系统,cmake的扩展 catkin workspace,用指 ...

  8. 【ROS入门学习05|自定义话题消息,并且编程实现publisher和subscriber】

    这里是学习ROS第一次涉及到代码的部分.主要根据古月居视频教程整理出来的干货.本人是干货爱好者. 文章目录 前言 一.话题模型 二.自定义话题消息 1.定义msg文件 2.在功能包(learning_ ...

  9. 楷书书法规则_硬笔书法入门学习“三步法”,让练字不再难

    生活中,常常有人肯于吃苦,坚持经常练习硬笔书法,但却进步不大,收获甚微.因此,凡有志学好硬笔书法的人,必须掌握一些学习硬笔书法的方法.硬笔书法学习的方法可以采用"三步法". 一.规 ...

最新文章

  1. 【tyvj1052】【树状dp】没有上司的舞会
  2. java容易混淆的知识点
  3. 企业生产经营相关英文及缩写之(11)--Genenic 普通书写
  4. linux 管道 top,linux IPC总结——管道
  5. 金蝶国际公布2020年全年业绩,云业务收入增长45.6%
  6. 【爬虫剑谱】一卷3章 软件篇-Anaconda的安装及配置
  7. Postman:ResponseHeader存在多个Set-Cookie时,教你获取Cookie值
  8. Python ConfigParser
  9. 识别你的ADFS是什么版本的(Which version of ADFS is running)
  10. 造个轮子 | 自己动手写一个Redis
  11. php 网址尾部带斜杠和不带区别,URL中带斜杠和不带斜杠的区别 | 米莱SEO博客
  12. WDS+MDT全自动部署系统、自动加域、自动计算机取名(SN序列号或MAC地址)
  13. 学生科学计算机,学生科学计算器
  14. ios textView输入框光标问题
  15. 使用大白菜U盘重装系统
  16. Unity中使用插件在地形中制作道路
  17. 阻塞队列(一):ArrayBlockingQueue
  18. 阿里90后运营的工作总结,细致而深刻!
  19. 新程序语言 Wyvern 将不同Web语言融合在一起
  20. 前端设计稿转代码现状,会不会失业?

热门文章

  1. 信道复用技术之码分复用
  2. CentOS7 - 从零开始学习 推荐新手入门
  3. php 多点到线距离,双绞线的通信距离是多少
  4. 光纤之父高锟:从痴人说梦到诺贝尔物理学奖
  5. “痕迹主义”在基层流行,已成形式主义新变种
  6. react+propTypes
  7. The POM for oracle:ojdbc6:jar:11.2.0.3 is missing, no dependency information available
  8. Java基础知识 变量 基本类型 类型转换 标识符 关键字 运算符 循环 分支结构 JVM
  9. NodeJS移动文件
  10. [JOLO-GCN WACV2021]Mining Joint-Centered Light-Weight Information for Skeleton-Based Action Recognit