Сортировочная ячейка Isaac Sim: CV-пайплайн и меши товаров
Замкнутый контур "поток -> CV -> механика": товары идут по конвейеру с шагом 700 мм, класс определяется стереопайплайном во время движения, пушер и плуг реагируют физически. Состав: * control_test/ - ячейка и CV. run_sorting_cv.py + cv_worker.py (два процесса, потому что torch внутри Isaac роняет сцену), cell.py (физика лент, плуга, пушера), measure_plane.py (замер габаритов), README.md и .memory.md с замерами, проблемами и ловушками * robozon_sorter/ - модули симуляции, scripts/ - утилиты, scene/ - сцены * assets/ - меши товаров, плуг, объекты Objaverse Бейзлайн CV: DEFOM-Stereo vitl, вход 480, iters 24, кроп зоны осмотра, без сегментации. На потоке 700 мм - классы 8/9, габариты MAE 32.8 мм, 469 мс на товар при такте 700 мс. Веса моделей (4.5 ГБ) и пропсы конвейера NVIDIA (274 МБ) не включены - источники и команды скачивания в MODELS.md. Выход прогонов (captures/, runtime/) не включён: воспроизводится. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
"""Does the threading violation clear if we just retry Scene.Define a few times?
|
||||
Never let an exception escape this script so stdout survives regardless of outcome."""
|
||||
import asyncio
|
||||
import omni.usd
|
||||
from pxr import UsdPhysics
|
||||
import isaacsim.core.experimental.utils.app as app_utils
|
||||
|
||||
omni.usd.get_context().open_stage("/home/dasha/robozon-sorter/scene/plow_cell_90_45_test.usd")
|
||||
print("opened, waiting...")
|
||||
await app_utils.update_app_async(steps=120)
|
||||
await asyncio.sleep(3.0)
|
||||
await app_utils.update_app_async(steps=60)
|
||||
stage = omni.usd.get_context().get_stage()
|
||||
print("stage settled, prim count:", len(list(stage.Traverse())))
|
||||
|
||||
for attempt in range(8):
|
||||
try:
|
||||
scene = UsdPhysics.Scene.Define(stage, "/World/PhysicsScene").GetPrim()
|
||||
print(f"attempt {attempt}: SUCCESS, prim valid={scene.IsValid()}")
|
||||
break
|
||||
except BaseException as exc:
|
||||
print(f"attempt {attempt}: FAILED, type={type(exc).__name__}")
|
||||
await app_utils.update_app_async(steps=60)
|
||||
await asyncio.sleep(1.0)
|
||||
else:
|
||||
print("all attempts failed")
|
||||
print("done")
|
||||
Reference in New Issue
Block a user