---恢复内容开始---
先声明一个话题来发布消息
#!/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话题是否被声明
执行成功的图:
---恢复内容结束---
原文:https://www.cnblogs.com/miaorn/p/11710326.html