f8b21af4be
10_Wiki/Topics 대규모 정리: - 오류 캡처/미완성 stub 문서 227개 제거 - 교차폴더 중복 43클러스터 병합 (63파일 → redirect) - 링크명 정규화: 깨진 링크 수정·redirect 직결·개념 매핑 ~2,400건 - 카테고리 MOC 6개 신규 생성 - Graph 섹션 미해결 related-keyword 링크 10,058건 제거 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
148 lines
4.8 KiB
Markdown
148 lines
4.8 KiB
Markdown
---
|
|
id: wiki-2026-0508-digital-twins
|
|
title: Digital Twins
|
|
category: 10_Wiki/Topics
|
|
status: verified
|
|
canonical_id: self
|
|
aliases: [Digital Twin, DT, Cyber-Physical Mirror]
|
|
duplicate_of: none
|
|
source_trust_level: A
|
|
confidence_score: 0.9
|
|
verification_status: applied
|
|
tags: [iot, simulation, cps, industry-4]
|
|
raw_sources: []
|
|
last_reinforced: 2026-05-10
|
|
github_commit: pending
|
|
tech_stack:
|
|
language: Python/C++
|
|
framework: NVIDIA-Omniverse/Azure-DigitalTwins
|
|
---
|
|
|
|
# Digital Twins
|
|
|
|
## 매 한 줄
|
|
> **"매 physical asset/system 의 매 live, bidirectional digital replica"**. Grieves 2002 의 PLM concept 가 매 IoT, sensor cost 폭락, real-time sim, generative AI 의 만남으로 매 Industry 4.0 의 핵심. 매 NVIDIA Omniverse, Azure Digital Twins, Siemens Xcelerator 의 2026 era — physical + digital 의 매 closed loop.
|
|
|
|
## 매 핵심
|
|
|
|
### 매 3 layer
|
|
- **Physical**: 실제 자산 + sensor (vibration, temp, pressure, camera).
|
|
- **Communication**: MQTT/OPC-UA/AMQP, time-series store, edge gateway.
|
|
- **Digital**: 3D model + physics sim + ML predictor + control logic.
|
|
|
|
### 매 spectrum
|
|
- **Digital model**: static 3D, no live data.
|
|
- **Digital shadow**: one-way (physical → digital).
|
|
- **Digital twin**: bidirectional — twin can command physical.
|
|
|
|
### 매 응용
|
|
1. Predictive maintenance (jet engine, wind turbine).
|
|
2. Smart city traffic / energy optimization.
|
|
3. Manufacturing line virtual commissioning.
|
|
4. Healthcare (patient-specific organ twin).
|
|
5. Robot fleet sim (NVIDIA Isaac, Omniverse).
|
|
|
|
## 💻 패턴
|
|
|
|
### Sensor → twin (MQTT + Python)
|
|
```python
|
|
import paho.mqtt.client as mqtt, json, time
|
|
|
|
def on_message(c, u, msg):
|
|
data = json.loads(msg.payload)
|
|
twin.update_state(asset_id=data['id'], temp=data['temp'], ts=data['ts'])
|
|
if twin.predict_failure(data['id']) > 0.8:
|
|
c.publish(f"cmd/{data['id']}/throttle", "0.5") # bidirectional!
|
|
|
|
cli = mqtt.Client(); cli.on_message = on_message
|
|
cli.connect("mqtt.factory.local"); cli.subscribe("sensor/+"); cli.loop_forever()
|
|
```
|
|
|
|
### Azure Digital Twins (DTDL)
|
|
```json
|
|
{
|
|
"@id": "dtmi:com:factory:Pump;1",
|
|
"@type": "Interface",
|
|
"displayName": "Pump",
|
|
"contents": [
|
|
{ "@type": "Property", "name": "rpm", "schema": "double" },
|
|
{ "@type": "Telemetry", "name": "vibration", "schema": "double" },
|
|
{ "@type": "Command", "name": "shutdown" },
|
|
{ "@type": "Relationship", "name": "feeds", "target": "dtmi:com:factory:Tank;1" }
|
|
]
|
|
}
|
|
```
|
|
|
|
### Physics-based twin (Modelica via FMU)
|
|
```python
|
|
from fmpy import simulate_fmu
|
|
result = simulate_fmu(
|
|
'pump.fmu',
|
|
start_values={'inlet_pressure': 2.5, 'rpm': 1800},
|
|
output=['outlet_pressure', 'efficiency'],
|
|
stop_time=10.0
|
|
)
|
|
```
|
|
|
|
### Omniverse USD scene (live update)
|
|
```python
|
|
from pxr import Usd, UsdGeom, Gf
|
|
stage = Usd.Stage.Open('factory.usd')
|
|
pump = UsdGeom.Xform.Get(stage, '/World/Pump_01')
|
|
# Stream live sensor pose via OmniGraph / Live Sync
|
|
def on_telemetry(rpm, vibration):
|
|
pump.GetPrim().GetAttribute('rpm:live').Set(rpm)
|
|
pump.GetPrim().GetAttribute('vib:live').Set(vibration)
|
|
```
|
|
|
|
### Predictive maintenance (LSTM)
|
|
```python
|
|
import torch.nn as nn
|
|
class FailurePredictor(nn.Module):
|
|
def __init__(self, n_sensors=8):
|
|
super().__init__()
|
|
self.lstm = nn.LSTM(n_sensors, 64, batch_first=True)
|
|
self.head = nn.Linear(64, 1)
|
|
def forward(self, x): # (B, T, n_sensors)
|
|
h, _ = self.lstm(x)
|
|
return torch.sigmoid(self.head(h[:, -1]))
|
|
# Train on (sensor window, RUL label) pairs from CMAPSS / NASA dataset.
|
|
```
|
|
|
|
## 매 결정 기준
|
|
| 상황 | Approach |
|
|
|---|---|
|
|
| Single asset, simple monitoring | Digital shadow (cheap) |
|
|
| Fleet w/ predictive maint. | Twin + ML failure model |
|
|
| Process plant commissioning | Physics twin (FMU/Modelica) |
|
|
| Robotics / AV training | Sim-to-real (Isaac, CARLA) |
|
|
| Smart city / building | Hierarchical twins (DTDL) |
|
|
|
|
**기본값**: 매 start digital shadow → ML 추가 후 twin → bidirectional 마지막.
|
|
|
|
## 🔗 Graph
|
|
- 부모: [[Cyber-Physical Systems]]
|
|
- 응용: [[Predictive Maintenance]]
|
|
- Adjacent: [[NVIDIA Omniverse]]
|
|
|
|
## 🤖 LLM 활용
|
|
**언제**: IoT/manufacturing/CPS context, sim2real planning, asset lifecycle.
|
|
**언제 X**: Pure web app, no physical asset. 매 marketing buzzword 화 주의.
|
|
|
|
## ❌ 안티패턴
|
|
- **3D model = twin 오해**: 매 3D 만으론 shadow도 아님.
|
|
- **Sensor 무인 데이터**: garbage in → garbage twin.
|
|
- **No model versioning**: physical 변경 시 twin drift.
|
|
- **Closed-loop without safety**: bidirectional 시 매 fail-safe + human-in-loop 필수.
|
|
- **Vendor lock-in**: proprietary schema → DTDL/USD 표준 사용.
|
|
|
|
## 🧪 검증 / 중복
|
|
- Verified (Grieves 2014, NIST CPS framework, Azure DT docs, NVIDIA Omniverse docs).
|
|
- 신뢰도 A.
|
|
|
|
## 🕓 Changelog
|
|
| 날짜 | 변경 |
|
|
|---|---|
|
|
| 2026-05-08 | Phase 1 |
|
|
| 2026-05-10 | Manual cleanup — DT layers + DTDL/Omniverse/MQTT patterns |
|