수행기록퀘스트1
Quest 1 제출서: AMFX - 자율제조 프레임워크
프로젝트 개요
프로젝트명
AMFX: Autonomous Manufacturing Framework with Edge AI
(한글명: 엣지 AI 기반 자율제조 프레임워크)
Visual Servoing 로봇 + Agent-in-Loop 자율제조 시스템
한 줄 요약
비전 AI 기반 로봇이 USB 삽입 작업을 자율 수행하고, 이상 발생 시 AI Agent가 자동으로 문제를 해결하는 제조 6대 난제 통합 솔루션
1. 프로젝트 목적과 필요성
제조 현장의 문제
| 문제 | 현황 | 결과 |
|---|---|---|
| 반복 작업 | 사람이 수동 수행 | 피로, 실수, 비용 |
| 이상 대응 | 사람이 판단/조치 | 지연, 일관성 부족 |
| 데이터 관리 | 수동 수집/정리 | 누락, 품질 저하 |
| 보안 | 클라우드 의존 | 데이터 유출 위험 |
우리의 해결책
[Physical AI 로봇] + [Edge AI 추론] + [Agent 판단] = 자율제조
- 사람 개입 최소화: 로봇이 반복 작업 자율 수행
- 실시간 이상 대응: AI가 문제 감지 즉시 조치
- 자동 데이터 관리: OTA로 모델/펌웨어 자동 배포
- 온디바이스 보안: 모든 처리가 로컬에서 완료
2. 해결하고자 하는 문제 (6대 난제 통합 해결)
6대 난제 커버리지
핵심 난제 (완벽 구현):
| # | 난제 | 적용 방법 | 구현 수준 |
|---|---|---|---|
| ② | 실시간 이상징후 탐지 | 2단계 아키텍처: 로컬 1차 + Agent 2차 판단 | ☆☆☆☆☆ |
| ③ | 품질·불량 검사 | USB 삽입 OK/NG 비전 AI 판정 (정확도 95%+ 목표) | ☆☆☆☆☆ |
| ⑤ | 공정 제어·최적화 | Visual Servoing Closed-loop + C/T 최적화 | ☆☆☆☆☆ |
부가 기능 (프레임워크 확장):
| # | 난제 | 적용 방법 | 구현 수준 |
|---|---|---|---|
| ① | 설비·공정 맞춤형 AI | Agent 상황별 판단, OTA 모델 업데이트 | ☆☆☆☆ |
| ④ | 데이터 파이프라인 | Dual ESP32 OTA로 모델/펌웨어 자동 배포 | ☆☆☆☆ |
| ⑥ | 보안 + 온디바이스 | 토큰 인증 + 로컬 AI 추론 + 네트워크 격리 | ☆☆☆☆ |
데모 시나리오: USB 자동 삽입 + PC 포맷 + OS 설치
Phase 1: USB 삽입 (로봇 제어)
1. [시작] 로봇이 부팅 USB 메모리를 집음
2. [비전] 카메라로 노트북 USB 포트 위치 탐지 (YOLO)
3. [제어] Visual Servoing으로 실시간 위치 보정
4. [삽입] USB를 포트에 정확히 삽입
5. [품질] 삽입 성공/실패 AI 판정 (③)
Phase 2: PC 포맷 + OS 설치 자동화 (화면 인식 + 키보드 입력)
6. [화면인식] 화면 캡처 카메라가 노트북 화면 상태 인식
7. [키입력] Arduino Leonardo가 USB HID로 키보드 입력 자동 수행
8. [Agent] 화면 상태에 따라 Agent가 다음 동작 결정
| 화면 상태 | Agent 판단 | 키보드 입력 |
|---|---|---|
| BIOS 진입 필요 | 부팅 설정 | F2/DEL → Boot Order 변경 |
| OS 설치 화면 | 설치 진행 | 언어/지역 선택 → Next |
| 파티션 선택 | 포맷 + 설치 | 드라이브 선택 → Format → Next |
| 사용자 설정 | 계정 생성 | 이름/비밀번호 입력 |
| 설치 완료 | 재부팅 | USB 제거 후 Restart |
| 오류 발생 | 복구 시도 | 재시도 또는 HIL 요청 |
Phase 3: 완료 및 로깅
9. [확인] OS 설치 완료 확인 (데스크톱 화면 인식)
10. [로깅] 작업 로그 + C/T 측정 → 공정 최적화 (⑤)
11. [반복] USB 제거 → 다음 PC로 이동
작업 로그 및 C/T 측정 (⑤ 공정 제어·최적화 강화)
| 측정 항목 | 설명 | 활용 |
|---|---|---|
| Cycle Time | 작업 1회 소요 시간 | 병목 구간 식별 |
| 단계별 시간 | 탐지/이동/삽입/검증 각각 | 구간별 최적화 |
| 성공률 | OK/NG 비율 | 품질 트렌드 분석 |
| 이상 발생 빈도 | 이상 유형별 카운트 | 예방 조치 |
# 작업 로그 예시
{
"job_id": "USB_INSERT_001",
"timestamp": "2026-01-15T14:30:00",
"cycle_time_ms": 8500,
"steps": {
"detect_port": 1200, # ms
"move_to_port": 3500,
"insert": 2800,
"verify": 1000
},
"result": "OK",
"anomalies": []
}
공정 최적화 루프:
[로그 수집] → [C/T 분석] → [병목 식별] → [파라미터 조정] → [성능 개선]
↓
Agent가 자동으로 최적화 제안
Agent 기반 이상징후 탐지 (①② 통합)
문제: 초기에는 이상 데이터가 없음 → 전통적 ML 학습 불가
해결: 상용 Agent (Claude)를 활용한 Human-in-the-Loop (HIL) 설계
Phase 1 이상징후: 로봇 제어 (Visual Servoing)
| 이상 상황 | Agent 감지 방법 | 자동 대응 | HIL 요청 |
|---|---|---|---|
| 카메라 결착 불안정 | 보정값 지속 증가 추적 | 자동 캘리브레이션 | "보정값 +5mm 누적. 물리적 점검 필요?" |
| 기계적 틀어짐 | 위치 오차 패턴 분석 | 오프셋 보정 적용 | "축 정렬 이상 감지. 유지보수 필요?" |
| 서보 모터 이상 | 전류/토크 이상 탐지 | 속도 제한 적용 | "모터 과부하. 교체 필요?" |
| USB 포트 인식 실패 | YOLO 탐지 실패 횟수 | 재탐지 시도 | "포트 인식 3회 실패. 조명/각도 조정?" |
[보정값 로그] → [Agent 트렌드 분석] → 정상 범위 → [계속 운영]
↓
임계값 초과 (예: +5mm)
↓
[HIL 요청: "물리적 점검 필요?"]
↓
[사람 확인 → 유효 이상징후 DB 업데이트]
Agent 기반 자동 수정:
- 예상과 다른 동작 발생 시 Agent가 제어 파라미터 조정
- 반복 실패 시 Agent가 펌웨어 설정 수정 제안
- 모든 수정 이력은 로그로 저장 → 추후 분석
Phase 2 이상징후: PC 포맷 + OS 설치 (화면 인식)
| 이상 상황 | Agent 감지 방법 | 자동 대응 | HIL 요청 |
|---|---|---|---|
| BIOS 진입 실패 | 화면 상태 미변경 | F2/DEL/F12/ESC 순차 시도 | "BIOS 진입 불가. 키 조합 추가?" |
| 부팅 순서 변경 불가 | BIOS 메뉴 인식 실패 | 다른 BIOS UI 패턴 시도 | "미지원 BIOS. 매뉴얼 필요?" |
| 파티션 오류 | 설치 화면 에러 메시지 | 다른 파티션 선택 시도 | "디스크 에러. 수동 확인 필요?" |
| 설치 중단 | 진행률 정체 감지 | 재시작 시도 | "설치 30분 정체. 강제 재시작?" |
| 드라이버 누락 | 설치 완료 후 오류 | 드라이버 USB 삽입 시도 | "네트워크 드라이버 누락. 추가 USB?" |
[화면 상태] → [Agent 판단: BIOS 진입 필요]
↓
[F2 전송] → 실패 → [DEL 전송] → 실패 → [F12 전송]
↓ ↓
성공 3회 실패 시
↓ ↓
[다음 단계 진행] [HIL: "키 조합 추가 필요?"]
↓
[사람 입력: "F10 사용"]
↓
[BIOS 키 DB 업데이트]
Phase 3 이상징후: 완료 및 반복
| 이상 상황 | Agent 감지 방법 | 자동 대응 | HIL 요청 |
|---|---|---|---|
| OS 부팅 실패 | 데스크톱 미표시 | 재설치 시도 | "부팅 실패. 이미지 손상?" |
| USB 제거 실패 | 로봇 그리퍼 오류 | 재시도 + 힘 조절 | "USB 걸림. 수동 제거 필요?" |
| C/T 이상 증가 | 평균 대비 +20% | 병목 구간 분석 | "특정 단계 지연. 원인 분석?" |
이상징후 DB 구조
{
"anomaly_id": "ANM_001",
"phase": "phase1",
"type": "calibration_drift",
"detected_by": "agent",
"pattern": "correction_value > 5mm for 10 cycles",
"auto_response": "recalibrate",
"hil_response": "physical_inspection_needed",
"human_feedback": "camera_mount_loose",
"resolution": "tighten_mount",
"valid": true,
"timestamp": "2026-01-16T10:30:00"
}
장점:
- 데이터 없이도 즉시 운영 가능
- Agent가 맥락을 이해하고 판단
- HIL로 점진적 자동화 달성
- 예상치 못한 상황에도 유연하게 대응
- Phase별 이상징후 DB 축적 → 지속적 개선
Agent 구현: 2단계 아키텍처
온디바이스 우선 + 클라우드 보조 설계:
[센서 데이터] → [1차 판단: 로컬] → 확정 시 → [즉시 조치]
↓
미확정 시 (10% 미만)
↓
[2차 판단: Cloud Agent]
| 단계 | 구현 | 역할 | 네트워크 |
|---|---|---|---|
| 1차 | 규칙 기반 + 경량 ML (TFLite) | 90% 상황 처리 | 불필요 |
| 2차 | Claude API | 예외/신규 상황 | 필요 시만 |
장점:
- 네트워크 단절 시에도 1차 판단으로 운영 지속
- 90% 이상 상황은 완전 온디바이스로 처리
- 클라우드는 예외 상황에만 사용 → 보안 + 비용 최적화
본 프로젝트는 향후 완전 온디바이스 AI로 확장 가능하도록 설계됩니다. 축적된 경험 데이터를 활용해 경량 Foundation Model을 학습하면, 2차 판단까지 로컬에서 처리 가능합니다.
3. 활용할 센서·모듈
하드웨어 구성
┌─────────────────────────────────────────────────────────┐
│ Jetson Xavier (AI 허브) │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ CAM1: USB │ │ CAM2: 화면 │ YOLO + 화면 인식 │
│ │ 포트 탐지 │ │ 상태 캡처 │ + Agent 연동 │
│ └─────────────┘ └─────────────┘ │
└─────────────────────────────────────────────────────────┘
│ 이더넷 │ Serial │ Serial
▼ ▼ ▼
┌───────────────┐ ┌───────────────┐ ┌───────────────┐
│ RPI5 8GB │ │ ESP32-S3 │ │ Arduino │
│ (데이터 허브) │ │ (로봇 제어) │ │ Leonardo │
│ 로깅, OTA서버 │ │ 서보, IMU │ │ (키보드 HID) │
│ 대시보드 │ │ │ │ │
└───────────────┘ └───────────────┘ └───────────────┘
DigiKey 보유 보유 (노트북 USB 허브)
역할 분리: AI 허브 vs 데이터 허브
| 허브 | 장치 | 역할 |
|---|---|---|
| AI 허브 | Jetson Xavier | 비전 AI (듀얼 카메라), Agent 연동, 실시간 판단 |
| 데이터 허브 | RPI5 8GB | 작업 로그, C/T 측정, OTA 서버, 대시보드 |
Dual ESP32 OTA 시스템 (④ 데이터 파이프라인 핵심 기술)
문제: 제조 현장에서 다수의 ESP32 기반 제어기 펌웨어/모델 업데이트가 필요
해결: RPI5를 OTA 서버로 활용 + esp-serial-flasher로 디바이스 간 플래싱
OTA 아키텍처
┌─────────────────────────────────────────────────────────────┐
│ RPI5 (OTA 서버) │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ Flask API │ │ 펌웨어 저장 │ │ 버전 관리 │ │
│ │ /firmware/* │ │ *.bin │ │ version.json│ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
└─────────────────────────────────────────────────────────────┘
│ Wi-Fi (HTTP OTA)
▼
┌───────────────────┐
│ ESP32-S3 │ ← HTTP Update (ElegantOTA)
│ (로봇 제어 MCU) │
│ │ ← esp-serial-flasher 내장
└───────────────────┘
│ Serial (UART: TX/RX + BOOT/EN)
▼
┌───────────────────┐
│ ESP32-C3 │ ← Serial Flashing
│ (보조 MCU/센서) │ (파티션 제한 없음)
└───────────────────┘
OTA 방식 비교
| 방식 | 설명 | 장점 | 단점 |
|---|---|---|---|
| HTTP OTA | Wi-Fi로 서버에서 .bin 다운로드 | 무선, 원격 가능 | 네트워크 필요, 파티션 제한 |
| esp-serial-flasher | ESP32가 다른 ESP32를 시리얼로 플래싱 | 파티션 무관, 전체 플래시 교체 | 유선 연결 필요 |
esp-serial-flasher 활용 (Espressif 공식 라이브러리)
하드웨어 연결:
ESP32-S3 (Host) ESP32-C3 (Target)
--------------- -----------------
IO26 → IO0 (BOOT)
IO25 → EN (RESET)
IO4 (TX) → RX0
IO5 (RX) → TX0
GND → GND
플래싱 프로세스:
1. [RPI5] HTTP로 새 펌웨어 .bin → [ESP32-S3]
2. [ESP32-S3] 자신의 펌웨어 업데이트 (HTTP OTA)
3. [ESP32-S3] esp-serial-flasher로 [ESP32-C3] 플래싱
4. [ESP32-C3] 부트로더 모드 진입 (BOOT LOW + EN 토글)
5. [ESP32-C3] 전체 플래시 교체 완료
장점:
- 파티션 크기 제한 우회: 일반 OTA는 ota_0/ota_1 두 파티션 필요 (각 ~1.5MB)
- 대용량 펌웨어: esp-serial-flasher는 전체 플래시 교체 가능
- 네트워크 불필요: 시리얼만으로 타겟 디바이스 업데이트
- 안전한 롤백: 실패 시 이전 파티션으로 자동 복구
버전 관리 시스템
# RPI5: version.json
{
"esp32_s3": {
"version": "1.2.0",
"url": "/firmware/esp32_s3_v1.2.0.bin",
"sha256": "abc123..."
},
"esp32_c3": {
"version": "1.1.0",
"url": "/firmware/esp32_c3_v1.1.0.bin",
"sha256": "def456..."
}
}
# ESP32-S3: 자동 업데이트 체크
def check_ota_update():
response = http_get("http://rpi5:5000/firmware/latest")
if response["version"] > current_version:
download_and_flash(response["url"])
# ESP32-C3도 업데이트 필요 시
if c3_update_available:
serial_flash_esp32_c3(response["c3_url"])
TFLite 모델 OTA (① 설비 맞춤형 AI)
펌웨어뿐 아니라 AI 모델도 OTA로 업데이트:
[Agent 학습 결과] → [새 TFLite 모델] → [RPI5 서버]
↓
[ESP32-S3 다운로드]
↓
[SPIFFS/LittleFS 저장]
↓
[새 모델로 추론]
| 업데이트 대상 | 용량 | 주기 |
|---|---|---|
| 펌웨어 (.bin) | ~1MB | 필요 시 |
| TFLite 모델 (.tflite) | ~500KB | Agent 학습 후 |
| 설정 파일 (.json) | ~10KB | 파라미터 변경 시 |
부품 상세
RPI5 8GB 선택 이유 (데이터 허브)
| 요구사항 | RPI5 8GB 적합성 |
|---|---|
| 작업 로깅 | C/T 측정, 작업 로그 저장 및 분석 |
| OTA 서버 | ESP32 펌웨어/모델 배포 서버 운영 |
| 대시보드 서빙 | Flask/Streamlit 웹 서버 + 실시간 데이터 시각화 |
Jetson Xavier는 AI 허브 (비전 + Agent), RPI5는 데이터 허브 (로깅 + OTA)로 역할 분리하여 ④ 데이터 파이프라인 난제 강화
| 구분 | 부품 | 역할 | 조달 |
|---|---|---|---|
| AI | Jetson Xavier | YOLO (듀얼 카메라) + 화면 인식 + Agent 연동 | 보유 |
| 데이터 | Raspberry Pi 5 8GB | 로깅, OTA 서버, 대시보드 (④ 데이터 파이프라인) | DigiKey |
| 제어 | ESP32-S3 | 로봇 서보 제어, 센서 수집 | 보유 |
| 키보드 | Arduino Leonardo | USB HID 키보드 입력 (노트북 USB 허브 연결) | 보유 |
| OTA | ESP32-C3 | 펌웨어 OTA 수신 | 보유 |
| 카메라 | USB CAM x2 | CAM1: USB 포트 탐지, CAM2: 화면 캡처 | 보유/국내구매 |
| IMU | MPU6050 | 로봇 자세/진동 감지 | 보유/국내구매 |
| 전류 | INA219 | 로봇 이상 탐지 | 보유/국내구매 |
| 서보 | MG996R x4 | 로봇 관절 구동 (고토크/정밀) | 보유/국내구매 |
4. 기술 스택
소프트웨어
| 분야 | 기술 | 용도 |
|---|---|---|
| AI 모델 | YOLO, MobileNet | 객체탐지, 분류 |
| 경량화 | TFLite, ONNX | 엣지 배포 |
| 제어 | Visual Servoing | 실시간 로봇 제어 |
| 통신 | MQTT | 디바이스 간 통신 |
| OTA | esp-serial-flasher, ElegantOTA | ESP32 펌웨어/모델 원격 업데이트 |
| Agent | Claude API | 예외 상황 자동 판단 |
| 대시보드 | Flask/Streamlit | 실시간 모니터링 |
핵심 알고리즘
Visual Servoing (⑤ 공정제어)
while not inserted:
image = camera.capture()
target = yolo.detect(image, "usb_port")
error = calculate_error(current_pos, target)
servo.move(pid_control(error))
이상징후 탐지 (②)
def detect_anomaly():
current = ina219.read() # 전류 이상
position = servo.get_pos() # 위치 오차
vibration = mpu6050.read() # 진동 패턴
if current > threshold or position_error > limit:
return "ANOMALY"
품질 검사 (③)
def check_insertion_quality():
image = camera.capture()
result = model.predict(image) # OK / NG / PARTIAL
return result
5. 보안 설계 (⑥)
3단계 보안 아키텍처
| 단계 | 방법 | 효과 |
|---|---|---|
| 1 | 로컬 네트워크 격리 | 외부 공격 원천 차단 |
| 2 | 토큰 기반 디바이스 인증 | 미등록 장치 차단 |
| 3 | 온디바이스 AI 추론 | 데이터 외부 유출 방지 |
통신 보안
[ESP32] ──── "DEVICE_TOKEN" ────? [RPI5]
│
토큰 검증 후만 통신
6. DigiKey 부품
| 품목 | DigiKey URL | 가격 |
|---|---|---|
| Raspberry Pi 5 8GB | SC1431 | $95 |
나머지 부품은 보유품 + 국내 구매로 조달
7. 차별화 포인트
vs 경쟁작 비교
| 항목 | 경쟁작 (대부분) | AMFX (우리) |
|---|---|---|
| 난제 커버리지 | 1~2개 | 6개 전체 |
| 제어 방식 | Open-loop | Closed-loop |
| AI 수준 | FFT, 고정 모델 | Visual Servoing + Agent |
| 이상 대응 | 알람만 | 자동 복구 |
| 보안 | 미언급 | 온디바이스 + 인증 |
| 데모 | 그래프/콘솔 | 실물 로봇 동작 |
핵심 차별점 3가지
- 핵심 난제 완벽 해결 + 전체 커버: ②③⑤ 완벽 구현 + 나머지 프레임워크 지원
- 2단계 Agent 아키텍처: 90% 온디바이스 + 10% 클라우드 보조 (네트워크 단절 대응)
- Physical AI 데모: 실제 로봇이 USB를 삽입하는 시각적 임팩트
8. 개발 계획
Quest 2 (01.17 ~ 02.15)
| 주차 | 목표 |
|---|---|
| 1~2주 | H/W 조립, 기본 통신 구축 |
| 3~4주 | Visual Servoing 구현, YOLO 학습 |
Quest 3 (02.16 ~ 03.01)
| 주차 | 목표 |
|---|---|
| 1주 | 통합 테스트, 이상탐지 튜닝 |
| 2주 | 데모 완성, 문서화, 영상 제작 |
9. 기대 효과
정량적 효과 (예시)
| 지표 | 현재 (수동) | AMFX 적용 후 |
|---|---|---|
| 작업 시간 | 30초/회 | 10초/회 |
| 오류율 | 5% | <1% |
| 이상 대응 시간 | 수 분 | 수 초 |
확장 가능성
- 다양한 작업: USB 삽입 → 커넥터 체결, 부품 조립 등
- 다양한 플랫폼: RPI5 → Jetson, 산업용 PLC 등
- 다양한 규모: 단일 로봇 → 다중 로봇 협업
10. 요약
AMFX는 제조 현장의 핵심 난제 3개(②③⑤)를 완벽 해결하고, 나머지 난제까지 통합 지원하는 프레임워크입니다.
| 핵심 기술 | 설명 |
|---|---|
| Physical AI | 실제 로봇이 작업 수행 (MG996R 고정밀 서보) |
| 2단계 Edge AI | 90% 로컬 처리 + 10% 클라우드 보조 |
| Visual Servoing | 실시간 비전 피드백 Closed-loop 제어 |
| Agent-in-Loop | 예외 상황 자동 판단/복구 |
| OTA | 자동 모델/펌웨어 업데이트 |
| 보안 | 온디바이스 우선 + 토큰 인증 |
"단순한 아이디어가 아닌, 작동하는 자율제조 시스템을 구현합니다."
작성일: 2026.01.15
제출: Industrial Edge AI Solution Challenge 2026 Quest 1
- 첨부파일
- Self-Healing_AI_Robotics.pdf 다운로드
로그인 후
참가 상태를 확인할 수 있습니다.

.jpg)
