鱼香ros2(七)功能包组织C++节点

一、在功能包中编写C++节点

1、创建

ros2 pkg create demo_cpp_pkg --build-type ament_cmake --license Apache-2.0

2、代码编写

#include "rclcpp/rclcpp.hpp"

int main(int argc,char **argv)

{

rclcpp::init(argc,argv);

auto node = std::make_shared<rclcpp::Node>("cpp_node");

RCLCPP_INFO(node->get_logger(),"你好 C++的ros2节点!");

rclcpp::spin(node);

rclcpp::shutdown();

return 0;

}

3、注册(以下内容添加在ros2帮我们生成的CMakeLists.txt里,其中红色部分是需要添加的,位置就放在 #fuether dependencies manually.后,绝对不要放最后。)

cmake_minimum_required(VERSION 3.8)

......

find_package(ament_cmake REQUIRED)

#uncomment the following section in order to fill in

#fuether dependencies manually.

#1、查找rclcpp头文件和库

find_package(rclcpp REQUIRED)

#2、添加可执行文件 cpp_node

add_executable(cpp_node src/cpp_node.cpp)

#3、为cpp_node添加依赖

ament_target_dependencies(cpp_node rclcpp)

以上这个就可以替代以下两句

target_include_directories(ros2_cpp_node PUBLIC ${rclcpp_INCLUDE_DIRS})

target_link_libraries(ros2_app_node ${rclcpp_LIBRARIES})

#4、将cpp_node拷贝到install目录

install(TARGETS

cpp_node

DESTINATION lib/${PROJECT_NAME}

)

意思就是把cpp_node拷贝到我们的目的地地址处

......

ament_package()

4、声明

打开demo_cpp_pkg/package.xml,添加依赖信息

<depend>rclcpp</depend>

5、构建(一定要到同济目录构建,这里就是回到chapt2目录下构建)

colcon build

6、运行

source install/setup.bash

ros2 run demo_cpp_pkg cpp_node

二、功能包结构分析

相关推荐
汉克老师30 分钟前
GESP2026年9月认证C++八级( 第一部分选择题(1~7题)精讲
c++·gesp·小学生·学c++编程
郝学胜_神的一滴2 小时前
C++ Templates 06:搞懂模板代码的三种组织方式
c++·visual studio
C++ 老炮儿的技术栈2 小时前
sizeof操作符
c语言·c++·人工智能·mfc·c
沫璃染墨2 小时前
《Linux工程实践篇(一):认识设计模式——从日志系统看策略模式》
linux·c++·安全·设计模式·策略模式
wuminyu2 小时前
ForkJoinPool内部WorkQueue的Lock-Free数组操作以及并发任务窃取原理剖析
java·linux·c语言·jvm·c++
Zguigo3 小时前
【CUDA8】第一个CUDA C++ Kernel --vector add
java·开发语言·c++
-Marks-3 小时前
【C++编程】STL容器(二)--- vector底层模拟实现(常用接口实现 | 扩容机制 | 深浅拷贝 | 迭代器失效)
开发语言·c++·vector·内存管理·迭代器失效·vector底层模拟实现
Shadow(⊙o⊙)4 小时前
C++11并发支持库
开发语言·c++
ShineWinsu4 小时前
对于Redis:主从复制的解析
linux·数据库·c++·redis·缓存·面试·主从复制
无忧.芙桃5 小时前
C++ 并查集详解:原理、实现与应用
c语言·c++·算法·leetcode