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

这篇具有很好参考价值的文章主要介绍了ROS学习(八)launch启动文件的使用方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

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

一、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

roslaunch,ros,学习,自动驾驶,人工智能
由图可知,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: 456
  D: "hello"

运行:

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

roslaunch,ros,学习,自动驾驶,人工智能
由图可知,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

roslaunch,ros,学习,自动驾驶,人工智能
由图可知,simple.launch文件包含成功,同时remap重命名成功,成功将"/turtle1/cmd_vel"重命名为"/cmd_vel" ,向"/cmd_vel" 发布话题,海龟成功移动,说明重命名成功文章来源地址https://www.toymoban.com/news/detail-636683.html

到了这里,关于ROS学习(八)launch启动文件的使用方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【ROS学习】节点运行管理launch文件的基本操作

    launch文件的概念和作用 launch 文件是一个 XML 格式的文件,可以启动本地和远程的多个节点,还可以在参数服务器中设置参数。 launch文件的作用是:简化节点的配置与启动,提高ROS程序的启动效率。 使用场景 launch文件在ros中使用还是比较广泛的,比如:一个程序中可能需要启

    2024年02月06日
    浏览(41)
  • 使用 Python、XML 和 YAML 编写 ROS 2 Launch 文件

    ROS2 重要概念 ament_cmake_python 用户文档 ROS2 ament_cmake 用户文档 使用 rosdep 管理 ROS 2 依赖项 ROS 2 launch 文件可以用 Python、XML 和 YAML 编写。本指南介绍了如何使用这些不同的格式来完成相同的任务,并对何时使用每种格式进行了讨论。 下面是一个用 Python、XML 和 YAML 实现的 Launc

    2024年02月05日
    浏览(41)
  • 【ROS2指南-8】入门Launch启动脚本

    目标: 创建launch文件以运行复杂的 ROS 2 系统。 教程级别: 初学者 时间: 10分钟 内容 背景 先决条件 任务 1 设置 2 编写启动文件 3 ros2发射 4 使用 rqt_graph 反省系统 概括 下一步 在到目前为止的教程中,您一直在为您运行的每个新节点打开新终端。随着越来越多的节点同时运

    2024年02月15日
    浏览(69)
  • launch文件的编写及ROS配置文件的详细介绍

    根据ROS的架构和通信机制来看,ROS的各个功能的实现离不开 节点(node) 和 话题(topic)、参数(parameter)、服务(service) 等构成的 网络拓扑(rosgraph) ,其中每个j节点 都可以完成对应的功能。而一个机器人完整功能的实现,通常需要启动多个节点,如果一个节点一个节点的启动,比较

    2024年02月03日
    浏览(39)
  • 使用Ruoyi的方法(数据库的创建、YML文件的修改、前端的导入和启动、云服务器简介、NGINX配置部署前端)

    本文章转载于公众号:王清江唷,仅用于学习和讨论,如有侵权请联系 QQ交流群:298405437 本人QQ:4206359 当我们下载好了Ruoyi-Vue之后,我们得到一个文件夹,如下: 内部又有若干文件,如下: 这里面不仅包括了后端程序(基于SpringBoot的Java程序),也包括前端程序(基于Vue的程

    2024年02月03日
    浏览(76)
  • 使用Matlab、Opencv、Ros三种方法完成相机标定

    1、相机标定的意义         在机器视觉领域,相机的标定是一个关键的环节,它决定了机器视觉系统能否有效的定位,能否有效的计算目标物。相机标定意义在于将现实世界中的三维物体与相机图像对应的二维物体映射起来,实际上就是透视投影。 2、相机标定原理   

    2024年04月13日
    浏览(61)
  • ROS Noetic版本 rosdep找不到命令 不能使用的解决方法

       使用rosdep指令来安装开源包所需的依赖是很方便的,本文主要介绍ROS Noetic版本中使用rosdep,报错找不到命令 ,rosdep不能使用的解决方法。    rosdep:找不到命令    在我之前的文章《详细介绍如何在ubuntu20.04中安装ROS系统,超快完成安装(最新版教程)》中安装ROS

    2024年02月14日
    浏览(71)
  • ubuntu下自启动设置,为了开机自启动launch文件

    每隔5秒钟启动一个launch文件,也可以直接在一个launch文件中启动多个,这里为了确保启动顺利,添加了一些延时 (1)、进入主菜单界面在搜索框中输入startup applications (2)、按照如下提示,加入后重启启动即可实现自启动

    2024年02月10日
    浏览(44)
  • 【PX4仿真】使用PX4+Gazebo+MAVROS+ROS进行无人机仿真中提高IMU消息频率的方法

    在无人机仿真中,IMU(惯性测量单元)消息频率对于路径规划和感知的仿真至关重要。然而,在使用PX4+Gazebo+MAVROS+ROS进行仿真时,可能会遇到频率受限的情况。本文将介绍如何提高IMU消息频率。 通过以下命令可以查看到IMU消息的发布频率 通常情况下固定在50Hz。 然而,通过

    2024年04月14日
    浏览(107)
  • iOS启动优化之——如何使用Xcode Log、App Launch、代码来计算启动时间 Launch Time

    在iOS启动优化之——如何使用MetricKit 来计算启动时间 Launch Time ,我们提到,可以使用MetricKit 在Organizer中或者直接代码统计,那么还能用什么来统计呢? Xcode曾经提供了一些环境变量比如DYLD_PRINT_STATISTICS来提供时间统计(参考Xcode 动态库环境变量——不止DYLD_PRINT_STATISTICS),

    2023年04月25日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包