선수 지식과 준비물
모바일 로봇의 월드·리셋·고정 스텝은 M09.01, 센서 설정은 M09.03에서 이어 배운다. 아래 PhysX 파라미터 이름과 Gazebo 시스템 플러그인·센서 구성은 다른 인터페이스다. 같은 로봇 형상이나 시간 스텝만 맞추어 두 시뮬레이터가 같은 접촉·오도메트리·센서 결과를 낸다고 가정하지 않는다.
E4의 M19.02 계획 장면, M19.04 시뮬레이터 비교, M30.01 Reality Gap 진단과 연결한다. 계획기의 충돌 검사와 동역학 시뮬레이션, 실물 접촉 검증을 같은 결과로 취급하지 않는다.
M10.03 접촉·마찰·CCD, M10.04 질량·관성·Articulation, M10.05 물리/렌더 스텝이 아래 물리 실험의 개념 기초다. 이 장의 PhysX 관련 옵션·문서는 PhysX 경로를 설명하며, 다른 백엔드에 같은 속성·결과가 그대로 적용된다고 가정하지 않는다.
물리 파라미터를 입력하기 전 M07.01 질량·관성·중력에서 힘과 토크를 구분하고 M08.01 모델 요소와 M08.04 관성·충돌 형상에서 시각 형상과 물리 모델을 분리한다. 제어 응답 문제는 M07.06 필터·지연과 함께 해석하며 모든 불안정성을 시간 스텝 하나로 해결한다고 가정하지 않는다.
이 장에 앞서 M02.01 벡터·행렬, M02.02 회전·변환, M02.03 미분과 시간 변화를 확인한다. 힘·운동·계산 예제의 단위가 낯설면 각 수량을 SI 단위로 적고 식을 따라가며 계산부터 수행한다. 기존 Isaac Sim 실습은 GPU가 있는 선택 실행 경로다. GPU 없는 기본 학습은 본문의 변환·시간간격·마찰 예측과 브라우저 개념 모형/기록 해석으로 구분하며, 이것을 PhysX 실제 실행 결과로 제출하지 않는다.
자산을 장면에 합성하기 전 M25.01 자산 계층·단위·재질 검수에서 참조의 단위 보정과 외관/충돌/질량·물리 재질을 별도로 확인한다. 단위 메타데이터 변경만으로 좌표·명시 질량이 자동 보정된다고 가정하지 않으며, 정적 명세 충족과 동적 접촉·실물 검증을 구분한다.
선수 지식
- Python과 NumPy의 배열 연산
- 벡터, 행렬 곱, 전치행렬, 역행렬
- 고전역학의 힘, 질량, 속도, 운동에너지
- 제1장의 USD Stage, Prim, Attribute 개념
기준 환경
- Ubuntu 24.04 LTS
- NVIDIA RTX GPU와 호환 드라이버
- NVIDIA Isaac Sim: 기준 환경 문서와 호환되는 검증 릴리스를 선택하고 실제 버전·드라이버를 기록한다.
- Python 3.12(범용 수학 예제), Isaac Sim 내장 Python(시뮬레이터 예제)
Isaac Sim 공식 요구사항은 Ubuntu 22.04와 24.04를 지원 대상으로 명시하고, 복잡한 장면에는 충분한 RAM과 VRAM이 필요하다고 안내한다. 정확한 GPU/드라이버 요구사항은 릴리스마다 달라지므로 설치 직전에 Isaac Sim Requirements를 확인한다. 이 책의 코드는 특정 GPU 성능을 보장하지 않으며 출력은 예시이다.
안전 메모
이 장은 주로 시뮬레이션을 다루지만 결과를 실물 로봇에 옮길 때는 별도 안전 검증이 필요하다. 물체 질량, 마찰, 토크 한계가 잘못되면 시뮬레이션에서 안전했던 궤적도 실물에서 미끄러짐이나 충돌을 일으킨다. 실물 적용 전에는 속도와 토크를 낮추고, 작업 공간을 비우며, 비상 정지 장치를 손이 닿는 위치에 둔다.