[Python Ver.] ROS Topic 简易使用模板
注:ROS可实现自定义消息类型,本文以geometry_msgs.msg为例
1. 创建功能包
catkin_create_pkg topic std_msgs rospy roscpp
2. 创建代码文件夹
mkdir scripts
cd scripts
输入以下代码,以保证Python代码的执行权限
sudo chmod +x *.py
3. 编写Publisher.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# File:py_pub.py
import rospy
from geometry_msgs.msg import Point, Quaternion, Pose
def publisher():
pub = rospy.Publisher('pose_topic',Pose,queue_size=10)
rospy.init_node('publisher',anonymous=True)
pose_data = Pose()
rate = rospy.Rate(1)
while not rospy.is_shutdown():
pose_data.position=Point(0.1,0.2,0.3)
pose_data.orientation=Quaternion(0.01,0.02,0.03,0.04)
pub.publish(pose_data)
rospy.loginfo('Publishing~')
rate.sleep()
if __name__ == '__main__':
publisher()
4. 编写Subscriber.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# File:py_sub.py
import rospy
from geometry_msgs.msg import Point, Quaternion, Pose
def callback(pose_data):
rospy.loginfo('Subscriber:\n%s',pose_data)
def subscriber():
rospy.init_node('Subscriber',anonymous=True)
rospy.Subscriber('pose_topic',Pose,callback)
rospy.spin()
if __name__ == '__main__':
subscriber()
5. 编译运行
cd topic
catkin_make
source devel/setup.sh
roscore
python scripts/py_pub.py
python scripts/py_sub.py
6. Other tips
- 查看节点连接图
rosrun rqt_graph rqt_graph
- 查看topic发布的内容
rostopic echo /pose_topic
参考链接: ROS通讯之话题(topic)通讯