ROS运行文件(LaunchFile)和参数(Parameter)

2024-05-30 12:36

本文主要是介绍ROS运行文件(LaunchFile)和参数(Parameter),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文主要介绍ROS的Launch File和Parameter概念,通过Launch File启动单个或多个节点,并通过Parameter配置启动参数。
更多内容,访问专栏目录获取实时更新。

当你的应用中包含了很多工作包,每个工作包了又包含了多个节点时,通过硬编码的方式在启动节点时传递参数显然不那么合适,同时要启动哪些节点,通过命令行指令一个个执行启动也必然会有很多麻烦,通过ROS Parameter Server 和 Launch File就能帮助解决这些麻烦。

ROS Parameter

ros2 param list
ros2 param get <node_name> <parameter_name>

通过上面的指令我们能查看每个节点的Parameter及其详细信息。

ros2 run <package_name> <node_name> --ros-args -p <parameter_name>:=<value>

通过上面的指令我们可以在运行节点时给节点的Parameter设置值。
在程序里,我们通过declear_parameter方法声明一个Parameter:
在这里插入图片描述
我们首先创建一个新的节点(参考教程:ROS2 Topics和Services),并为它添加一个Parameter,在启动该节点时传递Parameter的值:

#!/usr/bin/env python3
import rclpy
from rclpy.node import Node
from std_msgs.msg import Int64class NumberPublisherNode(Node):def __init__(self):super().__init__("number_publisher")self.declare_parameter("number_to_publish")self.number = self.get_parameter("number_to_publish").valueself.publisher = self.create_publisher(Int64, "number", 10)self.timer = self.create_timer(1, self.publish_number)self.get_logger().info("Number Publisher has been started!")def publish_number(self):msg = Int64()msg.data = self.numberself.publisher.publish(msg)def main(args=None):rclpy.init(args=args)node = NumberPublisherNode()rclpy.spin(node)rclpy.shutdown()if __name__ == "__main__":main()

修改setup.py,编译并运行该节点,通过命令行传递Parameter的值,可以看到如下的效果:
在这里插入图片描述

Launch File

在工作空间下创建一个新的工作包my_robot_bringup
在这里插入图片描述
在新的工作包下我们新建了launch文件夹,在该文件夹下创建我们的启动文件:
number_app.launch.py:
在这里插入图片描述

注意:函数名必须是generate_launch_description

更多启动配置:

number_publisher_node = Node(package="my_py_pkg",executable="number_publisher",name="my_number_publisher",  # rename noderemappings=[  # remap topicremap_number_topic],parameters=[  # provide parameter{"number_to_publish": 4},{"publish_frequency": 1},])

修改CMakeLists.txt,添加下面的指令:

install(DIRECTORYlaunchDESTINATION share/${PROJECT_NAME}
)

因为我们需要启动my_py_pkg工作包下的节点,所以在package.xml中,需要添加执行依赖:

<exec_depend>my_py_pkg</exec_depend>

编译并执行,通过ros2 node list就可以看到Launch文件里的两个节点都被启动了

ros2 launch my_robot_bringup number_app.launch.py
如有错误,欢迎留言或来信指正:hbin6358@163.com

这篇关于ROS运行文件(LaunchFile)和参数(Parameter)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Java通过反射获取方法参数名的方式小结

《Java通过反射获取方法参数名的方式小结》这篇文章主要为大家详细介绍了Java如何通过反射获取方法参数名的方式,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、前言2、解决方式方式2.1: 添加编译参数配置 -parameters方式2.2: 使用Spring的内部工具类 -

通过prometheus监控Tomcat运行状态的操作流程

《通过prometheus监控Tomcat运行状态的操作流程》文章介绍了如何安装和配置Tomcat,并使用Prometheus和TomcatExporter来监控Tomcat的运行状态,文章详细讲解了... 目录Tomcat安装配置以及prometheus监控Tomcat一. 安装并配置tomcat1、安装

mysqld_multi在Linux服务器上运行多个MySQL实例

《mysqld_multi在Linux服务器上运行多个MySQL实例》在Linux系统上使用mysqld_multi来启动和管理多个MySQL实例是一种常见的做法,这种方式允许你在同一台机器上运行多个... 目录1. 安装mysql2. 配置文件示例配置文件3. 创建数据目录4. 启动和管理实例启动所有实例

IDEA运行spring项目时,控制台未出现的解决方案

《IDEA运行spring项目时,控制台未出现的解决方案》文章总结了在使用IDEA运行代码时,控制台未出现的问题和解决方案,问题可能是由于点击图标或重启IDEA后控制台仍未显示,解决方案提供了解决方法... 目录问题分析解决方案总结问题js使用IDEA,点击运行按钮,运行结束,但控制台未出现http://

解决Spring运行时报错:Consider defining a bean of type ‘xxx.xxx.xxx.Xxx‘ in your configuration

《解决Spring运行时报错:Considerdefiningabeanoftype‘xxx.xxx.xxx.Xxx‘inyourconfiguration》该文章主要讲述了在使用S... 目录问题分析解决方案总结问题Description:Parameter 0 of constructor in x

解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题

《解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题》文章详细描述了在使用lombok的@Data注解标注实体类时遇到编译无误但运行时报错的问题,分析... 目录问题分析问题解决方案步骤一步骤二步骤三总结问题使用lombok注解@Data标注实体类,编译时

Python调用另一个py文件并传递参数常见的方法及其应用场景

《Python调用另一个py文件并传递参数常见的方法及其应用场景》:本文主要介绍在Python中调用另一个py文件并传递参数的几种常见方法,包括使用import语句、exec函数、subproce... 目录前言1. 使用import语句1.1 基本用法1.2 导入特定函数1.3 处理文件路径2. 使用ex

MySQL中时区参数time_zone解读

《MySQL中时区参数time_zone解读》MySQL时区参数time_zone用于控制系统函数和字段的DEFAULTCURRENT_TIMESTAMP属性,修改时区可能会影响timestamp类型... 目录前言1.时区参数影响2.如何设置3.字段类型选择总结前言mysql 时区参数 time_zon

Python如何使用seleniumwire接管Chrome查看控制台中参数

《Python如何使用seleniumwire接管Chrome查看控制台中参数》文章介绍了如何使用Python的seleniumwire库来接管Chrome浏览器,并通过控制台查看接口参数,本文给大家... 1、cmd打开控制台,启动谷歌并制定端口号,找不到文件的加环境变量chrome.exe --rem

Linux中Curl参数详解实践应用

《Linux中Curl参数详解实践应用》在现代网络开发和运维工作中,curl命令是一个不可或缺的工具,它是一个利用URL语法在命令行下工作的文件传输工具,支持多种协议,如HTTP、HTTPS、FTP等... 目录引言一、基础请求参数1. -X 或 --request2. -d 或 --data3. -H 或