풀 코드가 아닌 부분적인 함수
# 옴니버스와 상호작용하기 위한 핵심 기능을 제공하는 기본 모듈들
import omni
import omni.usd
# Isaac Lab 모듈에서 ISAAC_NUCLEUS_DIR 상수를 가져옴
from omni.isaac.lab.utils.assets import ISAAC_NUCLEUS_DIR
# 'UsdGeom'은 도형 생성 및 조작, 변환, 경계 상자 액세스 등의 도형 관련 클래스 및 기능을 제공
from pxr import UsdGeom
def get_prim_height(prim_path):
# omni.usd.get_context(): Omniverse Isaac Sim이 사용하는 현재 USD 컨텍스트(단계)를 검색. 현재 장면(또는 무대)과 상호 작용
# USD 단계 내 prim_path에 위치한 프림의 월드 공간 경계 상자를 계산. 경계 상자를 정의하는 최소 및 최대 좌표(두 개의 3D 벡터로)를 반환
bbox = omni.usd.get_context().compute_path_world_bounding_box(prim_path)
print(bbox) # [(xmin, ymin, zmin), (xmax, ymax, zmax)] 결과값 나옴
# 높이를 구함
height = bbox[1][2] - bbox[0][2]
print(f'table height = {height}')
return height
# USD 파일 불러오기
cfg = sim_utils.UsdFileCfg(usd_path=f"{ISAAC_NUCLEUS_DIR}/Props/Mounts/SeattleLabTable/table_instanceable.usd")
# cfg.func : 이 함수는 테이블 모델을 장면에 로드함
# '/World/Objects/Table' 위치에 테이블 저장하고 (0.0, 0.0, 1.05) 좌표에 배치
cfg.func("/World/Objects/Table", cfg, translation=(0.0, 0.0, 1.05))
# 2. 크기를 측정하는 함수에 해당 object의 path를 보내 가져옴
table_height = get_prim_height("/World/Objects/Table")