---
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 |
