[英]How to subsribe to a ROS topic for several seperate times?
我有5個職位的掃描清單,供機器人使用。 對於每個職位,我希望訂閱一個主題以獲取傳感器數據並在rviz中添加標記。 這是我的代碼:
def addMarkerCallback(msg):
draw_functions = DrawFunctions('visualisation_marker')
if msg.data:
draw_functions.draw_rviz_sphere(0.02)
else:
print 'no data'
rospy.init_node("sensor_marker", anonymous = True)
for item in scanlist:
moveit_cmd.go(item, wait=True)
sub1 = rospy.Subscriber('sensor/right', SensorData, addMarkerCallback)
rospy.spin()
print 'go finished'
但是,當我運行代碼時,問題在於循環將始終停留在第一次迭代中,因此機械手將不會轉到掃描列表中的其他位置。 我想這是rospy.spin()的問題。 誰能告訴我如何解決這個問題...非常感謝!
使用rospy.spin()意味着python不會超過該點,它會(故意)被ROS陷入循環中。
最簡單的短期解決方案是將rospy.spin()移出for循環,如下所示:
for item in scanlist:
moveit_cmd.go(item, wait=True)
sub1 = rospy.Subscriber('sensor/right', SensorData, addMarkerCallback)
print 'go finished'
rospy.spin()
從長遠來看,想想您想做什么。 在大多數情況下,最好混合使用發布和訂閱。 再次查看ROS Python教程,尤其是發布者示例。
http://wiki.ros.org/ROS/Tutorials/WritingPublisherSubscriber(python)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.