几天前,我开始编写一系列教程,以简化ROS中的初学者的工作。第一个教程是关于 发布者节点的模板,而第二个教程是关于 ROS中订户节点的模板.
今天,我继续使用Python中的发布者和订阅者节点模板的系列教程。另外,我’通过编写并运行发布者和订阅者节点来对其进行测试。
Python中的简单ROS订阅者和发布者的模板(图片来源)
将模板复制到“。 py ”文件,删除您输入的信息’需要并替换大写字母中的文本。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | #ROS节点订阅者& 发行人 template #!/ usr / bin / env py thon #删除或添加ROS的库/库 进口 红润的, 时间, 数学, cv2, 系统 #删除或添加消息类型 从 std_msgs.味精 进口 串, 浮点32, 图片, 雷射扫描, Int32 varS=没有 #定义一个或多个功能以提供所需的功能 定义 fnc_callback(味精): 全球 varS varS==做点什么(味精.数据) 如果 __名称__=='__主要__': #在此处添加ROS的名称。在ROS中,名称是唯一的名称。 红润的.init_node(“ NODE_NAME”) #使用rospy.Subscriber类订阅主题 子=红润的.订户(“ TOPIC_NAME”, THE_TYPE_OF_THE_MESSAGE, fnc_callback) #使用rospy.Publisher类将消息发布到主题 酒馆=红润的.发行人(“ TOPIC_NAME”, THE_TYPE_OF_THE_MESSAGE, queue_size=1) 率=红润的.率(10) 而 不 红润的.is_shutdown(): 如果 varS<= var2: 变种=某事() 其他: 变种=某事() 酒馆.发布(变种) 率.睡觉() |
我使用以上模板编写了一个ROS节点,该节点将显示 从另一个节点收到的随机数,然后添加一些条件语句,最后发布结果。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | #!/ usr / bin / env py thon 进口 红润的 从 std_msgs.味精 进口 Int32 varS=没有 定义 fnc_callback(味精): 全球 varS varS=味精.数据 如果 __名称__=='__主要__': 红润的.init_node('NODE_SUB_AND_PUB') 子=红润的.订户('rand_no', Int32, fnc_callback) 酒馆=红润的.发行人('sub_pub', Int32, queue_size=1) 率=红润的.率(10) 而 不 红润的.is_shutdown(): 如果 varS<= 2500: 变种=0 其他: 变种=1 酒馆.发布(变种) 率.睡觉() |
要运行上述节点,请导航到.py文件并使其可执行。该命令是:
1 | chmod u+x my_python_file.py |
该文件可执行后,您可以运行该节点。
第1步: 打开一个新的终端并运行命令:
1 | 罗斯科尔 |
第2步: 打开一个新的终端并使用以下命令运行发布者节点:
1 | 罗斯伦 your_package your_ros_node_that_generates_random_number.py |
第三步: 打开一个新的终端,并使用以下命令运行发布者和订阅者节点:
1 | 罗斯伦 your_package your_ros_node_for_publisher_and_subscriber.py |
竞技场’你错过了ros :: spin()