728x90
실린더 외란 감지 + 알람 시스템 (Unity + AI)
🎯 목표
Unity에서 실린더의 동작을 시뮬레이션하고, 외란(지연, 위치 오차, 튀는 현상 등)을 감지하는 AI 모델을 적용하여 알람 시스템을 만들자.
🧩 사용 기술
- Unity 2021+ (시뮬레이터 제작)
- C# (센서/실린더 제어, 로그 저장)
- Python (Autoencoder 또는 이상탐지 모델)
- 머신러닝: 이상 탐지 기반 분류 모델 (Isolation Forest / Autoencoder)
🖼️ 시뮬레이션 화면 예시
💬 실린더가 동작할 때, 예상 위치에 도달하지 않거나 도달 시간이 지연되면 AI가 외란 상태로 판단하고 알림 발생
🛠 Unity 구현 단계
1️⃣ 실린더 제어 시뮬레이션
🎮 오브젝트 구성
| 오브젝트 | 설명 |
| Cylinder | 실린더 역할, 위치 이동 |
| Target | 목표 위치 |
| LightSensor | 도착 여부 판단 |
| AlarmPanel | 경고 UI 표시 |
🎮 이동 스크립트 (C#)
public class CylinderMover : MonoBehaviour
{
public Transform target;
public float speed = 2.0f;
public float moveStartTime;
public bool isMoving = false;
void Update()
{
if (isMoving)
{
transform.position = Vector3.MoveTowards(transform.position, target.position, speed * Time.deltaTime);
if (Vector3.Distance(transform.position, target.position) < 0.01f)
{
isMoving = false;
float arrivalTime = Time.time - moveStartTime;
Debug.Log("도착 시간: " + arrivalTime);
CylinderLogger.Instance.LogArrival(arrivalTime);
}
}
}
public void StartMove()
{
moveStartTime = Time.time;
isMoving = true;
}
}
2️⃣ 외란 기준 데이터 로깅
public class CylinderLogger : MonoBehaviour
{
public static CylinderLogger Instance;
public List<float> log = new List<float>();
void Awake() => Instance = this;
public void LogArrival(float time)
{
log.Add(time);
// 예: time > 2.5초면 외란으로 라벨링 가능
}
}
3️⃣ 외란 라벨링 기준 예시
| 도착 시간 (sec) | 외란 여부 |
| 1.5 | 정상 |
| 2.7 | 외란 (지연) |
| 1.6 | 정상 |
| 3.2 | 외란 |
이 데이터를 Python으로 Export (CSV)해서 학습에 사용합니다.
🧠 AI 모델 학습 (Python 예시)
Autoencoder 기반 이상 탐지
from sklearn.ensemble import IsolationForest
import pandas as pd
df = pd.read_csv("cylinder_data.csv")
model = IsolationForest()
model.fit(df[['arrival_time']])
df['anomaly'] = model.predict(df[['arrival_time']])
- 1 → 정상, -1 → 외란
- 모델을 Pickle 파일로 저장하여 Unity와 연동하거나, threshold 기반으로 Unity 내에서 직접 분류 가능
🖥 Unity 내 이상 감지 및 알람 출력
알람 표시 스크립트
public class AlarmController : MonoBehaviour
{
public GameObject alarmUI;
public void CheckForAnomaly(float arrivalTime)
{
if (arrivalTime > 2.5f) // 기준 시간 설정
{
alarmUI.SetActive(true);
Debug.Log("⚠️ 외란 감지됨! 알람 발생");
}
else
{
alarmUI.SetActive(false);
}
}
}
- 외란이 발생하면 빨간 경고창 (AlarmPanel) 활성화
🎮 UI 구성 추천
| UI 요소 | 설명 |
| TextMeshPro | "정상 동작" / "외란 발생" 표시 |
| LED Light (빨강) | 외란 시 점등 |
| Reset 버튼 | 다시 테스트 가능 |
| Chart 버튼 | 로그 기반 도착 시간 시각화 (선택 사항) |
🎁 기대 결과
- 실린더 동작의 정상/비정상 판단 가능
- 외란 발생 시 즉각 경고 → 공정 품질 확보
- AI 기반 판단으로 휴먼 에러 감소
📊 실습 요약
| 항목 | 설명 |
| 센서 시뮬레이션 | 실린더 위치/도착 감지 |
| 외란 기준 정의 | 도착 시간, 위치 오차 |
| AI 모델 적용 | 이상 탐지 기반 분류 |
| 알람 출력 | Unity UI로 알림 표시 |
🔖 사용 태그
#Unity공정제어 #실린더제어 #AI이상탐지 #Autoencoder #IsolationForest #스마트팩토리 #외란감지 #산업자동화
📌 다음 편 예고
3편. 예측 기반 실린더 속도 제어 – LSTM으로 도착 시간 예측하고 제어 자동화하기
728x90
'인공지능 & 데이터 사이언스 > 연구 및 테스트' 카테고리의 다른 글
| 🧪 스마트팩토리 AI 시리즈 – 5편 (2) | 2025.06.02 |
|---|---|
| 🤖 스마트팩토리 AI 시리즈 – 4편 (6) | 2025.06.01 |
| ⚙️ 스마트팩토리 AI 시리즈 – 3편 (2) | 2025.05.31 |
| Unity + AI 스마트팩토리 시리즈 (0) | 2025.05.29 |
| AI로 설비 이상을 사전에 감지하는 방법! – 스마트팩토리 데이터 분석 실전 (0) | 2025.05.29 |