第十七弹 launch启动文件的使用方法

2024-04-29 22:58

本文主要是介绍第十七弹 launch启动文件的使用方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

ROS探索总结(五十六)—— launch文件

ROS 初级 - 解析 roslaunch 文件

1.  launch文件简介

从 ROS 角度来看,机器人系统就是一堆 node 和 topic (再添加一些 parameter, service 等)构成的网络(rosgraph),其中每个 node 都可以完成一定的功能。通常一个机器人运行时要开启很多 node,如果一个 node 一个 node 的启动,比较麻烦。通过 launch文件以及 roslaunch 命令可以一次性启动多个 node,并且可以设置丰富的参数。

目前来看,官方 ros package 大部分都包含名为 launch 的文件夹,里面存放了 launch 文件。我们自己编写的 package 也应该尽量使用这种结构,方便“一键启动”。

2.Launch文件语法

launch文件采用xml格式。

例如:

<launch><node pkg="turtlrsim" name="sim1" type="turtlesim_node"/><node pkg="turtlrsim" name="sim2" type="turtlesim_node"/>
</launch>

<launch>   :  launch文件中的根元素采用<launch>标签定义

<node>    :   

<node pkg="package-name" name="node-name" type="executable-name" />pkg : 节点所在的功能包名称
type:节点的可执行文件的名称
name:节点运行时的名称
其他的可选属性:output、respawn、required、ns、args

重映射:  <remap>

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

嵌套:   <include>

包含其他launch文件,类似c语言的头文件包含<include file="$(dirname)/other.launch"/>file:包含的其他的launch文件路径

3. 一些launch的实现

3.1 新建功能包

catkin_create_pkg learning_launch

 

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

这个需要用到learning_topic功能包>>>>https://wws.lanzoui.com/i5HUZs56ibi

通过连接可以下载所有的源码文件:

编译及运行

编译:在~/catkin_make的目录下启动终端,并运行catkin_make。

 运行:roslaunch       功能包名       文件名

 roslaunch learning_launch simple.launch 

效果:两个节点运行在一个终端中:

 3.3   turtlesim_parameter_config.launch

新建文件:

同样的,新建一个文件,名为“ turtlesim_parameter_config.launch”:

用到param、rosparam:

<launch><param name="/turtle_number"   value="2"/>//设置海龟的数量两个,一个字典值<node pkg="turtlesim" type="turtlesim_node" name="turtlesim_node">//设置节点,仿真器节点,turtlesim_node<param name="turtle_name1"   value="Tom"/><param name="turtle_name2"   value="Jerry"/>//设置海龟1和海龟2的名字<rosparam file="$(find learning_launch)/config/param.yaml" command="load"/>//加载参数文件param.yaml</node><node pkg="turtlesim" type="turtle_teleop_key" name="turtle_teleop_key" output="screen"/>//启动键盘控制节点</launch>

新建文件夹config、新建param.yaml文件:

 

param.yaml文件的内容:

A: 123
B: "hello"group:C: 456D: "hello"

查看一下参数:

rosparam list

 3.4 start_tf_demo_c++.launch

海龟跟随案例,使用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>

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

这篇关于第十七弹 launch启动文件的使用方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/947382

相关文章

Python使用Tenacity一行代码实现自动重试详解

《Python使用Tenacity一行代码实现自动重试详解》tenacity是一个专为Python设计的通用重试库,它的核心理念就是用简单、清晰的方式,为任何可能失败的操作添加重试能力,下面我们就来看... 目录一切始于一个简单的 API 调用Tenacity 入门:一行代码实现优雅重试精细控制:让重试按我

Springboot项目启动失败提示找不到dao类的解决

《Springboot项目启动失败提示找不到dao类的解决》SpringBoot启动失败,因ProductServiceImpl未正确注入ProductDao,原因:Dao未注册为Bean,解决:在启... 目录错误描述原因解决方法总结***************************APPLICA编

Python安装Pandas库的两种方法

《Python安装Pandas库的两种方法》本文介绍了三种安装PythonPandas库的方法,通过cmd命令行安装并解决版本冲突,手动下载whl文件安装,更换国内镜像源加速下载,最后建议用pipli... 目录方法一:cmd命令行执行pip install pandas方法二:找到pandas下载库,然后

MySQL中EXISTS与IN用法使用与对比分析

《MySQL中EXISTS与IN用法使用与对比分析》在MySQL中,EXISTS和IN都用于子查询中根据另一个查询的结果来过滤主查询的记录,本文将基于工作原理、效率和应用场景进行全面对比... 目录一、基本用法详解1. IN 运算符2. EXISTS 运算符二、EXISTS 与 IN 的选择策略三、性能对比

使用Python构建智能BAT文件生成器的完美解决方案

《使用Python构建智能BAT文件生成器的完美解决方案》这篇文章主要为大家详细介绍了如何使用wxPython构建一个智能的BAT文件生成器,它不仅能够为Python脚本生成启动脚本,还提供了完整的文... 目录引言运行效果图项目背景与需求分析核心需求技术选型核心功能实现1. 数据库设计2. 界面布局设计3

使用IDEA部署Docker应用指南分享

《使用IDEA部署Docker应用指南分享》本文介绍了使用IDEA部署Docker应用的四步流程:创建Dockerfile、配置IDEADocker连接、设置运行调试环境、构建运行镜像,并强调需准备本... 目录一、创建 dockerfile 配置文件二、配置 IDEA 的 Docker 连接三、配置 Do

Android Paging 分页加载库使用实践

《AndroidPaging分页加载库使用实践》AndroidPaging库是Jetpack组件的一部分,它提供了一套完整的解决方案来处理大型数据集的分页加载,本文将深入探讨Paging库... 目录前言一、Paging 库概述二、Paging 3 核心组件1. PagingSource2. Pager3.

python使用try函数详解

《python使用try函数详解》Pythontry语句用于异常处理,支持捕获特定/多种异常、else/final子句确保资源释放,结合with语句自动清理,可自定义异常及嵌套结构,灵活应对错误场景... 目录try 函数的基本语法捕获特定异常捕获多个异常使用 else 子句使用 finally 子句捕获所

C++11右值引用与Lambda表达式的使用

《C++11右值引用与Lambda表达式的使用》C++11引入右值引用,实现移动语义提升性能,支持资源转移与完美转发;同时引入Lambda表达式,简化匿名函数定义,通过捕获列表和参数列表灵活处理变量... 目录C++11新特性右值引用和移动语义左值 / 右值常见的左值和右值移动语义移动构造函数移动复制运算符

kkFileView启动报错:报错2003端口占用的问题及解决

《kkFileView启动报错:报错2003端口占用的问题及解决》kkFileView启动报错因office组件2003端口未关闭,解决:查杀占用端口的进程,终止Java进程,使用shutdown.s... 目录原因解决总结kkFileViewjavascript启动报错启动office组件失败,请检查of