尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
ROS2机器人开发入门|第3课:ROS2核心概念:Node(节点)
1. 前言上一课我们介绍了ROS2的版本信息了解到Humble是过去几年和当前的主流版本存量项目比较大同时也了解到Jazzy是官方当前主推的版本在实际应用中行业里的新项目已采用Jazzy版本。可以预见Jazzy是今后几年主流的版本基于此后面的课程我们以Jazzy为基础进行讲解。2. ROS2五大核心概念ROS2系统由多个节点组成节点之间通过不同通信方式交换数据。2.1准备工作配置环境2.1.1执行Source命令目的是加载ROS2系统级别的环境变量source/opt/ros/jazzy/setup.bash2.1.2将source命令加到shell启动脚本可省去每次执行上面的SOURCE操作echosource /opt/ros/jazzy/setup.bash~/.bashrc2.1.3检查环境变量printenv|grep-iROS2.2Node 节点ROS 中的每个节点都应负责单一的模块化功能例如控制车轮电机或发布来自激光测距仪的传感器数据。一个节点本质上就是一个进程。每个节点都可以通过主题、服务、动作或参数与其他节点发送和接收数据。打个比方整个 ROS2 机器人系统像一个公司每个节点就是一个员工员工各司其职通过消息互相沟通而不是所有人挤在一个工位干活。上图中展示了3个节点之间发送和接收数据的方式,通过Service和Topic进行通信。一个完整的机器人系统由许多协同工作的节点组成。在 ROS 2 中一个可执行文件C 程序、Python 程序等可以包含一个或多个节点。2.2.1Node 相关命令ros2 run语法ros2 runpackage_nameexecutable_name[--ros-args 节点参数]我们以官方小海龟为例启动turtlesim 节点ros2 run turtlesim turtlesim_node这里软件包名称是turtlesim可执行文件名是turtlesim_noderos2 node list新打开一个终端查看节点列表ros2nodelist这里turtlesim就是节点名称查看节点信息语法ros2nodeinfonode_nameros2nodeinfo /turtlesimros2 node info返回订阅者、发布者、服务和操作的列表即与该节点交互的 ROS 图连接。节点重映射–ros-args --remap __node:new_node_name重映射 运行时 “改名字、改地址”不改源代码。相当于再“复制”一个具有相同属性的节点只是名字或所属空间不同而不用改源码。ros2 run turtlesim turtlesim_node --ros-args--remap__node:my_turtle–remap可以简写为-r即–remap-r-r __node:xxx 用来修改节点名称即上面的–remap __node:my_turtle还可以修改所属命令空间-r __ns:/xxx再次查看节点列表新打开一个终端重映射的用途如果不做重映射想要改节点名、改话题名你只能打开 cpp/python 代码、修改字符串、重新 colcon 编译remap 是启动时动态修改运行一次可以换一套名字。应用场景 1同一台机器同时启动多个相同节点比如机器人上有两个一模一样的雷达驱动节点驱动两个同型号激光雷达。驱动包是同一个 pkg、同一个可执行文件代码里节点名默认叫lidar_driver。直接启动第二个会报错节点重名。解决方案remap 修改节点名同时重映射话题# 雷达1ros2 run lidar_driver pkg_node --ros-args-r__node:lidar_left-r/scan:/scan_left# 雷达2ros2 run lidar_driver pkg_node --ros-args-r__node:lidar_right-r/scan:/scan_right应用场景 2多机器人集群多机、多车两台机器人 robot1、robot2硬件、软件包完全一样底盘驱动、IMU、导航包都是同一套。如果话题都是/cmd_vel、/odom两台机器人的消息会混在一起robot1 的速度指令会发给 robot2。解决方案使用命名空间重映射隔离# robot1底盘节点ros2 run chassis_driver driver_node --ros-args-r__ns:/robot1# robot2底盘节点ros2 run chassis_driver driver_node --ros-args-r__ns:/robot23.小结上面我们介绍了ROS2中节点的概念、基础命令行和一些应用场景这些是节点的最基础的知识点关于怎样创建节点我们在后面的课程中介绍。欢迎在欢迎在留言区发表意见。
RELATED

相关推荐

快降重理工科降AI技术:实证数据与推导逻辑的保护机制详解

快降重理工科降AI技术:实证数据与推导逻辑的保护机制详解

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/10/24 6:31:00
YimMenu:GTA V 防崩溃菜单,怎么编译注入、哪些功能敢开

YimMenu:GTA V 防崩溃菜单,怎么编译注入、哪些功能敢开

YimMenu:GTA V 防崩溃菜单,怎么编译注入、哪些功能敢开 【免费下载链接】YimMenu YimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience. 项目地址: https://gitcode.com/GitHub_Tren…

📅 2026/10/24 6:31:00
Visual Studio 添加万能头文件 bits/stdc++.h:从原理到配置全程指南

Visual Studio 添加万能头文件 bits/stdc++.h:从原理到配置全程指南

做算法题的朋友应该都有这个习惯:从题单里复制一道题目,打开 Visual Studio,第一件事不是读题,而是先伸手去敲开头那串#include。iostream、algorithm、vector、map、string、queue……少敲一个心里都不踏实,敲完了还要…

📅 2026/10/24 6:30:59
MORE NEWS

更多资讯

📰

宝塔面板下Aria2安装配置与AriaNg部署完整教程

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

Linux多线程压缩工具选型与实战:xz、zstd、7z、lrzip性能对比

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

原生JS实现锚点定位与Tab跟随:滚动监听、性能优化与移动端适配全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

PCA9422与PIC18F57K42低功耗电源管理方案设计与实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

基于PCA9422与STM32F413的多路电源管理方案实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

LAS点云分类实战:PointNet++训练全流程与语义标签对齐

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