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

ROS2学习记录009-使用面向对象方式编写ROS2节点

学习鱼香ROS大佬,操作记录

(一)编写cpp

(1)在d2lros2/chapt2/chapt2_ws/src/example_cpp/src下新建node_03.cpp

#include "rclcpp/rclcpp.hpp" /* 创建一个类节点,名字叫做Node03,继承自Node. */ class Node03 : public rclcpp::Node { public: // 构造函数,有一个参数为节点名称 Node03(std::string name) : Node(name) { // 打印一句 RCLCPP_INFO(this->get_logger(), "大家好,我是%s.",name.c_str()); } private: }; int main(int argc, char **argv) { rclcpp::init(argc, argv); /*产生一个node_03的节点*/ auto node = std::make_shared<Node03>("node_03"); /* 运行节点,并检测退出信号*/ rclcpp::spin(node); rclcpp::shutdown(); return 0; }

(2)修改CMakeLists.txt,添加如下代码

add_executable(node_03 src/node_03.cpp) ament_target_dependencies(node_03 rclcpp) install(TARGETS node_03 DESTINATION lib/${PROJECT_NAME} )

(3)编译

colcon build --packages-select example_cpp source install/setup.bash ros2 run example_cpp node_03

(二)python编译

(1)在d2lros2/d2lros2/chapt2/chapt2_ws/src/example_py/example_py下新建node_04.py

#!/usr/bin/env python3 import rclpy from rclpy.node import Node class Node04(Node): """ 创建一个Node04节点,并在初始化时输出一个话 """ def __init__(self,name): super().__init__(name) self.get_logger().info("大家好,我是%s!" % name) def main(args=None): rclpy.init(args=args) # 初始化rclpy node = Node04("node_04") # 新建一个节点 rclpy.spin(node) # 保持节点运行,检测是否收到退出指令(Ctrl+C) rclpy.shutdown() # 关闭rclpy

(2)修改setup.py

entry_points={ 'console_scripts': [ "node_02 = example_py.node_02:main", "node_04 = example_py.node_04:main" ], },

(3)编译

colcon build --packages-select example_py source install/setup.bash ros2 run example_py node_04
http://www.jsqmd.com/news/500060/

相关文章:

  • 从此告别拖延!全场景通用的AI论文工具 —— 千笔写作工具
  • 震惊,杨幂的脸竟然出现在了她的身体上
  • java基础学习3(数据类型转换、运算符)
  • 把坑都踩完了,千笔AI VS 笔捷Ai,全场景通用AI论文网站!
  • 【常见错误】Xilinx Vivado自带编辑器文字部分出现乱码解决办法
  • 数字孪生国内外发展现状
  • 【Xilinx Vivado时序分析/约束系列2】FPGA开发时序分析/约束-建立时间
  • 终极指南:使用Google Map React库快速构建交互式地图应用
  • JetBrains 插件 IDE设置
  • 学霸同款!全领域适配的论文神器 —— 千笔
  • STM32-串口使用注意事项
  • Kubernetes 认证通关指南:CKA/CKS/CKAD 最新题库 + 本地仿真环境 + 模拟考
  • 2.postman断言
  • 具身智能中 Wrapper 架构的深度解构与 Python 实战
  • 深度解析 | 2026新范式:当“Token”取代比特币,成为真正的数字石油
  • 李南左日更3327:为什么员工都在摸鱼?是因为你曾经不信任他们
  • 终极Git与GitHub教程:从零开始掌握版本控制的完整指南
  • 【Xilinx Vivado时序分析/约束系列3】FPGA开发时序分析/约束-保持时间
  • 2026年靠谱的孝感钻井厂家推荐:十堰钻井/养殖场钻井公司精选 - 品牌宣传支持者
  • # 发散创新:用Go语言高效接入InfluxDB实现时序数据采集与可视化在现代微服务架构中,**时序数据
  • 【Xilinx Vivado时序分析/约束系列4】FPGA开发时序分析/约束-实验工程上手实操
  • 终极指南:如何快速掌握JEnv进行Java环境管理
  • reCAPTCHA PHP错误代码完全解析:快速定位和解决验证问题
  • 关于旧系统+旧安卓版本realme手机的原生文件管理不支持向微信好友一次性发送多个非照片格式文件的问题和解决方案
  • 探索阿里云盘: odomu/aliyunpan - 更智能、更便捷的云存储助手
  • 小程序实现“一码通用”
  • 7分钟掌握RuboCop:Ruby代码质量终极守护者指南
  • Python WebSockets 终极指南:构建高性能实时双向通信应用 [特殊字符]
  • 【Xilinx Vivado时序分析/约束系列5】FPGA开发时序分析/约束-IO时序分析
  • Nano Node选举机制深度分析:为什么它能实现零费用交易