学习大纲:
1. 编写发布服务器节点
在 ROS 中,节点是连接到 ROS 网络的可执行文件。我创建了一个名为 talker 的发布者节点,它会向一个主题 chatter 不断发送消息。
首先,进入你的工作包 beginner_tutorials(假设你已经完成了 rosbuild 包的创建):
cd ~/catkin_ws/src/beginner_tutorials
在 src 目录下创建文件 talker.cpp:touch src/talker.cpp
编辑 talker.cpp 文件,并粘贴以下代码:
代码解释
#include:引入 ROS 的头文件和 std_msgs 的字符串消息类。
ros::init():初始化 ROS 节点,并将节点命名为 talker。
ros::NodeHandle:创建节点句柄,控制节点的初始化和关闭。
advertise():声明这个节点将向主题 chatter 发布消息,并设置队列大小为 1000。
ros::Rate:设置发布频率为 10Hz。
ros::spinOnce():检查是否有回调需要处理。
日志输出:ROS_INFO() 打印消息到控制台。
2. 编写订阅服务器节点
接下来,我编写了一个订阅者节点 listener,它会接收来自 chatter 主题的消息并显示出来。
代码
在 src 目录下创建文件 listener.cpp:
touch src/listener.cpp
编辑 listener.cpp 文件,并粘贴以下代码:
代码解释
回调函数:每当收到消息时,chatterCallback() 函数会被调用并显示消息内容。
subscribe():订阅 chatter 主题,并将收到的消息传递给回调函数。
ros::spin():进入回调循环,等待消息到达。
3. 构建您的节点
在 ROS 中,我们使用 CMake 来构建项目。在这里,我们需要确保我们的 CMake 文件配置正确。
CMake 配置 :打开 beginner_tutorials 包的 CMakeLists.txt 文件:
nano ~/catkin_ws/src/beginner_tutorials/CMakeLists.txt
在文件末尾添加以下内容:
构建步骤
首先,进入你的工作区目录:cd ~/catkin_ws
使用 catkin_make 命令构建节点:catkin_make
构建完成后,使用以下命令运行 talker 和 listener 节点。
4. 运行并测试节点
运行发布者节点
在一个终端中,启动 roscore: /opt/ros/noetic/bin/roscore
在另一个终端中,运行发布者节点:
source ~/catkin_ws/devel/setup.bash
rosrun beginner_tutorials talker
运行订阅者节点
打开第三个终端,并运行订阅者节点:
source ~/catkin_ws/devel/setup.bash
rosrun beginner_tutorials listener
会看到类似如下的输出: