ROS 2边学边练(9)-- 用launch命令管理启动项

概念

        我们在前面的ROS 2体验过程中,一直拿小海龟这个例子来练手,过程比较轻松,因为只有两个节点(/turtlesim和/teleop_turtle),只需打开两个终端,ros2 run 节点就ok,但,现实中的节点数目一般都会比较多,如果闲的没事做,那可以一个终端一个终端的ros2 run下去,正常思维应该都不会这么干(即使真有人这么做了,也比较容易出现遗漏情况),那到底如何管理这众多的节点启动问题呢?launch就是干这个的,它会根据启动文件(.py或.launch文件,里面可以包含我们要启动的节点等相关信息)将整个ROS系统(相关的所有节点包括配置文件等内容)拉起来。

动动手

launch小海龟

        本篇较为轻松,我们先感受下用launch方式启动两只小海龟:

$ros2 launch turtlesim multisim.launch.py

multisim.launch.py内容如下:

# turtlesim/launch/multisim.launch.pyfrom launch import LaunchDescription
import launch_ros.actionsdef generate_launch_description():return LaunchDescription([launch_ros.actions.Node(namespace= "turtlesim1", package='turtlesim', executable='turtlesim_node', output='screen'),launch_ros.actions.Node(namespace= "turtlesim2", package='turtlesim', executable='turtlesim_node', output='screen'),])

该份python写就的启动文件包含了命名空间(后面文章会涉及到)、功能包、节点等概念和内容,其会启动两个小海龟仿真节点(turtlesim,虽然名称一样,但因为是在不同的命名空间里面,所以允许这么干)。效果如下:

launch文件除了可以用python外,还可以用XML、YAML格式完成(关于launch文件内容我们后面文章会再次涉及,在rviz及gazebo中会在构造机器人结构中用到)。

控制小海龟(不要求)

下面我们再次打开两个终端,用来分别控制这两只小海龟游动(为了区分,我们让一个顺时针一个逆时针游动):

$ros2 topic pub  /turtlesim1/turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 1.8}}"
$ros2 topic pub  /turtlesim2/turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: -1.8}}"

本篇完。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/786622.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Datacom HCIP笔记-ISIS协议

IS中间系统(路由器/运行了ISIS协议的设备) ES终端系统(PC,PAD,print) 网络功能模型 ISO定义 事实标准 OSI TCP/IP 网络层(CLNP) (IS-IS) 网络…

EfficientVMamba实战:使用EfficientVMamba实现图像分类任务(一)

文章目录 摘要安装包安装timm 数据增强Cutout和MixupEMA项目结构编译安装Vim环境环境安装过程安装库文件 计算mean和std生成数据集 摘要 论文:https://arxiv.org/pdf/2401.09417v1.pdf 作者研究了轻量级模型设计的新方法,通过引入视觉状态空间模型&…

每天学习一个Linux命令之wget

每天学习一个Linux命令之wget 简介 在Linux系统中,wget是一个使用非常广泛的命令行工具,用于从网络上下载文件。无论是从简单的文件下载,还是通过递归下载整个网站,wget都能帮助你完成。本文将详细介绍wget命令的用法及其可用的…

Git、TortoiseGit、SVN、TortoiseSVN 的关系和区别

Git、TortoiseGit、SVN、TortoiseSVN 的关系和区别 (二)Git(分布式版本控制系统):(二)SVN(集中式版本控制系统)(三)TortoiseGit一、下载安装 git二、安装过程…

python如何处理文本错误

在python中,如果读取的文本文件不在程序的目录中,会提示FileNotFoundError 如果不能确定文本文件是否在目录中,可以用try except语句 代码如下 from pathlib import PathpathPath(alice.txt) try:contentspath.read_text(encodingutf_8) e…

Tomcat调优总结

Tomcat自身的调优是针对conf/server.xml中的几个参数的调优设置。首先是对这几个参数的含义要有深刻而清楚的理解。以tomcat8.5为例,讲解参数。 同时也得认识到一点,tomcat调优也受制于linux内核。linux内核对tcp连接也有几个参数可以调优。 因此可以将…

【C/C++】C语言实现串

C语言实现字符串 简单描述代码运行结果 简单描述 用codeblocks编译通过 源码参考连接 https://gitee.com/IUuaena/data-structures-c.git 代码 guistar_string.h #ifndef GUISTAR_STRING_H_INCLUDED #define GUISTAR_STRING_H_INCLUDED/*! brief 函数返回值枚举 */ typedef e…

scala实现通过Spark统计人均登录次数最终写入MySQL

