ROS 2基础概念#2:节点(Node)| ROS 2学习笔记

ROS 2节点简介

节点是执行计算的进程。节点组合在一起形成一个图(graph),并使用主题(topic)、服务(service)和参数服务器(paramter server)相互通信。这些节点旨在以细粒度的规模运行;机器人控制系统通常包含许多节点。例如,一个节点控制激光测距仪,一个节点控制机器人的轮式电机,一个节点执行定位,一个节点执行路径规划,一个节点提供系统的图形视图,等等。

ROS 中节点的使用为整个系统带来了多种好处。由于崩溃被隔离到各个节点,因此具有额外的容错能力。与单片系统相比,代码复杂性降低了。实现细节也被很好地隐藏,因为节点向图的其余部分公开了最小的 API,并且即使在其他编程语言中,也可以轻松替换替代实现。

所有正在运行的节点都有一个图形资源名称,用于向系统的其余部分唯一标识它们。例如,/hokuyo_node可以是广播激光扫描的 Hokuyo 驱动程序的名称。节点还有一个节点类型,它简化了引用文件系统上可执行节点的过程。这些节点类型是包资源名称,其中包含节点包的名称和节点可执行文件的名称。为了解析节点类型,ROS 会搜索包中具有指定名称的所有可执行文件,并选择找到的第一个。因此,您需要小心,不要在同一包中生成具有相同名称的不同可执行文件。

ROS 节点是使用ROS 客户端库(rcl,例如roscpp或rospy)编写的。

ROS 2在设计上采用了一些关键的改进和更新,特别是在节点(nodes)的实现和通信机制方面。在ROS 2中,节点依然是构建和运行机器人应用的基本单元,但与ROS 1相比,它们在多个方面有了显著的改进。

ROS 2节点改进和新特性

1. 改进的通信机制

ROS 2采用了DDS(Data Distribution Service)作为底层的中间件,这是一项面向实时系统的通信标准。与ROS使用的基于TCP/IP的通信相比,DDS提供了更高的性能、更好的可靠性和更灵活的消息传输模式(包括点对点和发布/订阅)。这使得ROS 2能够更好地支持大规模分布式系统和实时应用。

2. 节点自动发现机制

在ROS1中,节点自动发现机制依赖于一个名为ROS Master的中心化名称服务。ROS Master允许节点在启动时注册自己,并发现其他节点,以便它们可以相互通信。ROS Master充当了节点发现的中心节点,同时也带来了更多的可靠性的问题:当ROS Master崩溃的时候,整个系统也将无法工作。

而ROS2则因为采用了基于DDS(Data Distribution Service)的分布式消息传递系统,节点使用DDS的发现协议自动发现彼此,无需中心化的ROS Master。这种方式更加适合分布式系统,提高了系统的可扩展性和容错性。

3. 节点生命周期管理

ROS 2引入了节点生命周期的概念,这是一种管理节点状态(如初始化、激活、停止等)的机制。这允许系统以更可控和可预测的方式管理资源和行为,特别是在需要高度可靠性的应用中。节点生命周期管理还简化了错误处理和系统恢复,提高了系统的整体稳定性和可维护性。

4. 增强的安全性

ROS 2引入了一套安全增强功能,称为SROS(Secure ROS)。这些功能包括节点认证、加密通信和访问控制,可以有效保护机器人系统免受恶意攻击。在机器人越来越多地被应用于安全敏感的环境中,如家庭、医疗和公共空间,这些安全特性变得尤为重要。

5. 实时支持

通过利用DDS的实时通信能力,ROS 2被设计为可以支持实时应用。这意味着开发者可以创建能够满足特定时间约束的节点和系统,这对于控制和其他需要快速响应的任务至关重要。ROS 2还提供了实时调度和内存管理的工具,帮助开发者优化其应用的实时性能。

6. 跨平台支持

ROS 2旨在支持更广泛的操作系统和平台,包括Windows、Linux和macOS,甚至是嵌入式平台。这是通过使用更加便携的代码和依赖项,以及提供对不同操作系统特有功能的抽象来实现的。这种跨平台支持使得ROS 2能够应用于更多种类的机器人项目和环境中。

节点命令行工具

在ROS 2中,提供了一系列命令行工具(CLI)用于管理节点(nodes),这些工具使得开发者可以方便地与ROS 2系统交互,执行各种操作,如列出活动节点、获取节点信息、以及终止节点等。以下是一些主要的ROS 2命令行工具和它们的用途:

启动节点

ros2 run是用于启动ROS 2节点的命令。使用方法:

ros2 run [package_name] [executable_name]

管理节点

ros2 node是一个用于节点管理的命令行工具,它允许用户执行与节点相关的各种操作。

列出节点

要查看当前活动的节点,可以使用:

ros2 node list

这个命令会列出当前系统中所有活跃的节点名称。

获取节点信息

要获取特定节点的更多信息,如订阅的主题、发布的主题、提供的服务等,可以使用:

ros2 node info <node_name>

终止节点

在ROS 2中,直接终止节点的命令不像ROS 1中的rosnode kill那样直观。要终止一个节点,通常需要找到运行该节点的进程,然后使用系统命令(如kill在Linux上)来终止该进程。可以通过组合使用psgrep命令来查找节点的进程ID,然后使用kill命令终止它。

例如,如果你的节点名称包含talker,你可以使用以下命令查找并终止这个节点:

pgrep -f ros2.*talker

