0d32f32db0
Замкнутый контур "поток -> 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>
21 lines
799 B
Python
21 lines
799 B
Python
"""Skip reopening the stage - it's already loaded (367 prims). Just prepare() it in place
|
|
to test whether the threading violation is specific to the reopen, not to editing per se."""
|
|
import sys
|
|
REPO = "/home/dasha/robozon-sorter"
|
|
if REPO not in sys.path:
|
|
sys.path.insert(0, REPO)
|
|
for _m in [k for k in list(sys.modules) if k.startswith("robozon_sorter")]:
|
|
del sys.modules[_m]
|
|
import importlib
|
|
importlib.invalidate_caches()
|
|
|
|
import omni.usd
|
|
import isaacsim.core.experimental.utils.app as app_utils
|
|
from robozon_sorter.sim import plow_cell_9045
|
|
|
|
stage = omni.usd.get_context().get_stage()
|
|
print("current stage:", stage.GetRootLayer().identifier, "prims:", len(list(stage.Traverse())))
|
|
|
|
info = await plow_cell_9045.prepare(stage, belt_speed=1.0, script_control=True)
|
|
print("prepare OK:", info)
|