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内存分配与JVM参数详解(推荐)

《Java内存分配与JVM参数详解(推荐)》本文详解JVM内存结构与参数调整,涵盖堆分代、元空间、GC选择及优化策略,帮助开发者提升性能、避免内存泄漏,本文给大家介绍Java内存分配与JVM参数详解,... 目录引言JVM内存结构JVM参数概述堆内存分配年轻代与老年代调整堆内存大小调整年轻代与老年代比例元空

k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)

《k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)》本文记录在K8s上运行的MySQL/MariaDB备份方案,通过工具容器执行mysqldump,结合定时任务实... 目录前言一、获取需要备份的数据库的信息二、备份步骤1.准备工作(X86)1.准备工作(arm)2.手

Java -jar命令如何运行外部依赖JAR包

《Java-jar命令如何运行外部依赖JAR包》在Java应用部署中,java-jar命令是启动可执行JAR包的标准方式,但当应用需要依赖外部JAR文件时,直接使用java-jar会面临类加载困... 目录引言:外部依赖JAR的必要性一、问题本质:类加载机制的限制1. Java -jar的默认行为2. 类加

java -jar命令运行 jar包时运行外部依赖jar包的场景分析

《java-jar命令运行jar包时运行外部依赖jar包的场景分析》:本文主要介绍java-jar命令运行jar包时运行外部依赖jar包的场景分析,本文给大家介绍的非常详细,对大家的学习或工作... 目录Java -jar命令运行 jar包时如何运行外部依赖jar包场景:解决:方法一、启动参数添加: -Xb

eclipse如何运行springboot项目

《eclipse如何运行springboot项目》:本文主要介绍eclipse如何运行springboot项目问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目js录当在eclipse启动spring boot项目时出现问题解决办法1.通过cmd命令行2.在ecl

使用nohup和--remove-source-files在后台运行rsync并记录日志方式

《使用nohup和--remove-source-files在后台运行rsync并记录日志方式》:本文主要介绍使用nohup和--remove-source-files在后台运行rsync并记录日... 目录一、什么是 --remove-source-files?二、示例命令三、命令详解1. nohup2.

一文详解PostgreSQL复制参数

《一文详解PostgreSQL复制参数》PostgreSQL作为一款功能强大的开源关系型数据库,其复制功能对于构建高可用性系统至关重要,本文给大家详细介绍了PostgreSQL的复制参数,需要的朋友可... 目录一、复制参数基础概念二、核心复制参数深度解析1. max_wal_seChina编程nders:WAL

Spring Boot项目打包和运行的操作方法

《SpringBoot项目打包和运行的操作方法》SpringBoot应用内嵌了Web服务器,所以基于SpringBoot开发的web应用也可以独立运行,无须部署到其他Web服务器中,下面以打包dem... 目录一、打包为JAR包并运行1.打包为可执行的 JAR 包2.运行 JAR 包二、打包为WAR包并运行

Linux高并发场景下的网络参数调优实战指南

《Linux高并发场景下的网络参数调优实战指南》在高并发网络服务场景中,Linux内核的默认网络参数往往无法满足需求,导致性能瓶颈、连接超时甚至服务崩溃,本文基于真实案例分析,从参数解读、问题诊断到优... 目录一、问题背景:当并发连接遇上性能瓶颈1.1 案例环境1.2 初始参数分析二、深度诊断:连接状态与

史上最全nginx详细参数配置

《史上最全nginx详细参数配置》Nginx是一个轻量级高性能的HTTP和反向代理服务器,同时也是一个通用代理服务器(TCP/UDP/IMAP/POP3/SMTP),最初由俄罗斯人IgorSyso... 目录基本命令默认配置搭建站点根据文件类型设置过期时间禁止文件缓存防盗链静态文件压缩指定定错误页面跨域问题