鱼香ros2(五)用C++编写节点
一、为什么用CPython是解释性语言其运行效率比较慢在实际的开发中并不占优势所以我们要使用C。插件安装二、用C编写文件ros2_cpp#include rclcpp/rclcpp.hpp include 导入以下每一行意义可以参考“鱼香ros2四……有相关介绍”int main(int argc,char **argv) int argc,char **argv是程序的入口参数{rclcpp::init(argc,argv); “::”这个是域名解析符init初始化argc还有argv后续在对节点信息进行操作时可以使用比如修改节点名字等auto nodestd::make_sharedrclcpp::Node(cpp_node); auto自动类型推导node变量名可以随便取一个创建rclcpp下的Node的共享指针cpp_node节点名称自定义RCLCPP_INFO(node-get_logger(),你好 C节点); 打印日志node上一步定义的变量名“”逗号后面跟打印内容rclcpp:spin(node);rclcpp::shutdown();return 0;}main函数里的参数argc及argv报错问题 #include rclcpp/rclcpp.hpp 找不到库但是iostream却能找到。因为iostream是系统默认库可以找到但是rclcpp不是系统库里的所以要将crlcpp库导入到我们的整个工程中来使用CMakeLists来处理。三、使用CMakeLists.txt来编译ros2_cpp1、CMakeLists.txt文件编写cmake_minimum_required(VERSION3.8)project(ros2_cpp)add_executable(ros2_cpp_node ros2_cpp_node.cpp)注意关于make后报错问题找不到文件rclcpp/rclcpp.hpp1) #查找rclcpp头文件和库文件的路径“REQUIRED”依赖是必须的find_package(rclcpp REQUIRED)#测试打印使用打印状态以下message()函数可以不加在txt文件里只是为了方便自己找信息使用的。“rclcpp_LIBRARIES”库文件及rclcpp依赖的库文件“rclcpp_INCULUDE_DIRS”头文件及rclcpp依赖的头文件如果 find_package(rclcpp REQUIRED) 不加则无法找到对应文件这也是为什么要使用find_package(rclcpp REQUIRED)的原因我们用的是rclcpp则需要去加载对应的头文件及库文件才能使用。message(STATUS ${rclcpp_INCLUDE_DIRS})message(STATUS ${rclcpp_LIBRARIES})2)#给可执行文件包包含头文件上一步找到对应文件后要将文件的路径给到我们的.cpp文件这样对应ros2_cpp_node.cpp文件才能使用rclcpp。“ros2_cpp_node”可执行文件名与你在上面编写的 add_executable(ros2_cpp_node ros2_cpp_node.cpp)第一个参数名一致。“${rclcpp_INCLUDE_DIRS}”头文件的路径。“PUBLIC”语法要求。target_include_directories(ros2_cpp_node PUBLIC ${rclcpp_INCLUDE_DIRS})这一句加了后我们的可执行文件ros2_cpp_node.cpp就添加了这个rclcpp_INCLUDE_DIRS头文件的依赖3#给可执行文件链接库文件链接库依赖也需要给到我们可执行文件。“ros2_app_node”可执行文件名。${rclcpp_LIBRARIES}链接库。target_link_libraries(ros2_app_node ${rclcpp_LIBRARIES})2、终端执行命令cmake .make有对应可执行文件了直接使用执行使用./ my_cpp_node (你自己取的什么名字就用什么名字)四、查看节点信息同上一节#查看节点列表当前执行的节点ros2 node list#查看某个节点信息ros2 node info /cpp_node五、其他注意事项1、必须修改CMakeLists.txt文件名为什么修改因为CMakeLists.txt文件会被接下来要学习的ros2构建工具搜索和误用为了接下来学习能够顺利进行需要将CMakeLists.txt文件删除或者换个名字。2、安装C插件插件安装后.cpp文件报错问题先点波浪线旁边黄色小灯泡按下图做选择在跳转页面找到“包含路径”框→输入安装ros2的目录 /opt/ros/humble/include/**配置好了就不会报错了而且还会生成一个.json的配置文件这个配置文件下一个项目的时候你可以直接复制过去就不需要手动配地址了。

相关新闻

【C数据结构】顺序表-概念与结构

【C数据结构】顺序表-概念与结构

【前置知识】线性表: n个具有相同特征的数据元素组成的有限序列 逻辑结构一定线性,物理结构不一定线性 常见线性表:顺序表、链表、栈、队列、字符串、数组… 顺序表: 物理结构线性,采用数组储存 静态顺序表:内存固定 #…

2026/9/16 7:42:07 阅读更多 →
uncompyle6反编译Python字节码:原理、安装与生产级还原指南

uncompyle6反编译Python字节码:原理、安装与生产级还原指南

简介:uncompyle6 是一个用于反编译 Python 字节码(.pyc 文件)为可读 Python 源代码的权威工具库,适用于逆向分析、教学演示、遗留代码恢复及调试辅助等场景,面向中高级 Python 开发者、安全研究人员与教育工作者。本资…

2026/9/16 7:42:07 阅读更多 →
PyPI源码包解压与构建:pytest-cloud离线部署全链路指南

PyPI源码包解压与构建:pytest-cloud离线部署全链路指南

简介:本资源是面向Python中高级开发者与云原生测试工程师的pytest-cloud测试框架源码包(v1.2.13),专为分布式系统与云环境下的自动化测试设计,解决微服务、容器化应用在ZooKeeper协调场景中跨节点测试难、环境一致性差…

