Веб интерфейс для корректировки работы ASP, его интеграция с алгоритмами генерации

This commit is contained in:
IDONTSUDO 2023-07-04 07:19:55 +00:00 committed by Igor Brylyov
parent 23edfea360
commit c1e4b0e0f0
57 changed files with 2969 additions and 290 deletions

1
asp/.gitignore vendored Normal file
View file

@ -0,0 +1 @@
out

View file

@ -1,17 +1,14 @@
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.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()
@ -19,8 +16,6 @@ if __name__ == "__main__":
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:
@ -44,13 +39,10 @@ if __name__ == "__main__":
generationFolder=args.generationFolder,
outPath=args.outPath
)
if (args.format == 'urdf' and args.stabilityCheck != None):
if (args.format == 'urdf'):
UrdfSubAssemblyUseCase().call(
geometryModels=geometryModels, assembly=assemblyStructure,
world=args.world,
generationFolder=args.generationFolder,
outPath=args.outPath
)
StabilityCheckUseCase().call(
args.outPath
)

View file

@ -1,11 +1,10 @@
from src.model.enum import Enum
import xmlformatter
from helper.fs import FS
import xmlformatter
class FormatterUseCase:
def call(outPath: str, format: str):
formatter = xmlformatter.Formatter(
formatter = xmlformatter(
indent="1", indent_char="\t", encoding_output="ISO-8859-1", preserve=["literal"])
files = FS.readFilesTypeFolder(

View file

@ -1,36 +0,0 @@
import numpy as np
import pybullet as p
import time
import pybullet_data
from helper.fs import FS
from src.usecases.urdf_sub_assembly_usecase import URDF_GENERATOR_FILE
import json
from src.model.enum import Enum
class StabilityCheckUseCase:
def call(self, outPath: str):
dirPath = outPath + Enum.folderPath
DURATION = 10000
asm = json.loads(FS.readFile(dirPath + URDF_GENERATOR_FILE))
inc = 0
for el in asm['asm2']:
FS.writeFile(data=el, filePath=dirPath,
fileName=str(inc) + '.urdf')
inc += 1
assemblyURDFS = list(
map(lambda el: dirPath+el, FS.readFilesTypeFolder(dirPath, '.urdf')))
physicsClient = p.connect(p.GUI)
p.setGravity(0, 0, -10)
for el in assemblyURDFS:
p.loadURDF(el)
for i in range(DURATION):
p.stepSimulation()
time.sleep(1./240.)
p.disconnect()

View file

@ -5,6 +5,7 @@ from src.model.asm import Assembly
from src.model.sdf_geometry import GeometryModel
from helper.fs import filterModels, listGetFirstValue
import json
import re
def toUrdf(el: GeometryModel):
@ -21,6 +22,7 @@ class UrdfSubAssemblyUseCase(Assembly):
generateSubAssemblyModels = self.generateSubAssembly(assembly)
inc = 0
for key, value in generateSubAssemblyModels.items():
keyAsm = int(re.findall(r'\d', key)[0])
inc += 1
if value['assembly'].__len__() != 0:
model: Optional[GeometryModel] = listGetFirstValue(
@ -32,11 +34,9 @@ class UrdfSubAssemblyUseCase(Assembly):
geometryModels, value['assembly'])))
urdfs.append(listGetFirstValue(
geometryModels, None, lambda x: x.name == value['part']) .toUrdf())
asm[key] = urdfs
asm[keyAsm] = urdfs
self.copy(generationFolder=generationFolder,
format='/sdf', outPath=outPath)
FS.writeFile(data=json.dumps(asm),
fileName=URDF_GENERATOR_FILE, filePath=dirPath)
# for el in asm.keys():