news 2026/5/7 23:02:35

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/7 23:02:33

Java后端面试:核心基础考点,String、StringBuilder、StringBuffer 区别详解

前言String、StringBuilder、StringBuffer 是Java面试最基础、出场率最高的知识点。大部分面试官都会询问三者区别、底层原理、线程安全以及使用场景。我整理了一套完整的面试知识点&#xff0c;通俗易懂&#xff0c;适合面试复习&#xff0c;也适合新手巩固Java基础。一、三者…

作者头像 李华
网站建设 2026/5/7 22:55:42

runprompt:基于Dotprompt格式的命令行LLM提示词工程化与自动化工具

1. 项目概述&#xff1a;runprompt&#xff0c;一个让LLM提示词在命令行中“活”起来的工具 如果你和我一样&#xff0c;日常工作中需要频繁地与各种大语言模型&#xff08;LLM&#xff09;打交道&#xff0c;无论是用它们来生成代码、分析日志&#xff0c;还是处理文档&#…

作者头像 李华
网站建设 2026/5/7 22:48:07

CSS如何改变鼠标指针样式_使用cursor属性优化交互体验.txt

根本原因是数据库未启用外部口令存储支持&#xff0c;需在sqlnet.ora中配置SQLNET.AUTHENTICATION_SERVICES(EXTERNAL)和WALLET_LOCATION&#xff0c;并确保路径正确、权限合法、客户端环境重载。Oracle Wallet 创建后 sqlplus / db 仍提示密码错误&#xff1f;根本原因不是 wa…

作者头像 李华
网站建设 2026/5/7 22:36:30

5分钟免费搞定Steam游戏配置:Onekey智能自动化工具终极指南

5分钟免费搞定Steam游戏配置&#xff1a;Onekey智能自动化工具终极指南 【免费下载链接】Onekey Onekey Steam Depot Manifest Downloader 项目地址: https://gitcode.com/gh_mirrors/one/Onekey 还在为Steam游戏清单配置而烦恼吗&#xff1f;面对复杂的SteamTools和Gre…

作者头像 李华
网站建设 2026/5/7 22:29:06

TexTeller公式识别终极指南:从图片到LaTeX的一键转换

TexTeller公式识别终极指南&#xff1a;从图片到LaTeX的一键转换 【免费下载链接】TexTeller TexTeller can convert image to latex formulas (image2latex, latex OCR) with higher accuracy and exhibits superior generalization ability, enabling it to cover most usage…

作者头像 李华