import argparse import shutil from helper.fs import FS from src.usecases.stability_check_usecase import StabilityCheckUseCase from src.usecases.urdf_sub_assembly_usecase import UrdfSubAssemblyUseCase from src.usecases.sdf_generate_world_usecase import SdfGenerateWorldUseCase from src.model.sdf_geometry import GeometryModel from src.usecases.sdf_sub_assembly_usecase import SdfSubAssemblyUseCase import os # python3 main.py --generationFolder /Users/idontsudo/robo/Cube3/ --outPath /Users/idontsudo/robo/ --world true --format 'urdf' --stabilityCheck 'true' # python3 main.py --generationFolder /Users/idontsudo/robo/Cube3/ --outPath /Users/idontsudo/robo/ --world true --format 'sdf' if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument('--generationFolder', help='FreeCad generation folder') parser.add_argument('--outPath', help='save SDF path') parser.add_argument('--world', help='adding sdf world') parser.add_argument('--format', help='urdf,sdf,mujoco') parser.add_argument('--stabilityCheck', help='do i need to check the stability?') args = parser.parse_args() if args.generationFolder == None or args.outPath == None: parser.print_help() outPath = args.outPath geometryFiles = FS.readFilesTypeFolder(args.generationFolder + '/assets/') assemblyStructure = FS.readJSON( args.generationFolder + '/step-structure.json') geometryModels: list[GeometryModel] = [] for el in geometryFiles: geometryModels.append(GeometryModel.from_dict( FS.readJSON(args.generationFolder + '/assets/' + el))) if os.path.exists(outPath + 'sdf-generation/'): shutil.rmtree(path=outPath + 'sdf-generation/') if (args.format == 'sdf'): SdfSubAssemblyUseCase().call( geometryModels=geometryModels, assembly=assemblyStructure, world=args.world, generationFolder=args.generationFolder, outPath=args.outPath ) if (args.format == 'urdf' and args.stabilityCheck != None): UrdfSubAssemblyUseCase().call( geometryModels=geometryModels, assembly=assemblyStructure, world=args.world, generationFolder=args.generationFolder, outPath=args.outPath ) StabilityCheckUseCase().call( args.outPath )