# [ADR-0002] 물리 정책: 운동학 시뮬 + 토크 후처리 리포트

작성: 2026-05-07
상태: ✅ 확정 (어시스턴트 판단으로 채택, 사용자 위임 2026-05-07)
관련: ADR-0001 4대 정체성 원칙 #2 수정

## 결정

시뮬레이션 동작 자체는 **운동학(수학 transform)**으로만 처리한다. 토크·관성·부하는 **시뮬 종료 후 후처리 계산** 또는 **별도 정적 계산기**로 제공한다.

## 채택안 — 옵션 D + B 조합

```
[시뮬 진행 — 운동학]
   - 부품 transform 수학 계산
   - 충돌 감지(AABB/OBB)는 Unity Physics 사용
   - 모션 데이터(각가속도·속도·시간) 자동 캡처
        ↓
[시뮬 종료 — 후처리]
   - 부품 입력 속성 read: mass / inertia / friction / gear-ratio
   - 토크 계산: T = J·α + 마찰토크 + 부하토크
   - 결과 리포트: "필요 모터 토크 = X N·m, 안전계수 1.5 적용 시 Y N·m"
        ↓
[정적 계산기 — 시뮬 없이도]
   - 사용자 직접 입력 → 즉시 견적 토크
```

## 부품 입력 속성 확장

기존 (id/name/type/movable/transform/movement)에 **선택 입력**으로 추가:

| 속성 | 단위 | 디폴트 |
|---|---|---|
| mass | kg | 0 (계산 비활성) |
| inertia | kg·m² | 자동(메시 기준 추정) |
| friction | μ | 0.1 (강철-강철 기본값) |
| gear_ratio | : | 1 |
| load | N 또는 N·m | 0 |

mass=0이면 토크 계산 자동 스킵 → 운동학 시뮬만 동작 (현재 동작과 동일).

## 채택하지 않은 대안

### A. Kinematic / Dynamic 모드 토글 (시뮬에 Rigidbody 활성)
- 두 모드 결과가 다를 수 있어 사용자 검증 부담
- Engineering이 Rigidbody 튜닝(NaN·jitter·침투)까지 부담 → MVP 이전 무리
- → Phase 3 Pro 옵션으로 보존

### B (단독). 정적 계산기만
- "동적" 시뮬이 아니라 "정적" 입력 계산 → 차별화 약함
- 사용자가 시뮬 안 돌리고도 답 → 시뮬 가치 절하
- → 보조 도구로 함께 제공 (단독 채택 X)

### C. 3단계 정확도 Light/Medium/Heavy
- 분기 코드 폭주 → Lean Team 유지보수 부담

## 정확도 책임 / 클레임 방어

본 토크 후처리는 **사양 산정 가이드**로 명시. 정확도 보증 X.

- UI에 "산정 가이드" 라벨 항상 표시
- 결과 리포트 헤더: "본 결과는 입력값 기반 산정 추정. 실제 모터 선정 시 안전계수 + 제조사 사양 재확인 필수."
- 라이선스 약관에 "사양 산정 도구로서의 제공" 명시

## ADR-0001 4대 정체성 원칙 #2 수정

**기존**: "물리엔진 최소 — 힘·질량·반발력 계산 금지. 충돌 감지에만 Physics 사용. 모든 움직임은 수학 transform."

**수정 후**:
> "**물리엔진 최소** — 시뮬 동작은 수학 transform으로만 처리. 충돌 감지에만 Unity Physics 사용. 토크·부하 계산은 **시뮬 종료 후 후처리** 또는 **별도 정적 계산기**로 제공 (시뮬 안정성과 분리, 사양 산정 가이드로 명시)."

핵심 보존: 시뮬 안정성 = 운동학 100%.
추가: 사용자가 원하는 정량 답("이 모터로 충분한가?")은 후처리·정적 계산으로 별도 제공.

## 사업 가치 영향

| 축 | 운동학만 | 운동학 + 토크 후처리 |
|---|---|---|
| 영업 단계 | 동작 검증 | **사양 결정** |
| 가치 제안 | "충돌 안 함 / 동작 OK" | "필요 모터 = 0.8 N·m / 감속비 1:30" |
| 단가 명분 | 200~500만 | **300~700만 (Pro 티어)** |
| 차별화 | 운동학 시뮬 (Visual Components 일부) | **사양 산정 통합** (Tecnomatix 풀 동역학과 풀 운동학 사이 빈 시장) |
| 클레임 위험 | 없음 | "산정 가이드" 명시로 통제 가능 |

→ 단가 가설 갱신:
- **Free**: glTF 임포트, 기본 Constraint, 운동학 시뮬
- **Pro**: 200~500만 → **300~700만** (STEP 변환 + 토크 후처리 + MeshCollider 정적 검증)
- **Enterprise**: 1,000~3,000만 (PLC 연동 + 사이트 라이선스)

## MVP 범위 (2026-05-07 사용자 우선순위 갱신)

**토크 후처리 관련 모드 전체를 후순위로 미룸 — 기본 수학 기반 시스템 완성 + 상용화 이후 추가.**

| 항목 | 단계 |
|---|---|
| 운동학 시뮬 (현재) | P1 |
| 부품 입력 속성 스키마 정의 (mass·friction·gear_ratio) | P1 (스키마만, 계산 비활성) |
| 토크 후처리 리포트 (기본) | **P3+ (상용화 이후)** |
| 정적 토크 계산기 (별도 패널) | **P3+ (상용화 이후)** |
| Dynamic 모드 (Rigidbody) | P3+ (Pro 고급) |

P1·P2는 운동학 + 충돌 감지만. 부품 속성 스키마는 P1에 정의만 해두되 후처리 계산 모듈은 출시 이후 추가. 사양 산정 가치를 출시 가격대 정당화 근거로 사용하지 않는다 — 출시 후 별도 모듈/단가 재평가 단계로 전환.

## Why — 우선순위 갱신 (2026-05-07)

사용자 명시: "토크 후처리 관련된 모드는 우선순위 최후로 미룬다. 우선 기본 수학 기반의 시스템 완성 및 상용화 이후에 진행해도 된다."

근거:
1. **출시 가능성 우선** — 토크 모듈은 정확도 책임·산업별 입력 검증·UI 분기로 작업량 큰 모듈. MVP에 포함 시 출시 일정 지연 위험.
2. **상용화 후 검증 데이터** — 실 고객 운동학 시뮬 사용 패턴이 쌓인 후 토크 모듈 우선순위·범위를 데이터 기반으로 결정 가능.
3. **클레임 위험 회피** — 출시 단계에는 "산정 가이드" 자체를 노출하지 않음 → 정확도 분쟁 자체가 없는 단순 구조.
4. **단가 정직성** — Pro 단가를 운동학 + STEP 변환 + 충돌 검증 + 데이터 익스포트 기준으로만 정당화. 후속 사양 산정 모듈 추가 시 단가 재평가.

## 후속 결정 대기

- 안전계수 디폴트(현재 1.5 가정) — 산업별·고객별 조정 가능 옵션
- 단위계 표시 (SI 기본 / inch·oz·in 옵션 추가 여부)
- 모터 카탈로그 데이터베이스 통합 가부 (Phase 3+)

## 참조

- ADR-0001 제품 비전 (4대 원칙)
- ADR-cad-0001 STEP 임포트 전략
- 사용자 결정 위임: 2026-05-07 "q123 두가지다 너가판단후 진행"
