diff --git a/rmf_building_map_tools/building_map/building.py b/rmf_building_map_tools/building_map/building.py index 5c93ec36..f7339381 100644 --- a/rmf_building_map_tools/building_map/building.py +++ b/rmf_building_map_tools/building_map/building.py @@ -394,13 +394,15 @@ def generate_nav_graphs(self): nav_graphs[f'{i}'] = g return nav_graphs - def generate_sdf_world(self): + def generate_sdf_world(self, template_file): """ Return an etree of this Building in SDF starting from a template""" - template_name = 'gz_world.sdf' - - template_path = os.path.join( - get_package_share_directory('rmf_building_map_tools'), - f'templates/{template_name}') + if template_file == "": + template_name = 'gz_world.sdf' + template_path = os.path.join( + get_package_share_directory('rmf_building_map_tools'), + f'templates/{template_name}') + else: + template_path = template_file tree = parse(template_path) sdf = tree.getroot() diff --git a/rmf_building_map_tools/building_map/generator.py b/rmf_building_map_tools/building_map/generator.py index 05ea9250..d7b2c142 100644 --- a/rmf_building_map_tools/building_map/generator.py +++ b/rmf_building_map_tools/building_map/generator.py @@ -21,7 +21,8 @@ def generate_sdf( self, input_filename, output_filename, - output_models_dir + output_models_dir, + template_file ): print('generating {} from {}'.format(output_filename, input_filename)) @@ -40,7 +41,7 @@ def generate_sdf( building.generate_sdf_models(output_models_dir) # generate a top-level SDF for convenience - sdf = building.generate_sdf_world() + sdf = building.generate_sdf_world(template_file) indent_etree(sdf) sdf_str = str(ElementToString(sdf), 'utf-8') diff --git a/rmf_building_map_tools/building_map_generator/_init_argparse.py b/rmf_building_map_tools/building_map_generator/_init_argparse.py index bfe01a47..e09f29fc 100644 --- a/rmf_building_map_tools/building_map_generator/_init_argparse.py +++ b/rmf_building_map_tools/building_map_generator/_init_argparse.py @@ -16,7 +16,9 @@ help="Name of the .world file to output") shared_parser.add_argument("OUTPUT_MODEL_DIR", type=str, help="Path to output the map model files") - +shared_parser.add_argument("--TEMPLATE_WORLD_FILE", type=str, default="", + help="Specify the template for" + + " the base simulation.") # Create subparsers for Gazebo and Nav generation gazebo_parser = subparsers.add_parser( 'gazebo', diff --git a/rmf_building_map_tools/building_map_generator/building_map_generator.py b/rmf_building_map_tools/building_map_generator/building_map_generator.py index 00510836..23930661 100755 --- a/rmf_building_map_tools/building_map_generator/building_map_generator.py +++ b/rmf_building_map_tools/building_map_generator/building_map_generator.py @@ -16,7 +16,8 @@ def main(): g.generate_sdf( args.INPUT, args.OUTPUT_WORLD, - args.OUTPUT_MODEL_DIR + args.OUTPUT_MODEL_DIR, + args.TEMPLATE_WORLD_FILE ) if args.command == "nav":