首页 > 其他 > 详细

ros之话题

时间:2019-10-20 22:20:30      阅读:85      评论:0      收藏:0      [点我收藏+]

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

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

 

#!/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话题是否被声明

执行成功的图:

 

 

 

 

 

 

 

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

ros之话题

原文:https://www.cnblogs.com/miaorn/p/11710326.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!