c++
#include "rclcpp/rclcpp.hpp"
using namespace std;
int main(int argc, char **argv)
{
/* 初始化rclcpp */
rclcpp::init(argc, argv);
/*产生一个test_ros2_node的节点*/
auto node = make_shared<rclcpp::Node>("test_ros2_node");
// 打印一句自我介绍
RCLCPP_INFO(node->get_logger(), "test_ros2_node节点已经启动.");
/* 运行节点,并检测退出信号 Ctrl+C*/
rclcpp::spin(node);
/* 停止运行 */
rclcpp::shutdown();
return 0;
}
CMakelist.txt中修改
# 添加可执行文件,test_ros2_node.cpp 是你的 ROS 2 节点的源文件, test_ros2_node 是你要创建的可执行文件的名称
add_executable(test_ros2_node src/test_ros2.cpp)
ament_target_dependencies(test_ros2_node rclcpp std_msgs geometry_msgs)
# 生成可执行文件到lib/下
install(TARGETS test_ros2_cpp
DESTINATION lib/${PROJECT_NAME}
)
Python
一般Python写ROS2代码就不用定义功能包了,直接按脚本运行就好点
import rclpy
from rclpy.node import Node
def main(args=None):
"""
ros2运行该节点的入口函数
编写ROS2节点的一般步骤
1. 导入库文件
2. 初始化客户端库
3. 新建节点对象
4. spin循环节点
5. 关闭客户端库
"""
# 初始化rclpy
rclpy.init(args=args)
# 新建一个节点
node = Node("test_ros2_py")
node.get_logger().info("大家好,我是test_ros2_py.")
# 保持节点运行,检测是否收到退出指令(Ctrl+C)
rclpy.spin(node)
# 关闭rclpy
rclpy.shutdown()