Publisher
roscd tutorial/ # 进入 tutorial packagecd src # 进入 srctouch hello_publisher.py # 创建 hello_publisher.py 档案
撰写
#! /usr/bin/env python# 指定直译器# 1. importimport rospyfrom std_msgs.msg import String# 2. 编写 mainif __name__ == "__main__":# 3. 建立 Publisher 前要先建立一个 Node## 初始化 ROS 节点rospy.init_node("publish", anonymous = True) # 建立一个 Node 要先给名称# 4. 建立一个 Publisherpub = rospy.Publisher("chat", String, queue_size = 10) # 必须写出 Topic 的名称叫什么# 5. 连续发送讯息rate = rospy.Rate(10) # 以 10Hz 的频率发送讯息# 6. 进入迴圈,如果没有按下 ctrl+c 就一直执行while not rospy.is_shutdown():hello = 'hello world ! %s' % rospy.get_time() # 一直传送的讯息pub.publish(hello) # 发送讯息,目前萤幕上还看不到# 7. 输出rospy.loginfo(hello)rate.sleep()
更改权限并执行
roscd tutorial/ # 进入 tutorial packagecd src # 进入 srcchmod +x hello_publisher.py # 更改 hello_publisher.py 的权限变成可执行档rosrun tutorial hello_publisher.py # 执行 hello_publisher.py 档案
Subscriber
roscd tutorial/ # 进入 tutorial packagecd src # 进入 srctouch hello_subscriber.py # 创建 hello_subscriber.py 档案
撰写
#! /usr/bin/env python# 指定直译器# 1. importimport rospyfrom std_msgs.msg import String# 6. callback 函数def callback(data):# 把接收到的讯息显示在萤幕上rospt.loginfo(rospy.get_caler_id() + 'I heard %s' % data.data)# 2. 编写 mainif __name__ == "__main__":# 3. 建立 Subsciber 前要先建立一个 Node# 初始化 ROS 节点rospy.init_node("Subsciber", anonymous = True) # 建立一个 Node 要先给名称# 4. 建立一个 Subscriberrospy.Subscriber("chat", String, callback) # 必须写出订阅了什么 Topic# 我们必须写出 Subscriber 如果接收到讯息要做出什么样的反应(callback 函数)# 5. 防止程式结束rospy.spin()
更改权限并执行
roscd tutorial/ # 进入 tutorial packagecd src # 进入 srcchmod +x hello_publisher.py # 更改 hello_publisher.py 的权限变成可执行档rosrun tutorial hello_publisher.py # 执行 hello_publisher.py 档案
Reference
AI葵 ROS教学