ROS2中node之最简单的HelloWorld(C++)案例
- 1、创建工作空间
- 2、编译工作空间
- 3、创建功能包
- 4、编写helloworld 代码
- 5、编辑CMakeLists.txt
- 6、编译工作空间所有功能包
- 7、运行结果
1、创建工作空间
$ mkdir -p ~/devnode_ws/src
$ cd ~/devnode_ws/
2、编译工作空间
$ cd ~/devnode_ws/
$ colcon build
3、创建功能包
$ cd ~/devnode_ws/src
$ ros2 pkg create --build-type ament_cmake node_helloworld_cpp
4、编写helloworld 代码
$ cd node_helloworld_cpp
$ cd src
$ vim node_helloworld.cpp
node_helloworld.cpp 代码
#include<unistd.h>
#include"rclcpp/rclcpp.hpp" //ros2 C++接口
//创建一个helloworld node,初始化输出“hello world"
class HelloWorldNode:public rclcpp::Node
{
public:
HelloWorldNode():Node("node_helloworld") //构造函数委托初始化
{
while(rclcpp::ok())
{
RCLCPP_INFO(this->get_logger(),"hello world! ros2");
sleep(1);
}
}
};
int main(int argc,char*argv[])
{
//ROS2 C++接口初始化
rclcpp::init(argc,argv);
//创建ROS2节点对象并初始化
rclcpp::spin(std::make_shared<HelloWorldNode>());
//关闭ros2 C++接口
rclcpp::shutdown();
return 0;
}
5、编辑CMakeLists.txt
$ cd ~/devnode_ws/src/node_helloworld_cpp
$ gedit node_helloworld_cpp
在# find_package( REQUIRED)语句下添加
find_package(rclcpp REQUIRED)
add_executable(node_helloworld src/node_helloworld.cpp)
ament_target_dependencies(node_helloworld rclcpp)
install(TARGETS
node_helloworld
DESTINATION lib/${PROJECT_NAME})
6、编译工作空间所有功能包
$ cd ~/devnode_ws
$ colcon build
$ source install/local_setup.bash
7、运行结果
$ ros2 run node_helloworld_cpp node_helloworld