Ejemplo n.º 1
0
    def __init__(self):
        # Save the name of the node
        self.node_name = rospy.get_name()

        
        rospy.loginfo("[%s] Initializing." %(self.node_name))

        # Setup publishers
        self.pub_markers = rospy.Publisher("visualization_marker",Marker, queue_size=1)
        self.pub_marker_arrays = rospy.Publisher("visualization_marker_array", MarkerArray, \
                                                 queue_size=1)
        # Setup subscribers
        #self.sub_marker_arrays = rospy.Subscriber("visualization_marker_array", MarkerArray, \
        #                                          self.cbTopic)
        # Read parameters
        self.pub_timestep = self.setupParameter("~pub_timestep",1.0)
        # TODO rmata: parameter for map: map.yam

        # === Load tiles and maps === #
        rospack = rospkg.RosPack()
        self.pkg_path = rospack.get_path('simcity')
        self.mapfile = self.setupParameter("~map_file", self.pkg_path+"/maps/map.yaml") 
        self.tilesfile = self.setupParameter("~tiles_file", self.pkg_path+"/tiles/tiles.yaml")

        # Create a timer that calls the cbTimer function every 1.0 second
        self.tile_factory = TileProduction(self.mapfile, self.tilesfile)
        self.timer = rospy.Timer(rospy.Duration.from_sec(self.pub_timestep),self.cbTimer)

        self.tile_index = 0

        rospy.loginfo("[%s] Initialized." %(self.node_name))
Ejemplo n.º 2
0
class BasicMapTiler(object):
    def __init__(self):
        # Save the name of the node
        self.node_name = rospy.get_name()

        
        rospy.loginfo("[%s] Initializing." %(self.node_name))

        # Setup publishers
        self.pub_markers = rospy.Publisher("visualization_marker",Marker, queue_size=1)
        self.pub_marker_arrays = rospy.Publisher("visualization_marker_array", MarkerArray, \
                                                 queue_size=1)
        # Setup subscribers
        #self.sub_marker_arrays = rospy.Subscriber("visualization_marker_array", MarkerArray, \
        #                                          self.cbTopic)
        # Read parameters
        self.pub_timestep = self.setupParameter("~pub_timestep",1.0)
        # TODO rmata: parameter for map: map.yam

        # === Load tiles and maps === #
        rospack = rospkg.RosPack()
        self.pkg_path = rospack.get_path('simcity')
        self.mapfile = self.setupParameter("~map_file", self.pkg_path+"/maps/map.yaml") 
        self.tilesfile = self.setupParameter("~tiles_file", self.pkg_path+"/tiles/tiles.yaml")

        # Create a timer that calls the cbTimer function every 1.0 second
        self.tile_factory = TileProduction(self.mapfile, self.tilesfile)
        self.timer = rospy.Timer(rospy.Duration.from_sec(self.pub_timestep),self.cbTimer)

        self.tile_index = 0

        rospy.loginfo("[%s] Initialized." %(self.node_name))

    def setupParameter(self,param_name,default_value):
        value = rospy.get_param(param_name,default_value)
        rospy.set_param(param_name,value) #Write to parameter server for transparancy
        rospy.loginfo("[%s] %s = %s " %(self.node_name,param_name,value))

        return value

    def cbTopic(self,msg):
        rospy.loginfo("[%s] Received markarray number %s" %(self.node_name, self.tile_index))
        self.tile_index += 1

    # does the publishing of actual markers
    def cbTimer(self,event):
        while (self.pub_marker_arrays.get_num_connections() < 1):
            if rospy.is_shutdown():
                return 0
            rospy.loginfo("Please create a subscriber to the marker")
            self.tile_index = 0 # reset markerarray count
            rospy.sleep(5)
        #continue through the list of tiles in the map
        if self.pub_marker_arrays.get_num_connections() >= 1:
            if self.tile_index >= self.tile_factory.get_num_tiles_in_map():
                return
            fullmsg = self.tile_factory.get_certain_tile_message(self.tile_index)
            self.pub_marker_arrays.publish(fullmsg)
            self.tile_index += 1 

    def on_shutdown(self):
        rospy.loginfo("[%s] Shutting down." %(self.node_name))