新闻详情

新闻详情

首页 / 资讯中心 / 详情

rclcpp常用功能

发布时间:2026/9/22 13:43:18来源:尧图网络
rclcpp常用功能
提示文章写完后目录可以自动生成如何生成可参考右边的帮助文档rclcpp常用的类模板和函数前言一、rclcpp是什么二、rclcpp有哪些1.节点类Node2.发布器模板类Publisher3.订阅器模板类Subscription4.服务Service5.定时器Timer6.执行器Executor7.初始化init()8.事件循环spin()9.关闭ROS2shutdown()10.日志Logger11.时间Time12.参数Parameter总结前言记录第一天写ROS2学习笔记可以把 rclcpp理解成 ROS2 给 C 提供的一个大型工具箱里面主要包含节点类Node通信类Publisher、Subscription、Client、Service定时器Timer执行器Executor初始化和运行函数init、spin 等日志系统Logger时间和参数系统Time、Parameter提示以下是本篇文章正文内容下面案例可供参考一、rclcpp是什么rclcpp 本身不是一个类class而是一个命名空间namespace相当于c中的一个大文件夹或者包名同理std也是一个命名空间。为什么要命名空间呢比如当我写的如下程序classNode{};voidinit();如果你的程序也写了classNode{};voidinit();就会产生冲突。二、rclcpp有哪些1.节点类Noderclcpp::Node 创建节点的用法classMyNode:publicrclcpp::Node#先继承{public:MyNode():Node(my_node){//先初始化父类节点名字为my_node再执行My_node自己的构造函数}};// 等价于autonodestd::make_sharedrclcpp::Node(my_node);//现实中机器人系统中摄像头节点、激光雷达节点都是如此2.发布器模板类PublisherROS2要发很多种消息例如发送字符串、发速度、发图片等等相当于生活中的广播站广播站收集信息再发给所有收音机Publisher充当的就是这个角色。Publisher↓一个专门发送 Twist 消息的广播站对象SharedPtr↓指向广播站对象的智能指针create_publisher()↓创建广播站并绑定 Topicpublish(msg)↓把消息广播出去模板templatetypenameMessageTclassPublisher;使用rclcpp::Publishergeometry_msgs::msg::Twist::SharedPtr cmd_pub_;创建cmd_pub_create_publishergeometry_msgs::msg::Twist(/cmd_vel,10);发布geometry_msgs::msg::Twist msg;msg.linear.x0.5;cmd_pub_-publish(msg);3.订阅器模板类Subscription接收消息。rclcpp::Subscriptionstd_msgs::msg::String::SharedPtr sub_;创建sub_create_subscriptionstd_msgs::msg::String(/topic,10,std::bind(MyNode::callback,this,std::placeholders::_1));回调voidcallback(conststd_msgs::msg::String::SharedPtr msg){RCLCPP_INFO(get_logger(),%s,msg-data.c_str());}4.服务Service同步请求响应。例如客户端帮我算 23服务器结果是5服务器rclcpp::Serviceexample_interfaces::srv::AddTwoInts::SharedPtr service_;客户端rclcpp::Clientexample_interfaces::srv::AddTwoInts::SharedPtr client_;5.定时器Timer周期执行任务。rclcpp::TimerBase::SharedPtr timer_;创建timer_create_wall_timer(std::chrono::milliseconds(100),std::bind(MyNode::timer_callback,this));6.执行器Executor负责调度回调函数。单线程rclcpp::executors::SingleThreadedExecutor多线程rclcpp::executors::MultiThreadedExecutor类比 Publisher、Subscription、Timer像员工。 Executor像调度员。 Timer回调 Subscription回调 Service回调 ↓ Executor ↓ CPU执行7.初始化init()初始化 ROS2。rclcpp::init(argc,argv);类比像HAL_Init();先把整个框架启动起来。8.事件循环spin()进入事件循环。rclcpp::spin(node);9.关闭ROS2shutdown()关闭 ROS2。rclcpp::shutdown();释放资源。10.日志Logger输出信息。RCLCPP_INFO(this-get_logger(),Hello);还有RCLCPP_WARN()RCLCPP_ERROR()RCLCPP_DEBUG()RCLCPP_FATAL()类比相当于printf();但是有颜色有时间戳有节点名可以过滤日志等级11.时间Timerclcpp::Time rclcpp::Clock获取时间this-get_clock()-now();类比像millis()12.参数Parameter声明declare_parameter(speed,0.5);读取doublespeedget_parameter(speed).as_double();类比像doublespeed0.5;总结提示这里对文章进行总结按照这个顺序后面学习 Nav2、MoveIt2、机器人控制框架时会感觉所有东西都是在这些 rclcpp 基础类上搭起来的。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

TeamAI:基于Git的知识图谱CLI,实现团队经验自动传承 2026/9/23 3:38:35

TeamAI:基于Git的知识图谱CLI,实现团队经验自动传承

1. 项目概述:这不是又一个CLI工具,而是一套团队知识沉淀的自动化流水线“腾讯开源的AI管理的瑞士军刀:让团队经验自动传承”——这个标题里藏着三个被绝大多数人忽略的关键信号:“AI管理”不是“用AI写代码”,而是“让…

阅读更多 →
Obsidian、思源、Logseq怎么选?双向链接知识网络搭建指南 2026/9/23 3:38:35

Obsidian、思源、Logseq怎么选?双向链接知识网络搭建指南

知识管理这件事,我折腾了差不多五年。从最早用文件夹套文件夹的原始方式,到后来尝试各种笔记软件,再到现在稳定使用双向链接构建个人知识网络,中间踩过的坑足够写一本小册子。很多人问我:到底该选哪个工具?…

阅读更多 →
小橡皮AI去痕迹与风控检测:AI文案过原创限流的实操指南 2026/9/23 3:38:35

小橡皮AI去痕迹与风控检测:AI文案过原创限流的实操指南

1. 小橡皮 AI 到底在解决什么痛点新媒体文案这个行当,这两年最大的变化不是平台算法,而是"稿子从哪来"。我身边做公众号、小红书、短视频脚本的朋友,十个里有八个在用 AI 打初稿。效率确实上来了,但新的麻烦也跟着来了&…

阅读更多 →
苹果1905面试避坑:从报错到通关的保姆级教程 2026/9/23 3:38:29

苹果1905面试避坑:从报错到通关的保姆级教程

苹果1905面试避坑:从报错到通关的保姆级教程 打开IDE,运行测试,屏幕瞬间被红字刷屏。那串长长的 StackTrace…

阅读更多 →
rvpn 避坑指南:3个真实项目拆解,附完整示例代码 2026/9/23 3:38:28

rvpn 避坑指南:3个真实项目拆解,附完整示例代码

rvpn 避坑指南:3个真实项目拆解,附完整示例代码 学会语法却不知怎么搭项目?这是 90% 初学者的死穴。很多人背熟了 rvpn 的 API,却在实战中因为选型错误导致重构。今天不聊虚的,直接上 完整示例 ,通过 3…

阅读更多 →
NX二次开发CustomFeature测试全流程:从特征注册到参数更新避坑指南 2026/9/23 3:38:28

NX二次开发CustomFeature测试全流程:从特征注册到参数更新避坑指南

简介:面向NX二次开发C工程师的技术笔记,聚焦CustomFeature(用户自定义特征)从实现原理到实际排错的完整路径。内容先梳理核心库与界面库的职责分工,再逐项说明CustomFeatureConfiguration.xml中FeatureClass、FeatureN…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