在RoboWare Studio下利用python语言实现话题

     本人在使用roboware这款软件编写C++文件与python文件有一些不同。下面是我在roboware下实现python话题编写的过程。

     假设你已经安装好roboware studio这款软件,如果没有安装的话可以百度一下如何安装,这是一款非常好用的软件。

    1.  新建工作区。点击新建工作区,选择存放目录,输入工作区名称,点击保存。

在RoboWare Studio下利用python语言实现话题_第1张图片

在RoboWare Studio下利用python语言实现话题_第2张图片

    2.建立工作空间后,右击工作空间下的src目录,选择“新建ROS包”,如下图,在命名ROS时顺便添加依赖,rospy和std_msgs(注:此处是依赖是rospy,而建立c++版本时添加roscpp),然后回车。

 

在RoboWare Studio下利用python语言实现话题_第3张图片

    建立之后目录空间如下:

在RoboWare Studio下利用python语言实现话题_第4张图片

    3.右击ros包下的的src目录,选择“新建PY源文件”,命名之后回车(此处不像建立C++源文件时需要选择执行文件或者库之类,因为python是一种解释性语言,与c++不同)。

在RoboWare Studio下利用python语言实现话题_第5张图片

      4.编写话题发布者与订阅者。

topic_pub代码如下:

#!/usr/bin/python2
# coding: utf-8

import rospy #导入ROS Python客户端
from std_msgs.msg import String
from std_msgs.msg import Int16
def topicPublisher():
    rospy.init_node('pub_node', anonymous = False) #初始化ROS节点
    simple_publisher = rospy.Publisher('mytopic', String, queue_size = 10) #定义Publisher对象
    rate = rospy.Rate(10) #设置Topic发布的频率(Hz)

    mytopic_content = "Hello World!" #填充Topic内容
    while not rospy.is_shutdown():
        simple_publisher.publish(mytopic_content) #发布Topic
        rate.sleep() #确保Topic以我们设定的频率发布

if __name__ == '__main__':
    try:
        topicPublisher()
    except rospy.ROSInterruptException:
        pass

 topic_sub代码如下:

#!/usr/bin/python
# coding: utf-8

import rospy #导入ROS Python客户端
from std_msgs.msg import String

# 定义Subscriber回调函数,处理收到的信息
def stringSubscriberCallback(data): #data的数据类型与Subscriber接收的Topic对应的消息类型一致
    rospy.loginfo('I heard: %s', data.data)

def stringSubscriber():
    rospy.init_node('sub_node', anonymous = False) #初始化ROS节点
    rospy.Subscriber('mytopic', String, stringSubscriberCallback) #定义Subscriber对象

    rospy.spin()

if __name__ == '__main__':
    stringSubscriber()

注:1.以上代码为python2版本。

       2.下面这两行注释很重要,不加可能会报错。

#!/usr/bin/python
# coding: utf-8

    5.选择ros,点击“构建”

在RoboWare Studio下利用python语言实现话题_第6张图片

    6.选择ros,点击“运行roscore”

    7.在终端下

在RoboWare Studio下利用python语言实现话题_第7张图片

         运行  source devel/setup.bash

          进入到ros包的目录下,运行:

          chmod u+x topic_pub.py

          再进入工作区目录下,运行

          rosrun test topic_pub.py

    再打开一个新的终端:

          source devel/setup.bash

          进入到ros包的目录下,运行:

          chmod u+x topic_sub.py

          再进入工作区目录下,运行

          rosrun test topic_sub.py

    8.运行成功!

在RoboWare Studio下利用python语言实现话题_第8张图片

 

你可能感兴趣的:(ROS)