1.1 Beginner Level学习之“编写简单的发布服务器和订阅服务器”(第十二节)
学习大纲:
1. 编写发布服务器节点
在ROS中,**节点(Node)**是与ROS网络通信的基本单位。在这个部分,我们将创建一个简单的发布节点(talker),它会不断向话题(topic)广播消息。
创建ROS包
首先,我要确保我的工作空间结构正确。我创建的工作空间在~/catkin_ws目录下,所以我需要先创建beginner_tutorials包:
cd ~/catkin_ws/src
catkin_create_pkg beginner_tutorials std_msgs rospy roscpp
编写发布节点
接下来,我们进入beginner_tutorials包并创建一个scripts目录来存放Python脚本:
cd ~/catkin_ws/src/beginner_tutorials
mkdir scripts
cd scripts
然后,我下载示例代码文件talker.py并将其设为可执行:
wget
chmod +x talker.py
代码解释
#!/usr/bin/env python:
确保Python解释器执行该脚本。
导入ROS模块:我们需要rospy模块来编写ROS节点,同时需要String消息类型来发布字符串消息。
创建发布者:
Publisher()声明了该节点会发布消息到名为chatter的话题上。
init_node()初始化节点,并设置名称为talker。
anonymous=True确保每次运行的节点名唯一。
循环发布消息:
这个循环会每秒10次发布消息,直到节点关闭。
2. 写入订阅节点
接下来,我会创建一个简单的**订阅节点(listener)**来接收发布节点发送的消息。
进入scripts目录并下载listener.py代码:
cd ~/catkin_ws/src/beginner_tutorials/scripts
wget https://raw.github.com/ros/ros_tutorials/kinetic-devel/rospy_tutorials/001_talker_listener/listener.py
chmod +x listener.py
代码解释
创建订阅节点:
这个节点订阅了chatter话题,并调用回调函数callback()来处理接收到的消息。
回调函数处理消息:
当接收到消息时,callback()会打印消息内容。
保持节点运行:rospy.spin()
该函数会保持节点运行,直到节点被手动关闭。
3. 构建并运行节点
编译ROS工作空间
我们需要回到工作空间的根目录并运行catkin_make来构建工作空间:
cd ~/catkin_ws
catkin_make
然后刷新环境:source devel/setup.bash
运行发布节点和订阅节点
在两个终端窗口中分别运行发布和订阅节点:
终端 1(运行发布节点):rosrun beginner_tutorials talker.py
终端 2(运行订阅节点):rosrun beginner_tutorials listener.py
如果一切正常,订阅节点会在终端中显示类似以下内容:
/listener_12345 I heard hello world 1697812456.12
原文地址:https://blog.csdn.net/2301_79441716/article/details/144337849
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!