谨以此博客作为记录 小编这里用的版本是&#xff1a; <hadoop.version>2.7.7</hadoop.version> <spark.version>2.4.5</spark.version> <scala.version>2.12.10</scala.version> 如果没用到Hadoop可以忽略 步骤 准备数据&#xff0c;知道…

C++面向对象程序设计 - 访问对象中成员的3种方法

在C程序中访问对象的成员变量和成员函数&#xff0c;有三种方法&#xff1a; 通过对象名和成员运算符访问对象中的成员&#xff1b;通过指向对象的指针访问对象中的成员&#xff1b;通过对象的引用变量访问对象中的成员 在了解访问对象中成员的3种方法前&#xff0c;先了解下C…

StarRocks部署

介绍 tarRocks 是新一代极速全场景 MPP (Massively Parallel Processing) 数据库。StarRocks 的愿景是能够让用户的数据分析变得更加简单和敏捷。用户无需经过复杂的预处理&#xff0c;就可以用 StarRocks 来支持多种数据分析场景的极速分析。 官网 ## 部署 https://docs.sta…

速盾:cdn加速接口会被劫持吗?

CDN&#xff08;Content Delivery Network&#xff09;加速接口是一种常用的网络加速技术&#xff0c;通过将静态资源分发到全球多个节点&#xff0c;提高资源的访问速度和稳定性。然而&#xff0c;随着互联网的发展&#xff0c;网络安全问题也日益突出&#xff0c;因此人们对于…

网络安全之IP地址证书的重要性

在数字化时代&#xff0c;网络空间已成为各类活动的重要载体&#xff0c;无论是商业交易、信息交流还是远程办公&#xff0c;都离不开互联网的支撑。然而&#xff0c;网络环境的开放性与匿名性也带来了安全风险&#xff0c;如何确保网络交互中的身份真实可信&#xff0c;成为了…

【御控物联】JSON结构数据转换在物联业务中应用(场景案例二)

文章目录 一、物联网业务场景现状二、物联网业务场景数据交互格式三、JSON格式数据转换案例四、JSON数据格式转换DEMO五、在线转换工具六、技术资料 一、物联网业务场景现状 目前&#xff0c;市场上多数物联网关与物联平台捆绑售卖&#xff0c;网关采集到设备数据只能按照指定…

Excel·VBA二维数组组合函数之穷举推理题

看到一个帖子《CSDN-求助一道推理题》&#xff0c;与之前《python穷举暴力破解《2018年刑侦推理题》用python穷举的推理题很类似 那么是否可以使用《ExcelVBA二维数组组合函数、组合求和》combin_arr2d函数&#xff0c;生成结果进行穷举呢&#xff1f; Sub 穷举推理题()Dim …

修改Gradio界面中按钮Submit、Clear,Flag为中文,修改additional_inputs标签。

展示如图 Submit、Clear、additional_inputs标签 Submit、Clear修改 修改gradio库中interface.py additional_inputs标签 同一文件下 flag修改 flag展示

壁纸小程序Vue3(自定义头部组件)

1.自定义头部 coustom-nav <view class"layout"><view class"navbar"><view class"statusBar"></view><view class"titleBar"><view class"title">标题</view><view class&qu…

卷积神经网络(CNN)的数学原理解析

文章目录 前言 1、介绍 2、数字图像的数据结构 3、卷积 4、Valid 和 Same 卷积 5、步幅卷积 6、过渡到三维 7、卷积层 8、连接剪枝和参数共享 9、卷积反向传播 10、池化层 11、池化层反向传播 前言 本篇主要分享卷积神经网络&#xff08;CNN&#xff09;的数学原理解析&#xf…

深入了解 Vue 3 中的 Transition 过渡动画

在本文中&#xff0c;我们将深入探讨 Vue 3 中实现 Transition 过渡动画的技术细节。过渡动画可以为用户界面增添平滑和生动的效果&#xff0c;提升用户体验。 首先新建一个基于uni-app框架为transition.vue的测试文件&#xff0c;在其中编写如下JavaScript、HTML和CSS代码&…

问题2-前端json数组数据转换成csv文件

代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>将 JSON 数据导出为 CSV 文件</title> …

局域网与城域网(练习题)

局域网与城域网 ⭐️⭐️⭐️⭐️ 红色标记为答案⭐️⭐️⭐️⭐️ ⭐️⭐️⭐️ 蓝色标记为要点解析⭐️⭐️⭐️ 1.以下关于VLAN标记的说法中&#xff0c;错误的是&#xff08;&#xff09;。 A.交换机根据目标地址和VLAN标记进行转发决策 B.进入目的网段时&#xff0c;交换机…