鱼香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

二、功能包结构分析

相关推荐
汉克老师1 小时前
GESP2026年9月认证C++四级( 第三部分编程题(1、新汉诺塔))精讲
c++·gesp·小学生·学c++编程
唠玖馆2 小时前
智能指针详解
c++
ShineWinsu2 小时前
对于Git:基础操作的超详细保姆级解析
linux·c++·git·面试·备份·管理·版本控制器
小小de风呀3 小时前
de风——【从零开始学C++】(二十)红黑树封装map和set
c++·学习
青梅橘子皮3 小时前
Blue---枚举
c++
一木 之林4 小时前
第 8 节 C++ 设计模式在 AI 推理 SDK 和 Agent 工具运行时中如何落地
c++·人工智能·设计模式
神仙别闹5 小时前
基于 C++ 实现(控制台)考试报名系统
c++
weixin_307779135 小时前
C++代码实现MATLAB中的ode23t函数功能
开发语言·c++·算法·matlab
wuminyu5 小时前
Markword在紧凑对象头上的实现原理剖析
java·linux·c语言·jvm·c++