文章目录
ros2 node 之间的通信方式之 Topic通信
ROS 2 将复杂系统分解为许多模块化node。Topic是ROS的重要组成部分,充当node交换消息的总线。
一个节点可以将数据发布到任意数量的主题,并同时订阅任意数量的主题。
Topic是在node之间移动数据的主要方式之一,因此也是在系统的不同部分之间移动数据的主要方式之一。
Topic 通信案例
1、创建工作空间
如果没有创建工作空间,创建工作空间,反之则不用,进入目录src/下
$ mkdir -p ~/devnode_ws/src
$ cd ~/devnode_ws/src
2、创建功能包
$ ros2 pkg create --build-type ament_cmake topic_helloworld_cpp
3、编写发布者和订阅者代码
进入topic_helloworld_cpp功能包路径下的src文件,新键topic_helloworld_pub.cpp和topic_helloworld_sub.cpp
$ cd topic_helloworld_cpp/src
$ vim topic_helloworld_pub.cpp
$ vim topic_helloworld_sub.cpp
3.1 topic_helloworld_pub.cpp
#include<chrono>
#include<functional>
#include<memory>
#include<string>
#include"rclcpp/rclcpp.hpp" //ROS2C++接口
#include"std_msgs/msg/string.hpp" //字符串消息类型
using namespace std::chrono_literals;
class PublisherNode:public rclcpp::Node
{
public:
PublisherNode():Node("topic_helloword_pub") //构造函数初始化