2026/9/16 7:42:07 阅读更多 →

最新新闻

Electric Agents 移动端演进解析:React Native 客户端从 Cloud 接入到商店上架的完整技术路径

Electric Agents 移动端演进解析:React Native 客户端从 Cloud 接入到商店上架的完整技术路径

Electric Agents 移动端演进解析:React Native 客户端从 Cloud 接入到商店上架的完整技术路径 【免费下载链接】electric The agent platform built on sync. 项目地址: https://gitcode.com/GitHub_Trending/el/electric 本文以 packages/agents-mobile/CHAN…

2026/9/16 8:31:44 阅读更多 →
OpenClaw微信部署全指南:从环境配置到故障排查的实操笔记

OpenClaw微信部署全指南:从环境配置到故障排查的实操笔记

最近两周,我几乎把OpenClaw在微信上的部署方式踩了个遍:Windows离线整合包、Linux脚本源码安装、安卓Termux原生部署,全试过一轮才把坑摸清。如果你正打算把这套开源“龙虾”框架接到微信号上,又不想在环境依赖、二维码登录、网关…

2026/9/16 8:31:44 阅读更多 →
Unity UGUI聊天气泡自适应:自定义ContentSizeFitter实现宽度限制与自动换行

Unity UGUI聊天气泡自适应:自定义ContentSizeFitter实现宽度限制与自动换行

做聊天界面 UGUI 的人基本都懂,聊天气泡这玩意儿看着简单,真要调好自适应比想象中麻烦得多。文本长度不固定、既要贴合内容宽度、又要在超过某个宽度后自动换行,Unity 自带的 ContentSizeFitter 很难一次搞定。更难受的是,它压根没…

2026/9/16 8:31:44 阅读更多 →
Cassandra 代码审查实战:Deep Boundary  I/O 边界条件与输入输出检查清单

Cassandra 代码审查实战:Deep Boundary I/O 边界条件与输入输出检查清单

Cassandra 代码审查实战:Deep Boundary & I/O 边界条件与输入输出检查清单 【免费下载链接】cassandra Open source transactional distributed database. Linear scalability and proven fault-tolerance on commodity hardware or cloud infrastructure witho…

2026/9/16 8:31:44 阅读更多 →
企业微信文本消息接口开发全攻略:token获取、发送与回调实践

企业微信文本消息接口开发全攻略:token获取、发送与回调实践

干企业微信二开这行,绕不开的第一道门槛就是文本消息接口。不管是做告警机器人、客户通知、内部系统联动,还是接大模型做智能客服,最终落地的动作基本都离不开"把一段文本稳定地推给指定的人或群"。很多人第一次接触企业微信API&am…

2026/9/16 8:31:44 阅读更多 →
PICO Unity开发环境一键配置:从JDK/NDK到PDC调试的完整指南

PICO Unity开发环境一键配置:从JDK/NDK到PDC调试的完整指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/16 8:30:43 阅读更多 →

日新闻

嵌入式三大高薪赛道:车规功能安全、RISC-V固件架构、边缘AI部署

嵌入式三大高薪赛道:车规功能安全、RISC-V固件架构、边缘AI部署

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/16 0:00:51 阅读更多 →
IoT-For-Beginners 智能语音计时器:Wio Terminal 基于 DMAC 与 Flash 的音频采集实战

IoT-For-Beginners 智能语音计时器:Wio Terminal 基于 DMAC 与 Flash 的音频采集实战

IoT-For-Beginners 智能语音计时器:Wio Terminal 基于 DMAC 与 Flash 的音频采集实战 【免费下载链接】IoT-For-Beginners 12 Weeks, 24 Lessons, IoT for All! 项目地址: https://gitcode.com/GitHub_Trending/io/IoT-For-Beginners 本指南聚焦 GitHub Tren…

2026/9/16 0:01:52 阅读更多 →
基于MATLAB的CRI显色指数计算:从SPD光谱到Ra的完整流程

基于MATLAB的CRI显色指数计算:从SPD光谱到Ra的完整流程

简介:针对照明设计与光学研究中的光谱功率分布(SPD)与显色性指数(CRI)计算需求,这套MATLAB程序为照明工程师、LED研发人员及光学专业学生提供了轻量工具。代码通过解析光谱测量数据,自动完成波长…

2026/9/16 0:01:52 阅读更多 →

周新闻

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验 【免费下载链接】ai The AI Toolkit for TypeScript. From the creators of Next.js, the AI SDK is a free open-source library for building AI-powered applications and ag…

2026/9/15 12:27:42 阅读更多 →
Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化 【免费下载链接】refine A React Framework for building internal tools, admin panels, dashboards & B2B apps with unmatched flexibility. 项目地址: https://gitcode.com/GitH…

2026/9/16 1:59:46 阅读更多 →
Flutter应用改名全指南:从Android到iOS的配置与工具实践

Flutter应用改名全指南:从Android到iOS的配置与工具实践

刚接一个外包项目时,甲方要求把工程里临时用的应用名改成正式产品名。我本来觉得“改名”这种小事,打开配置文件改一行不就完了?结果真动手才发现,Flutter项目里“应用名称”根本不是一处配置,而是一整套散落在 Androi…

2026/9/16 1:59:35 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/15 21:40:00 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/15 21:39:18 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/15 21:40:17 阅读更多 →