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

ros2 从零开始19 使用 Node Interfaces 模板类(C++)

ros2 从零开始19 使用 Node Interfaces 模板类(C++)

前言

背景

并非所有ROS节点都一样! 就像类rclcpp::Node和类rclcpp_lifecycle::LifecycleNode不是来源同一个继承者,这意味着 ROS 开发者在编写一个以 ROS 节点指针为参数的函数时,可能会遇到类型的问题。 为解决这个问题,rclcpp包含应作为传统节点和生命周期节点传递函数的首选约定的模板类型rclcpp::NodeInterfaces<>。 这场ROS Con 2023闪电演讲简明扼要地总结了问题并解决了问题。 以下教程将教你如何将rclcpp::NodeInterfaces<>作为所有ROS节点类型提供可靠且紧凑的接口。

模板类rclcpp::NodeInterfaces<>为管理 ROS 2 中的节点接口提供了一种简洁高效的方式。 这在处理不同类型的 ,如rclcpp::Node和rclcpp_lifecycle::LifecycleNode,它们不共享同一继承树时尤其有用。

编者话,这个模板类将允许我们编写函数时,不用给不同的ROS节点入参编写不同的函数实现,即便它们的实现一样。

1. 利用SharedPtr访问节点信息

下面的例子,我们创建一个简单的节点SimpleNode和一个函数node_info,函数接收一个指针rclcpp::Node::SharedPtr作为入参,打印节点名称。

#include <memory> #include "rclcpp/rclcpp.hpp" void node_info(rclcpp::Node::SharedPtr node) { RCLCPP_INFO(node->get_logger(), "Node name: %s", node->get_name()); } class SimpleNode : public rclcpp::Node { public: SimpleNode(const std::string & node_name) : Node(node_name) { } }; int main(int argc, char * argv[]) { rclcpp::init(argc, argv); auto node = std::make_shared<SimpleNode>("Simple_Node"); node_info(node); }

输出:

[INFO][Simple_Node]: Node name: Simple_Node
http://www.jsqmd.com/news/773008/

相关文章:

  • 2026 年孟德尔·格林伯格分享 OurCar 开发经验:解决家庭共享汽车难题!
  • QQ自定义在线状态改在线源码
  • FastAPI 静态文件
  • 【2026实战】双栈协同:Python+Go混合架构完整实战
  • 解密TlbbGmTool:如何高效管理天龙八部单机版游戏数据的3个核心问题
  • XSLT 实例
  • VS3000芯片深度体验:除了传4K,它的USB和网络功能在视频会议里到底有多香?
  • 高频脉冲电源选购:高性价比靠谱产品筛选策略解析
  • Java 代码质量度量指标:评估代码质量的标准
  • FastAPI 安全认证
  • ComfyUI Manager:AI绘画插件的智能管家,5分钟打造高效创作环境
  • Fast-GitHub加速插件:3步解决国内GitHub访问难题的终极方案
  • 全面解决Kohya_ss安装问题的10个专业技巧:从环境配置到高效训练
  • runprompt:基于Dotprompt格式的命令行LLM提示词工程化与自动化工具
  • Botty终极指南:5步配置暗黑2重制版24小时自动化MF脚本
  • 读源码像读小说?试了 DeepWiki 和 Zread,我再也不想裸读 GitHub 了
  • Moodle自动化工具:零配置API客户端与AI助手集成实战
  • 终极ComfyUI-Manager完全指南:快速部署与高效管理自定义节点
  • Java后端面试:核心基础考点,String、StringBuilder、StringBuffer 区别详解
  • 别再死记硬背了!用Verilog手把手带你理解CRC校验的电路核心(附串行/并行实现代码)
  • 节后系统恢复中的技术操作:批量处理、数据一致性与人机协作
  • 做了一个 App Store 全球最低价查询工具:支持 App、订阅和内购价格对比
  • 打卡信奥刷题(3225)用C++实现信奥题 P8370 [POI 2001 R3] Goldmine
  • 2026年郑州装修公司推荐排名前十强,口碑好性价比高的靠谱公司盘点 - 速递信息
  • 本土化赋能:Gitee如何重塑中国开发者的代码托管体验
  • Mermaid Live Editor:如何用代码思维解决图表绘制的三大痛点?
  • BDInfo深度解析:蓝光光盘技术规格分析的完整解决方案
  • AISMM×ISO 27001×NIST RMF三模融合实践:一位CISO亲授的72小时风险响应加速方案
  • DayZ社区离线模式终极指南:打造专属末日生存实验室
  • 终极指南:如何用Python快速获取专业级金融数据