ros之话题

---恢复内容开始---

先声明一个话题来发布消息

#!/usr/bin/env python
import rospy
from std_msgs.msg import Int32
rospy.init_node('topic_publisher')
pub = rospy.Publisher('counter',Int32)
rate = rospy.Rate(2)
count = 0
while not rospy.is_shutdown():
    pub.publish(count)
    count += 1
    rate.sleep()

第一行的

#!/usr/bin/env python

所谓的shebang告诉 操作系统这是一个python文件应该传给python解释器,在linux系统下要运行这个需要使用chmod u+x name.py 来增加权限

第二行

import rospy

负责导入将用到的基础功能

第三行

from std_msgs.msg import Int32

这里使用的是32位的整数为了使导入正常需要从<包名>.msg导入因为这是定义存储的地方,

因为使用了来自其他包的消息需要在package.xml中添加依赖  <depend package = "std_msgs"  />

##在实现过程中添加了,在执行的时候会出现错误,有可能是我添加的位置不正确=.=

pub = rospy.Publisher('counter',Int32)

定义话题一个名字(counter) 并且说明发布消息的类型(Int32),roscore会和publisher建立连接,当另一个话题订阅的时候则将两个话题连接

##在实现过程中出现了错误并提示需要在其中加入queue_size = 'number'   但在这里没有加  在之后的也是成功运行的

rate = rospy.Rate(2)

设置速率,单位是赫兹,这里每秒发送两次

如果节点准备好关闭is_shutdown()函数返回一个Ture反之则会返回一个False,整句表示不关闭则持续循化

ratee.sleep()调用会让程序休眠一段时间,来保证循环的执行频率大约是2Hz

!!!!!!!!!!!!

在调试过程中出现的错误,以此记录

该文件需要建立在catkin的工作空间中,如果手写的这段代码记得要chmod来设置运行权限

并且上面的#!/usr/bin/env python 时不能改变的

重点:在代码中时不能添加注释,具体原因还不清楚

运行前要先运行roscore,在另一个终端运行rosrun basic topic_publisher.py,然后在另一个终端执行rostopic list来查看counter话题是否被声明

执行成功的图:

---恢复内容结束---

猜你喜欢

转载自www.cnblogs.com/miaorn/p/11710326.html