新闻详情

新闻详情

首页 / 资讯中心 / 详情

rclcpp常用功能

发布时间:2026/9/21 9:10:21来源:尧图网络
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

相关资讯

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

较早相关资讯

最新相关资讯

iPad太鼓达人音乐包速查手册:从源码看加载机制 2026/9/22 2:32:41

iPad太鼓达人音乐包速查手册:从源码看加载机制

iPad太鼓达人音乐包速查手册:从源码看加载机制 刚接触逆向工程或前端资源管理时,你是否也陷入过这样的困境:语法背得滚瓜烂熟,正则表达式倒背如流,但真到了要解析一个具体的游戏资源包,脑子一片空白?别慌,这正是“学会语法却不知怎么搭项目”的典…

阅读更多 →
5fzll 入门到精通:3 个让新手崩溃的坑 2026/9/22 2:32:16

5fzll 入门到精通:3 个让新手崩溃的坑

5fzll 入门到精通:3 个让新手崩溃的坑 刚学完 5fzll 基础语法,对着屏幕傻眼?别慌,我也是这么过来的。 很多新手卡在“代码能跑,项目搭不起来”,感觉离入门到精通还差十万八千里。 其实,90%…

阅读更多 →
Shp数据解析源码深挖 面试必问核心逻辑 2026/9/22 2:32:03

Shp数据解析源码深挖 面试必问核心逻辑

Shp数据解析源码深挖 面试必问核心逻辑 官方文档几百页看过去,脑子还是浆糊?别急,shp数据处理的底层逻辑其实就那几招。面试时问shp文件结构、坐标转换、多边形判定,90%的人答不全。今天直接扒开开源库的底裤,看核心代码怎么跑。…

阅读更多 →
3秒讲透袁崇焕评传源码架构与晋升避坑 2026/9/22 2:31:50

3秒讲透袁崇焕评传源码架构与晋升避坑

3秒讲透袁崇焕评传源码架构与晋升避坑 面试被问“袁崇焕评传”底层实现逻辑,你只能背诵剧情吗?别闹了,HR 和 CTO 要的是技术落地能力,不是历史考据。很多应届生拿着《袁崇焕评传》当简历项目,结果在白板前卡壳,连核心数据流转都说不清。…

阅读更多 →
3步搞定fulltest:保姆级教程带你从零搭项目 2026/9/22 2:31:25

3步搞定fulltest:保姆级教程带你从零搭项目

3步搞定fulltest:保姆级教程带你从零搭项目 很多刚毕业的朋友跟我吐槽,Python语法背得滚瓜烂熟,LeetCode刷了三百题,但真让他写个像样的项目,脑子瞬间一片空白。这种“只会写函数,不会搭架构”的困境,简直是新手入行的最大拦路…

阅读更多 →
HaRdEn避坑指南:3个维度选型不踩雷 2026/9/22 2:31:00

HaRdEn避坑指南:3个维度选型不踩雷

HaRdEn避坑指南:3个维度选型不踩雷 配置环境就卡半天,是不是让你怀疑人生?很多开发者在接入 HaRdEn 相关组件时,第一反应就是查教程,结果越查越乱,版本冲突、依赖缺失、权限报错接踵而至。这期我们直接上干货,一份针对 HaRdEn…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

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

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