728x90

🟢 1편: 센서 기반 물체 감지 시뮬레이터 만들기

🎯 목표

Unity에서 광센서와 정전용량 센서를 구현하고, 머신러닝을 통해 물체 감지 이상을 AI로 판단


🖼️ 시뮬레이션 화면 예시

 

설명: 다양한 물체가 이송되고, 센서가 감지 여부를 판단. AI가 센서 이상을 탐지하면 화면에 알림 표시됨.


🔧 Unity 구현 과정

1️⃣ 씬 구성

  • 물체(GameObject) 프리팹: Cube, Sphere, MetalObject
  • 센서 오브젝트 2개 생성: CapacitiveSensor, LightSensor
  • Conveyor Belt 시뮬레이션: Scroll script로 이동 구현

2️⃣ 센서 감지 스크립트 (C#)

public class SensorTrigger : MonoBehaviour
{
    public bool isDetected = false;

    void OnTriggerEnter(Collider other)
    {
        if (other.CompareTag("Item"))
        {
            isDetected = true;
        }
    }

    void OnTriggerExit(Collider other)
    {
        if (other.CompareTag("Item"))
        {
            isDetected = false;
        }
    }
}

🧠 AI 모델 학습용 데이터 생성

3️⃣ 센서 로그 기록 스크립트

public class SensorLogger : MonoBehaviour
{
    public SensorTrigger capacitiveSensor;
    public SensorTrigger lightSensor;

    void Update()
    {
        string log = Time.time + "," +
                     (capacitiveSensor.isDetected ? 1 : 0) + "," +
                     (lightSensor.isDetected ? 1 : 0);
        Debug.Log(log);
        // 파일 저장 가능 (StreamWriter 등 사용)
    }
}

예시 데이터 포맷 (CSV):

Time,Capacitive,Light,Label
0.5,1,1,Normal
0.6,0,1,Abnormal

📊 AI 모델 학습 (Python 예시)

from sklearn.ensemble import IsolationForest
import pandas as pd

df = pd.read_csv("sensor_log.csv")
model = IsolationForest()
model.fit(df[['Capacitive', 'Light']])
df['anomaly'] = model.predict(df[['Capacitive', 'Light']])

📣 Unity 내 이상 감지 표

void Update()
{
    if (sensorA.isDetected && !sensorB.isDetected)
    {
        // 이상 상태 시 UI 알람
        warningText.SetActive(true);
    }
}

🎁 완성 화면 구성

  • UI Text로 상태 출력 (정상, 이상)
  • 물체 통과 시 센서 동작 애니메이션
  • 이상 감지 시 경고음 또는 빨간 LED 점등 시뮬레이션

📌 요약

  • Unity에서 센서를 구현하고 데이터 수집
  • AI 모델로 이상 감지 학습
  • Unity에서 AI 결과 반영 (알람 출력)

🔁 다음 편 예고:

2편. 실린더 외란 감지 시뮬레이션 만들기 (Autoencoder 활용)

Unity에서 실린더 이동 데이터를 수집하고, 외란 상태를 감지해보자!

728x90

+ Recent posts