我正在使用 ROS 和 python,并且我已经编写了这段代码。该代码应该订阅一个名为“map”的 ROS 主题(来自使用 LIDAR 的 hector_slam)并将其保存到一个名为“mapdata”的变量中,稍后将使用该变量。我只是想通过将其发布为另一个名为“mapprob”的 ROS 主题来确保它正确导入。代码编译并运行良好,但“mapprob”中没有发布任何内容。我已确保“地图”正在发布“OccupancyGrid”消息,我们希望提取 OccupancyGrid.data 以用作“地图数据”。
任何帮助将不胜感激。
谢谢,
光盘
#!/usr/bin/env python
import rospy
import sys
import time
import os
from nav_msgs.msg import OccupancyGrid
from nav_msgs.msg import MapMetaData
from std_msgs.msg import String
from std_msgs.msg import Float64
from std_msgs.msg import Int8MultiArray
def callback(OccupancyGrid):
# mapdata = Int8MultiArray()
mapdata.data = OccupancyGrid.data
def talker():
global mapdata
mapdata = Int8MultiArray()
pub = rospy.Publisher('mapprob', Int8MultiArray, queue_size=10)
rospy.init_node('talker', anonymous=True)
rospy.Subscriber("map", OccupancyGrid, callback)
# mapdata.data = OccupancyGrid.data
rospy.loginfo(mapdata)
pub.publish(mapdata)
rospy.spin()
if __name__ == '__main__':
try:
talker()
except rospy.ROSInterruptException:
pass