Beispiel #1
0
    def load():
        starttime = time.time() * 1000
        initdict_terrain = MapLoader.loadFile(
            "../../def/1_Terrain.yml")["terrain"]
        initdict_zones = MapLoader.loadFile("../../def/2_Zones.yml")["zones"]
        initdict_waypoints = MapLoader.loadFile(
            "../../def/3_Waypoints.yml")["waypoints"]
        initdict_entities = MapLoader.loadFile(
            "../../def/4_Entities.yml")["entities"]
        initdict_objects = MapLoader.loadFile(
            "../../def/5_Objects.yml")["objects"]
        # Instantiate objects before creating the map dict
        for zone in initdict_zones:
            initdict_zones[zone] = Zone(initdict_zones[zone])
        for waypoint in initdict_waypoints:
            initdict_waypoints[waypoint] = Waypoint(
                initdict_waypoints[waypoint])
        for entity in initdict_entities:
            initdict_entities[entity] = Entity(initdict_entities[entity])
        for obj in initdict_objects:
            initdict_objects[obj] = Object(initdict_objects[obj])
        rospy.loginfo("Loaded files in {0:.2f}ms.".format(time.time() * 1000 -
                                                          starttime))

        # Create main Map dict
        Map.MapDict = DictManager({
            "terrain": Terrain(initdict_terrain),
            "zones": DictManager(initdict_zones),
            "waypoints": DictManager(initdict_waypoints),
            "entities": DictManager(initdict_entities),
            "objects": DictManager(initdict_objects)
        })
        rospy.loginfo("Loaded map in {0:.2f}ms.".format(time.time() * 1000 -
                                                        starttime))
Beispiel #2
0
    def load():
        # Loading XML files
        starttime = time.time() * 1000
        xml_config = MapLoader.loadFile("1_config.xml")
        xml_terrain = MapLoader.loadFile("2_terrain.xml")
        xml_waypoints = MapLoader.loadFile("3_waypoints.xml")
        xml_objects = MapLoader.loadFile("4_objects.xml")
        xml_robot = MapLoader.loadFile("5_robot.xml")
        rospy.loginfo("Loaded files in {0:.2f}ms.".format(time.time() * 1000 -
                                                          starttime))

        # Setting current team to the default set one.
        for xml_team in xml_config.find("teams").findall("team"):
            if "default" in xml_team.attrib and bool(
                    xml_team.attrib["default"]):
                if MapManager.CurrentTeam != "":
                    raise ValueError(
                        "ERROR Two or more teams have been set to default.")
                MapManager.CurrentTeam = xml_team.attrib["name"]
            MapManager.Teams.append(Team(xml_team))
        if MapManager.CurrentTeam == "":
            raise ValueError("ERROR One team has to be set as default.")

        # Loading the color palette
        for xml_color in xml_config.find("colors").findall("color"):
            MapManager.Colors.append(Color(xml_color))

        # Constructing object classes
        if not xml_objects.findall("classes"):
            raise KeyError("Objects file must have a 'classes' tag.")
        obj_classes = []
        for c in xml_objects.find("classes").findall("class"):
            obj_classes.append(Class(c, obj_classes))

        # Instantiate objects and create the map dict
        MapDict.Terrain = Terrain(xml_terrain)
        xml_objects.attrib["name"] = "map"
        MapDict.Objects = Container(xml_objects, obj_classes)
        MapDict.Waypoints = [
            Waypoint(w) for w in xml_waypoints.findall("waypoint")
        ]
        MapDict.Robot = Robot(xml_robot, obj_classes)

        rospy.loginfo("Loaded map in {0:.2f}ms.".format(time.time() * 1000 -
                                                        starttime))