当前位置: 首页 > news >正文

【ROS2学习笔记】节点篇:节点概述

前言

本系列博文是本人的学习笔记,自用为主,不是教程,学习请移步其他大佬的相关教程。主要学习途径为@鱼香ROS大佬的教程,欢迎各位大佬交流学习,若有错误,轻喷。

一、ROS2 节点是什么?—— 核心概念

节点是 ROS2 中负责单一模块化功能的 “小模块”,就像机器人的 “小分工”,一个节点只干一件具体的事,避免功能混乱。举个例子:

  • 节点 1:专门控制车轮转动(让机器人动起来)
  • 节点 2:专门从激光雷达读取原始数据(“眼睛” 看世界)
  • 节点 3:专门处理激光雷达数据(比如去掉噪声,让数据更准)
  • 节点 4:专门负责机器人定位(知道自己在哪)

二、节点之间怎么 “说话”?——4 种通信方式

不同节点要配合工作(比如 “读激光数据” 的节点,要把数据传给 “处理激光数据” 的节点),就需要 “通信”。ROS2 已经自带 4 种通信方式,不用我们自己造轮子:

  1. 话题(topics)
  2. 服务(services)
  3. 动作(Action)
  4. 参数(parameters)

💡 小贴士:这 4 种方式的具体用法和代码实现,后面会在后续内容学习,现在先记住 “节点靠这 4 种方式交互” 就行。

三、怎么启动一个节点?—— 实操指令

知道了节点是什么,接下来动手启动一个节点感受下!

1. 核心指令格式

ros2 run <package_name> <executable_name>
  • 指令意思:启动某个 “包”(package)里的 “可执行文件”(executable)对应的节点(注:“包” 和 “工作空间” 的概念下一节学,现在先跟着操作)

2. 实际例子:启动小乌龟模拟器节点

最典型的 “小乌龟” 例子实操,指令如下:

ros2 run turtlesim turtlesim_node

运行后会弹出一个窗口,里面有一只小乌龟 —— 这就说明节点启动成功啦!

四、怎么查看节点信息?——ROS2 命令行工具(CLI)

启动节点后,我们需要知道 “当前有哪些节点”“节点的详细信息”,这就需要用命令行界面(CLI) 。

1. 先搞懂:CLI vs GUI

  • GUI(图形用户界面):就是我们平时用的 Windows/macOS 可视化界面,用鼠标点按钮操作(比如打开文件夹)。
  • CLI(命令行界面):就是 “黑框框” 终端,通过输指令操作。对机器人学习来说,CLI 更灵活、效率更高。

2. 常用的节点相关 CLI 指令

整理成表格,方便记和查:

指令格式作用示例
ros2 run <package_name> <executable_name>启动节点(常用)ros2 run turtlesim turtlesim_node(启动小乌龟节点)
ros2 node list查看当前所有节点的列表(常用)运行后会显示类似 /turtlesim 的节点名
ros2 node info <node_name>查看某个节点的详细信息(常用)ros2 node info /turtlesim(查看小乌龟节点的信息,会显示它的通信关系)
ros2 run <包名> <可执行文件名> --ros-args --remap __node:=<新节点名>重命名节点(比如不想用默认名)ros2 run turtlesim turtlesim_node --ros-args --remap __node:=my_turtle(把小乌龟节点名改成my_turtle
ros2 run <包名> <可执行文件名> --ros-args -p <参数名>:=<参数值>启动节点时设置参数ros2 run example_parameters_rclcpp parameters_basic --ros-args -p rcl_log_level:=10(设置日志级别参数为 10)

五、本章重点总结

  1. 节点核心:一个节点负责一个单独的模块化功能,比如读激光数据、控车轮。
  2. 节点交互:靠 ROS2 自带的 4 种方式 —— 话题、服务、动作、参数(后面学代码)。
  3. 启动节点:用 ros2 run <包名> <可执行文件名>,例子:启动小乌龟 ros2 run turtlesim turtlesim_node
  4. 查看节点:记住 3 个常用 CLI 指令 ——ros2 node list(看列表)、ros2 node info <节点名>(看详情)、--remap __node:=新名(重命名)。
  5. 下一节内容:学习 “工作空间” 的概念(搞懂 “包” 是什么)。
http://www.dtcms.com/a/414754.html

相关文章:

  • Java面试宝典:网络协议与Netty二
  • 自然语言处理(01)
  • 如何利用模板 + 继承的方式,形成动态多态的效果呢?
  • UE_ContrlRig
  • 江苏省城乡住房建设厅网站网站建设及维护流程图
  • ubuntu18.04安装五笔字型的方法
  • 上市公司网站建设要求成都丁香人才网官网专区
  • AI 原生应用:内容创作从 “手工作坊” 到 “智能工厂” 的革命
  • AIGC实战——交互式生成对抗网络(iGAN)
  • Scikit-learn Python机器学习 - 聚类分析算法 - DBSCAN(基于密度的噪声应用空间聚类)
  • PyTorch 实战:CIFAR-10 图像分类与网络优化
  • STM32H743-ARM例程10-WWDG
  • STM32H743-ARM例程9-IWDG看门狗
  • 什么是 mmdet3d
  • 建设银行嘉兴分行网站首页胶州网站建设dch100
  • Metal - 9. 深入剖析 3D 场景
  • 3DVG的当前面临的挑战和问题
  • 无代码企业网站开发网站建设管理和维护
  • 【C++】string类的常见接口的使用
  • 网站建设制作设计营销公司杭州亚马逊雨林探险作文
  • 东莞圆心科技网站开发哪里有做网站系统
  • 网站定位要点 有哪些方面大航母网站建设费用
  • iServer 启动端口冲突
  • 大连网站建设佳熙科技湖南专业seo优化公司
  • 单词配对记忆游戏小程序V1.1.0-“太空霓虹“视觉升级版
  • 如何解决 pip install 安装报错 ModuleNotFoundError: No module named ‘onnxruntime’ 问题
  • 设备租赁结算软件有哪些
  • 全网首先 Docker Compose 启动Postgresql18
  • 公司网站非响应式模板网站建设包括内容
  • 180课时吃透Go语言游戏后端开发5:Go语言中的条件语句