ros开发语言python效率_ROS2探索总结(十二)—— ROS2 Python编程基础

ROS最重要的特性之一就是多语言的支持,可以使用C++、Python等语言进行程序的开发,ROS2会继续强化这个特性,对更多语言提供丰富的支持。

这里我们尝试ROS2当中的Python编程,实现话题和服务通信。

在进行操作前,请先参考以下链接,完成ROS 2的安装和例程编译:

一、话题通信

代码编译后,在终端设置环境变量,并使用如下命令运行listener和talker:

$ ros2 run demo_nodes_py listener

$ ros2 run demo_nodes_py talker

运行成功后,可以看到如下效果:

Screenshot-from-2019-01-13-23-26-40_thumb.png

以上talker和listener的具体实现,我们可以来分析下代码,分析内容请见代码中的注释:

talker.py

# 引用python接口

import rclpy

from rclpy.node import Node

from std_msgs.msg import String

class Talker(Node):

def __init__(self):

super().__init__('talker')

self.i = 0

# 创建一个Publisher,发布名为chatter的topic,消息类型为String

self.pub = self.create_publisher(String, 'chatter')

# 设置定时器,周期调用定时器回调函数timer_callback

timer_period = 1.0

self.tmr = self.create_timer(timer_period, self.timer_callback)

def timer_callback(self):

# 创建String类型的消息

msg = String()

msg.data = 'Hello World: {0}'.format(self.i)

self.i += 1

self.get_logger().info('Publishing: "{0}"'.format(msg.data))

# 发布消息

self.pub.publish(msg)

def main(args=None):

# ROS节点初始化

rclpy.init(args=args)

# 创建节点及发布器

node = Talker()

# 循环

rclpy.spin(node)

# 销毁节点,退出程序

node.destroy_node()

rclpy.shutdown()

if __name__ == '__main__':

main()

listener.py

# 引用python接口

import rclpy

from rclpy.node import Node

from std_msgs.msg import String

class Listener(Node):

def __init__(self):

super().__init__('listener')

# 创建一个subscriber,订阅名为chatter的topic

# 消息类型是String,回调函数为chatter_callback

self.sub = self.create_subscription(String, 'chatter', self.chatter_callback)

def chatter_callback(self, msg):

# 将收到的消息数据打印出来

self.get_logger().info('I heard: [%s]' % msg.data)

def main(args=None):

# ROS节点初始化

rclpy.init(args=args)

# 创建节点及订阅器

node = Listener()

# 循环查询消息队列&#x

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值