# 3.5.2 POP方法编写C++节点并测试 ## 1.编写代码 继续跟着小鱼一起输入代码,输入的时候可以边输边理解。 ```cpp #include "rclcpp/rclcpp.hpp" int main(int argc, char **argv) { rclcpp::init(argc, argv); /*产生一个Wang2的节点*/ auto node = std::make_shared("wang2"); // 打印一句自我介绍 RCLCPP_INFO(node->get_logger(), "大家好,我是单身狗wang2."); /* 运行节点,并检测退出信号*/ rclcpp::spin(node); rclcpp::shutdown(); return 0; } ``` 主函数中首先初始化rclcpp,然后新建了一个Node节点的对象,命名为`wang2`,接着使用rclcpp让这个节点暴露在外面,并检测退出信号(Ctrl+C),检测到退出信号后,就会执行`rcl.shutdown()`关闭节点。 ### 添加到CmakeLists 在wang2.cpp中输入上面的内容后,还需要修改一下CmakeLists.txt。 在CmakeLists.txt最后一行加入下面两行代码。 ``` add_executable(wang2_node src/wang2.cpp) ament_target_dependencies(wang2_node rclcpp) ``` 添加这两行代码的目的是让编译器编译wang2.cpp这个文件,不然不会主动编译。接着在上面两行代码下面添加下面的代码。 ``` install(TARGETS wang2_node DESTINATION lib/${PROJECT_NAME} ) ``` 这个是C++比Python要麻烦的地方,需要手动将编译好的文件安装到`install/village_wang/lib/village_wang`下 ## 2.编译运行节点 打开vscode终端,进入`town_ws` ### 编译节点 ``` colcon build ``` ### source环境 ``` source install/setup.bash ``` ### 运行节点 ``` ros2 run village_wang wang2_node ``` 不出意外,你可以看到王二的自我介绍。 ![image-20210727204912006](3.6.2POP方法编写C++节点并测试/imgs/image-20210727204912006.png) ## 3.测试 当节点运行起来后,可以再尝试使用`ros2 node list `指令来查看现有的节点。这个时候你应该能看到: ![image-20210727205020561](3.6.2POP方法编写C++节点并测试/imgs/image-20210727205020561.png) 至此,相信你已经掌握了如何编写一个C++版本的ros2节点,下一章中,作家李四将会开始编写艳娘传奇,我们到时候可以帮单身狗王二编写代码,订阅艳娘传奇。