Сортировочная ячейка 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,23 @@
|
||||
"""Does bottle's referenced mesh actually carry collision, compared to a working item?"""
|
||||
import omni.usd
|
||||
from pxr import Usd, UsdGeom, UsdPhysics
|
||||
import sys
|
||||
sys.path.insert(0, "/home/dasha/robozon-sorter")
|
||||
from robozon_sorter import config as C
|
||||
|
||||
for name in ["bottle", "box_300x200x200", "bag", "helmet"]:
|
||||
tmp_stage = Usd.Stage.CreateInMemory()
|
||||
prim = tmp_stage.DefinePrim("/probe", "Xform")
|
||||
prim.GetReferences().AddReference(str(C.ROOT / "assets" / "items" / f"{name}.usd"))
|
||||
print(f"=== {name} ===")
|
||||
n_col = 0
|
||||
n_mesh = 0
|
||||
for p in Usd.PrimRange(prim):
|
||||
if p.IsA(UsdGeom.Mesh):
|
||||
n_mesh += 1
|
||||
has_col = p.HasAPI(UsdPhysics.CollisionAPI) or p.HasAPI(UsdPhysics.MeshCollisionAPI)
|
||||
if has_col:
|
||||
n_col += 1
|
||||
approx = p.GetAttribute("physics:approximation")
|
||||
print(f" {p.GetPath()} type={p.GetTypeName()} approx={approx.Get() if approx else None}")
|
||||
print(f" meshes={n_mesh} prims_with_collision={n_col}")
|
||||
Reference in New Issue
Block a user