前言

使用命令行输入代码需要不断打开终端比较繁琐,而且容易输入错误,那么有没有什么方法可以快速启动所需节点呢?

一、launch文件介绍

Launch文件:通过XML文件实现多节点的配置和启动(可自启动ROS Master
命令行语法:

roslaunch 功能包名 launch文件名

二、Launch文件常用核心语法

<launch><node pkg = "turtlesim" name="sim1" type="turtlesim_node" /><node pkg = "turtlesim" name="sim2" type="turtlesim_node" />
</launch>
< launch > launch文件中的根元素采用< launch >标签定义
< node > 启动节点

注:launch文件以< launch >开始,结束

1.< node >语法

<node pkg = "package-name" type = "executable-name" name= "node-name"/>
pkg 节点所在的功能包名称
type 节点的可执行文件名称(.cpp文件或.py文件)
name 节点运行时的名称:可以取代type中的节点名(即覆盖掉ros::init()定义的节点名)
output output=“screen” 终端输出转储在当前的控制台上,而不是在日志文件中
respawn 是否要重启
required 控制某个节点是否一定要启动
ns 设置命名空间(避免命名冲突)
args 给节点输入参数

2.参数设置

(1)< param >/< rosparam >

< param >设置ROS系统运行中的参数,存储在参数服务其中。
<param name = "output_frame" value="odem" />
  • name:参数名
  • value:参数值
< rosparam > 加载参数文件中的多个参数:
<rosparam file="params.yaml" command="load" ns="params" />

其中,ns是命名空间(name space)

(2)< arg >

< arg > launch文件内部的局部变量,仅限于launch文件使用
设置参数
<arg name="arg-name" value="arg-value" />
  • name:参数名
  • value:参数值
参数调用:
<param name="foo" value="$(arg arg-name)" />
<node name="node" pkg="package" type="type" args="$(arg arg-name)" />

3.重映射

< remap >重映射ROS计算机资源的命名

<remap from="/turtlebot/cmd_vel" to="/cmd_vel"/>
  • from:原命名
  • to:映射之后的命名

4.嵌套

< include >内嵌包含其他launch文件,类似C语言中的头文件包含。

<include file="$(dirname)/other.launch" />
  • file:包含其他launch文件路径

三、launch案例

1. 创建功能包

cd ~/catkin_ws/src
catkin_create_pkg learning_launch
cd learning_launch
mkdir launch

注:launch功能包不需要依赖包

2.simple.launch

cd ~/catkin_ws/src/learning_launch/launch
touch simple.launch
gedit 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>

注:启动的节点所在功能包和可执行文件(.cpp文件)的创建请参考:ROS学习(四)–1.发布者与订阅者案例

编译:

cd ~/catkin_ws
catkin_make

运行:

source ~/catkin_ws/devel/setup.bash
roslaunch learning_launch simple.launch


由图可知,launch启动节点成功!

3.turtlesim_parameter_config.launch

cd ~/catkin_ws/src/learning_launch/launch
touch turtlesim_parameter_config.launch
gedit 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>

注:1.find learning_launch:自动寻找learning_launch路径

编译:

cd ~/catkin_ws
catkin_make

注:运行前需要先添加config/param.yaml文件

cd ~/catkin_ws/src/learning_launch
mkdir config
cd config
touch param.yaml
gedit param.yaml
A: 123
B: "hello"group:C: 456D: "hello"

运行:

source ~/catkin_ws/devel/setup.bash
roslaunch learning_launch turtlesim_parameter_config.launch


由图可知,launch文件启动海龟仿真器和海龟移动控制器成功。同时launch文件参数设置和加载param.yaml文件参数成功

4.start_tf_demo_c++.launch

cd ~/catkin_ws/src/learning_launch/launch
touch start_tf_demo_c++.launch
gedit start_tf_demo_c++.launch
<launch><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>

注:启动的节点所在功能包和可执行文件(.cpp文件)的创建请参考:ROS学习(七)坐标系管理系统
编译:

cd ~/catkin_ws
catkin_make

运行:

source ~/catkin_ws/devel/setup.bash
roslaunch learning_launch start_tf_demo_c++.launch

5.turtlesim_remap.launch

cd ~/catkin_ws/src/learning_launch/launch
touch turtlesim_remap.launch
gedit 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>

编译:

cd ~/catkin_ws
catkin_make

运行:

source ~/catkin_ws/devel/setup.bash
roslaunch learning_launch turtlesim_remap.launch


由图可知,simple.launch文件包含成功,同时remap重命名成功,成功将"/turtle1/cmd_vel"重命名为"/cmd_vel" ,向"/cmd_vel" 发布话题,海龟成功移动,说明重命名成功

ROS学习(八)launch启动文件的使用方法相关推荐

  1. 【RK3399Pro学习笔记】十五、ROS中launch启动文件的使用方法

    目录 Launch文件语法 <launch><launch><launch> <node><node><node> 参数设置 & ...

  2. Launch启动文件的使用方法

    Launch启动文件的使用方法 案例一:运行两个节点 案例二:加载参数与命名空间 案例三:小海龟跟随的launch启动方法 案例四:remap修改节点名 Launch文件可以通过XML文件实现多节点的 ...

  3. 【ROS学习笔记】(十一)launch启动文件的使用方法

    一.Launch文件作用 通过XML文件实现多节点的配置和启动. 同时可以自动启动ROS Master(不需要单独roscore). 二.Launch文件语法 1. <launch> la ...

  4. ROS基础(十)——launch启动文件的使用方法

    申明:ROS学习参考了古月居老师的Blibli视频,强烈推荐大家看视频学习,本博客仅记录自己的学习经历和心得,欢迎大家一起讨论! 1 launch文件介绍 Launch文件:通过XML文件实现多节点的 ...

  5. ROS系统 launch启动文件的使用方法

    launch文件:通过XML文件实现多节点的配置和启动(可以自动启动ROS Master) 使用步骤 选定功能包右击 -> 添加 launch 文件夹 选定 launch 文件夹右击 -> ...

  6. ROS开发之如何制作launch启动文件?

    文章目录 0.引言 1.Launch文件语法 2.Launch示例 0.引言   笔者因研究课题涉及ROS开发,学习了古月居出品的ROS入门21讲,为巩固launch的知识,本文将ROS的launch ...

  7. ROS | launch启动文件的使用

    ROS | launch启动文件的使用 1. launch文件功能 2. launch文件语法 2.1 <launch>标签 2.2 <node>标签 2.3 <para ...

  8. ROS launch启动文件

    ROS启动文件 launch启动文件 launch 文件语法 launch文件使用 例程代码 launch启动文件 launch启动文件可以同事启动多个节点: 通过XML文件实现多节点的配置和启动(可 ...

  9. STM32学习总结之启动文件

    学习目标: 学习STM32单片机之学习总结 掌握 STM32 基础知识 学习内容: 学习新建工程之启动文件 用KEIL5 新建一个工程,把工程放在一个事先建好的文件夹内,工程命名为REG 后保存.然后 ...

最新文章

  1. 如何利用 C# 爬取「猫眼电影:热映口碑榜」及对应影片信息!
  2. 事务的隔离级别【防止忘记自用的】
  3. Transformer靠什么“基因“,得以闯入CV界秒杀CNN?
  4. VC中CListCtrl中的LVCOLUMN和LVITEM详细介绍
  5. 64.JPA命名策略【从零开始学Spring Boot】
  6. Domino+Qucikplace+Sametime构建企业办公平台图文攻略(四)
  7. Hadoop系列(三)MapReduce Job的几种提交运行模式
  8. 关于人工智能引擎的最初分析文档
  9. hive插件 ranger_Apache Ranger及Hive权限控制
  10. 从零开始学习python编程-如何从零开始学python?
  11. java jtable 自动高度,自动调整JTable中行的高度
  12. 51单片机课设——温控手机散热器
  13. WIFI系列协议--802.11ax--wifi6--高效率无线标准简称HE--11Gbit
  14. Google Safe Browsing API的实施
  15. 综合日语第一册第十一课
  16. canvas绘图详解-06-绘制一个五角星-常用绘图原理
  17. android播放语音,切换听筒模式遇到的问题
  18. python读取excel表头_13-用 Python 读写 Excel 文件
  19. 广东省职称计算机职称考试试题及答案,职称计算机考试基础知识章节试题及答案一...
  20. Backblaze2022中期SSD故障质量报告解读

热门文章

  1. java微信报警,JAVA实现接入企业微信报警
  2. Blockly - 来自Google的可视化编程工具
  3. blockly 代码html,blockly.html
  4. python numba class_Numba 开发手册 (二)
  5. 基于畸变图像本身的径向畸变矫正(无需镜头标定)
  6. Vue CLI安装的详细步骤
  7. HTTP协议——HTTP方法
  8. python打开文件的句柄_python文件操作
  9. Kotlin 安利贴 2. 扩展函数
  10. linux重启网卡命令