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

[具身智能-678]:ROS2 功能包 = 动态库 + 可执行节点 + launch 文件 三合一!

一、一句话终极结论

绝大多数 ROS2 功能包,既是动态链接库(.so),又是独立可执行节点(程序)。

  • 动态库:给你写代码时调用(API)
  • 可执行节点:直接运行就能用(开箱即用)
  • launch 文件:一键启动多个节点

它们同时存在,不冲突!


二、用一张表彻底分清

形态是什么怎么用例子
动态链接库 (.so)提供 API、算法、类、函数你写代码#include调用tf2_ros,cv_bridge,nav2_core
独立可执行节点编译好的二进制程序直接ros2 run运行

robot_localization,

laser_filters,

nav2_planner

启动文件 (launch)配置脚本ros2 launch启动nav2_bringup,slam_toolbox

三、逐包举例说明(你马上就懂)

1.tf2

  • libtf2_ros.so→ 你写代码调用
  • 节点static_transform_publisher→ 直接运行发坐标

bash

运行

ros2 run tf2_ros static_transform_publisher 0 0 0 0 0 0 base_link laser

2.robot_localization

  • librobot_localization.so→ 算法核心
  • 节点ekf_nodeukf_node→ 直接运行定位融合

bash

运行

ros2 run robot_localization ekf_node --ros-args ...

3.Nav2

  • libnav2_core.solibnav2_controller.so→ 路径规划算法
  • 节点nav2_plannernav2_controllernav2_recoveries
  • 直接运行,不用写代码

4.cv_bridge

  • 纯库libcv_bridge.so
  • 没有可执行节点,只给你代码调用

5.laser_filters

  • :滤波算法
  • 节点scan_to_scan_filter_chain→ 直接运行过滤激光

6.slam_toolbox

  • :SLAM 算法
  • 节点slam_toolbox→ 直接运行建图

7.MoveIt2

  • :运动学、轨迹算法
  • 节点move_group→ 直接运行控制机械臂

四、最关键的底层真相(你必须懂)

1.功能包 = 库 + 工具 + 节点

一个 ROS2 包里面:

  • .cpp源码 → 编译成.so 动态库
  • main()函数 → 编译成可执行节点
  • .launch.py→ 启动脚本

2.库给开发者用,节点给使用者用

  • 写算法、二次开发→ 调用.so 库
  • 直接跑功能→ 运行可执行节点

3.所有库都是动态链接库

  • 所有 ROS2 功能包编译出来都是.so
  • 内存共享,不浪费空间
  • 你的节点程序运行时自动加载

五、最直白比喻(秒懂)

ROS2 功能包 = 手机 APP

  • 动态库 = APP 的内部功能代码
  • 可执行节点 = APP 图标,点开就能用
  • launch = 一键打开多个 APP

你可以:

  • 点开 APP 直接用(运行节点)
  • 也可以在自己的程序里调用 APP 功能(链接库)

六、最终总结(背下来)

  1. ROS2 功能包 = 动态库 + 可执行节点 + launch
  2. :给开发者写代码调用
  3. 节点:直接运行,开箱即用
  4. 所有库都是 .so 动态链接库
  5. 你的节点程序既可以调用库,也可以和其他节点通信
http://www.jsqmd.com/news/799506/

相关文章:

  • 从样式覆盖到版本升级:全面解析Antd表格固定列对齐问题的解决路径
  • 告别一堆转换头!一个自研小工具搞定USB、网口、485、232、TTL全互连(附配置软件)
  • ARM GIC中断控制器PPI配置与优先级设置详解
  • Fate/Grand Automata终极指南:如何用Android自动化脚本告别FGO枯燥刷本
  • 基于vue和微信小程序的校园自助打印系统(30293)
  • 可穿戴设备十年演进:从腕上手机到身体局域网与场景化体验
  • A64指令集LDAPURSH与LDAR内存访问机制解析
  • DES算法C++实现踩坑实录:S盒置换与比特操作的那些坑
  • 科技产业投资困局:国家安全与就业增长如何平衡?
  • Hack The Box注册失败?别慌,可能是你的‘上网姿势’不对(附最新可用方案)
  • 从建模到Debug:手把手用UPPAAL复现一个经典互斥算法,并学会分析反例
  • 嵌入式硬件设计实战:从芯片选型到系统稳定性的工程指南
  • 光纤偏振测量:从琼斯矢量到庞加莱球,六种工具深度解析与工程实践
  • 别再只用memcpy了!手把手教你用memcpy_s写出更安全的C语言代码(附VS2022实战)
  • N-gram模型过时了?从Siri的早期纠错到ChatGPT的基石,聊聊语言模型的‘古董’与‘新贵’
  • Android App启动速度下降37%?罪魁祸首竟是Gemini初始化策略——基于Systrace+Perfetto的17层调用栈根因定位
  • 立法强制技术目标为何违背工程创新规律?
  • 芯片设计失败经验共享:从文化壁垒到实践框架的行业变革
  • AI工具导航与实战指南:从分类体系到选型策略
  • 从苹果三星专利案看移动生态博弈:专利如何重塑产品创新与竞争格局
  • 微信视频下载器wx_channels_download
  • GLB纹理提取工具:原理、应用与Python实现详解
  • 博彩业资助STEM教育:短期融资的诱惑与长期发展的陷阱
  • 一文讲透 MCP:概念、原理、架构与应用全解析
  • CQDs-PEG/Biotin/@SiO2/Polymer,PEG修饰碳量子点的特性
  • 开源脑机接口数据处理框架OpenCeph:模块化设计、核心技术与实战应用
  • 经验小波变换(EWT):从理论基石到信号分解实战
  • 量子机器学习在网络安全中的应用与性能分析
  • 云原生本地开发新范式:LDLT方法论与实践指南
  • 别再导错了!CGCS2000坐标CSV导出,WKT和常规格式这样选