一、在功能包中编写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
二、功能包结构分析
