python最新官方消息_11.用python写一个简单消息发布器和订阅器

11.1写一个发布器节点

“节点”是ROS网络中的可执行文件,现在我们创建一个不断广播一条信息的发布器(命名为talker)的节点

首先进入之前创建的beginner_tutorials程序包

roscd beginner_tutorials

创建一个python脚本文件目录

mkdir scripts

进入刚创建的目录

cd scripts

下载发布器例子脚本(talker.py)

wget https://raw.github.com/ros/ros_tutorials/kinetic-devel/rospy_tutorials/001_talker_listener/talker.py

wget是一个从网络上自动下载文件的自由工具。

使下载的文件可执行

chmod +x talker.py

chmod是用于修改linux系统下文件或目录的访问权限。

+表示增加,-表示减少

x表示可执行权限

talker.py的文件大致如下

085151_hMXt_3384982.png

~~

085232_ePLj_3384982.png

11.1.1代码解析

第1行是python惯用宣言,用于确保该文件作为python脚本执行。(必须有,尤其在linux中)

第39行,引入 rospy模块(听说使用rospy不需要catkin_make就可以运行,官方解释是你写节点就需要import rospy)

第40行,从std_msgs.msg模块中引入String类(这个引入就是为了使用到字符串消息类型)

第43行,调用了rospy类中的publisher方法,括号中分别是话题(chatter),消息类型(String),消息大小(queue_size)

第44行,是初始化节点,官方解释是给节点赋予了名字(名字不能包含/),没有这步,它无法和ROS管理器通信。anonimous翻译是匿名。

第45行,定义了rospy每秒发布10次的频率。

第46行,是个循环,如果rospy.is_shutdown没有被关闭则进行循环中的内容(被关闭的情况比如Ctrl+c等)

第47行,赋值给hello_str这个变量

第48行,这个loginfo(str)有3个作用,第一,打印消息,第二,被写入节点日志文件中,第三,被写入rosout中(这样就可以通过rqt_console查看)。

第49行,发布消息hello_str

50行,sleep函数,等待到下一次发布时间。(10HZ,也就是等1/10秒)

因为string是一个简单的消息类型,你会想知道它是怎么发布复杂的数据类型。其实容器参数的排序是根据msg中的排序一样。你也可以直接不输入参数并直接初始化该域(暂时不知道这个域指的是啥,感觉就是创建实例的意思。)。

例子是这样的(感觉就是string是一个class,然后创建了个实例赋值给了msg,然后对实例中的变量进行赋值这样)

msg=String()

msg.data = str

或者你可以初始化部分域和让剩下的使用默认值

String(data =str)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值