这将列出所有名称中包含talker的ROS 2节点的进程ID。然后,你可以使用kill命令加上进程ID来终止节点:

kill -SIGINT <process_id>

或者,如果想要终止所有匹配的进程,可以使用:

pkill -f ros2.*talker

作者Blog原文:ROS 2基础概念#2:节点(Node)| ROS 2学习笔记 - HY's Blog 

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

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

相关文章

防御安全(第六次作业)笔记整理

攻击可能只是一个点&#xff0c; 防御需要全方面进行 IAE引擎 DFI和DPI技术 --- 深度检测技术 DPI --- 深度包检测技术 --- 主要针对完整的数据包&#xff08;数据包分片&#xff0c;分段需要重组&#xff09; &#xff0c;之后对 数据包的内容进行识别。&#xff08;应用层&am…

Django学习笔记-查询及修改MySQL数据库表的所有信息

1.在index中添加一个按钮,用于查询数据 2.urls配置find 3.views定义find,获取PopulationModel模型所有数据渲染到show.html页面上 4.创建show.html,遍历modellist的数据渲染到表格中显示 5.点击查询后页面显示如下 6.添加修改按钮,点击按钮,执行update,urls配置update …

在实训云平台上配置云主机

文章目录 零、学习目标一、实训云升级二、实训云登录&#xff08;一&#xff09;登录实训云&#xff08;二&#xff09;切换界面语言&#xff08;三&#xff09;规划云主机实例 三、创建网络三、创建路由器2024-2-29更新到此四、添加接口五、创建端口六、添加安全组规则七、创建…

风速预测(七)VMD-CNN-BiLSTM预测模型

目录 往期精彩内容&#xff1a; 前言 1 风速 VMD 分解与可视化 1.1 导入数据 1.2 VMD分解 2 数据集制作与预处理 3 基于Pytorch的VMD CNN-BiLSTM 预测模型 3.1 定义VMD CNN-BiLSTM预测模型 3.2 设置参数&#xff0c;训练模型 4 模型评估与可视化 4.1 结果可视化 4.2…

【无监督学习之聚类】

曾梦想执剑走天涯&#xff0c;我是程序猿【AK】 目录 简述概要知识图谱1. K-Means聚类2. 层次聚类&#xff08;Hierarchical Clustering&#xff09;3. DBSCAN&#xff08;Density-Based Spatial Clustering of Applications with Noise&#xff09;4. 谱聚类&#xff08;Spect…

Java设计模式—— 模板方法模式

模板方法模式 1.什么是模板方法 模板方法模式&#xff1a;定义一个操作中的算法骨架&#xff08;父类&#xff09;&#xff0c;而将一些步骤延迟到子类中。 模板方法使得子类可以不改变一个算法的结构来重定义该算法的 2.什么时候使用模板方法 实现一些操作时&#xff0c;整…

【LeetCode】每日一题:使二叉树所有路径值相等的最小代价

该题采用自底向上的思路的话&#xff0c;很容易想到使用贪心的思想&#xff0c;但是如何进行具体操作却有些难度。 这里补充一个重要的结论&#xff1a;二叉树的数组形式中&#xff0c;第i个节点的父节点是i/2&#xff1b;接下来只需要让自底向上让每个路径上的代价保持最低限…

音视频基础: I帧 P帧 B帧

音视频基础: I帧 P帧 B帧 I帧介绍 I 帧通常是每个 GOP的第一个帧&#xff0c;在音视频编码中&#xff0c;I帧&#xff08;Intra-coded frame&#xff09;是一种关键帧&#xff0c;它是独立于其他帧的帧&#xff0c;不依赖于其他帧来进行解码。I帧存储了完整的图像信息&#x…

初始Tomcat(Tomcat的基础介绍)

目录 一、Tomcat的基本介绍 1、Tomcat是什么&#xff1f; 2、Tomcat的配置文件详解 3、Tomcat的构成组件 4、Tomcat的顶层架构 5、Tomcat的核心功能 6、Tomcat的请求过程 一、Tomcat的基本介绍 1、Tomcat是什么&#xff1f; Tomcat 服务器是一个免费的开放源代码的Web …

返回静态数据

在Java项目中&#xff0c;往往不会一直返回某某数据&#xff0c;而是会返回一个静态页面&#xff0c;那么&#xff0c;如何正确返回一个静态页面呢&#xff1f;&#xff1f; 要想成功的返回一个静态页面前提是必须要有一个静态页面&#xff1a; <!DOCTYPE html> <ht…

基于大模型思维链(Chain-of-Thought)技术的定制化思维链提示和定向刺激提示的心理咨询场景定向ai智能应用

本篇为个人笔记 记录基于大模型思维链&#xff08;Chain-of-Thought&#xff09;技术的定制化思维链提示和定向刺激提示的心理咨询场景定向ai智能应用 人工智能为个人兴趣领域 业余研究 如有错漏欢迎指出&#xff01;&#xff01;&#xff01; 目录 本篇为个人笔记 记录基…

太气人了,腾讯云服务器又降价了,买贵了

腾讯云服务器多少钱一年&#xff1f;62元一年起&#xff0c;2核2G3M配置&#xff0c;腾讯云2核4G5M轻量应用服务器218元一年、756元3年&#xff0c;4核16G12M服务器32元1个月、312元一年&#xff0c;8核32G22M服务器115元1个月、345元3个月&#xff0c;腾讯云服务器网txyfwq.co…