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

二、功能包结构分析

相关推荐
牵猫散步的鱼儿15 小时前
C++ 内存分区
c++
choumin16 小时前
C++ 标准容器为什么不能存引用
c++·容器·引用类型
谙弆悕博士16 小时前
用 C 写了个 Windows 聊天室,踩了几个多线程和控制台的坑
c语言·开发语言·c++·windows·网络编程·聊天室
stolentime16 小时前
CF2277E Tree Guessing题解
c++·算法·贪心算法·交互·ad-hoc
syagain_zsx17 小时前
ODB 与 MySQL:C++ 里的 ORM 实践(类即表、事务铁律与查询封装)
开发语言·数据库·c++·mysql·工具库·1024程序员节
小鱼仙官17 小时前
使用Qt封装C/C++ 动态库 用于第三方调用
c语言·c++·qt
晚风予卿云月18 小时前
【C++高并发内存池】 1.定长内存池的实现
开发语言·c++·内存管理
闻缺陷则喜何志丹19 小时前
【c++20】协程与屏障
c++·算法·c++20·携程·屏障
会编程的小孩19 小时前
C++ 内存分区、堆与栈、static、union 完整修正版文档
c++
多弗朗皮卡丘20 小时前
C++的类型转换
开发语言·c++