
1. 프로젝트 개요
목표
6축 로봇팔 + Edge AI + Agent를 결합하여 USB 삽입 → PC 포맷 → OS 설치를 자율로 수행하는 산업용 엣지 AI 시스템.
핵심 기술
| 기술 요소 |
설명 |
| Visual Servoing |
카메라 피드백 기반 로봇 위치 보정 (Eye-to-Hand) |
| Agent-in-Loop |
Claude API 기반 자율 판단 + Human-in-the-Loop 개입 |
| 이상징후 탐지 |
전류 센서(INA219) 기반 실시간 모니터링 |
| 실시간 대시보드 |
Flask + Socket.IO 기반 웹 모니터링 |
2. 부품 구매 및 하드웨어 현황
2.1 DigiKey 구매 (인보이스 Quest 3 제출)
| 품목 |
DigiKey 주문 |
가격 |
상태 |
| Raspberry Pi 5 8GB |
SC1431 |
~100,000원 ($95 USD) |
수령 완료 |
DigiKey 구매 인보이스는 Quest 3에서 제출합니다.
2.2 추가 구매 (국내)
| 부품 |
용도 |
상태 |
| PCA9685 (16채널 I2C PWM 보드) |
6축 서보 제어 |
배송 대기 (02.16) |
PCA9685는 RPI4에서 I2C로 6축 서보를 직접 제어하기 위한 필수 부품입니다. 기존 ESP32-S3로도 제어 가능하나, I2C 방식이 펌웨어 개발 없이 Python 라이브러리로 즉시 제어 가능하여 PCA9685를 선택했습니다. 배송 수령 후 즉시 하드웨어 통합에 착수합니다.
2.3 보유 장비 활용
| 장비 |
원래 계획(v1) |
실제 활용(v2) |
상태 |
| 6축 로봇팔 (MG996R x6) |
4DOF SG90 x4 |
6DOF MG996R x6으로 업그레이드 |
조립 완료 |
| Raspberry Pi 5 |
메인 컨트롤 허브 |
DigiKey 주문 예정 |
주문 예정 |
| Raspberry Pi 4 |
백업/테스트 |
개발 중 메인 허브로 활용 (Flask 서버) |
보유 |
| Jetson Xavier NX + NX215AG |
AI 허브 (미정) |
AI 허브 확정 (YOLO, Agent, HDMI 캡처) |
셋업 완료 |
| Raspberry Pi Pico |
- |
USB HID 에뮬레이션 (키보드/마우스) |
보유 |
| ESP32-S3 x2 |
서보 PWM 직접 제어 |
예비 (확장/백업용) |
보유 |
| Arduino Leonardo |
USB HID 메인 |
HID 백업 |
보유 |
| USB 웹캠 |
Visual Servoing |
탑뷰 카메라 (변경 없음) |
보유 |
| 5V 5A PSU |
6V 10A 별도 구매 예정 |
보유 5V PSU로 대체 (MG996R 동작범위 4.8~7.2V) |
보유 |
3. 설계 변경 사항 (v1 → v2)
Quest 1 제출 시점의 초기 설계(v1)와 실제 하드웨어 확보 후 변경된 현재 설계(v2)의 차이:
| 항목 |
v1 (초기 설계) |
v2 (현재) |
변경 이유 |
| 로봇 |
4DOF, SG90 x4 |
6DOF, MG996R x6 |
6축 로봇팔 확보로 자유도 증가 |
| 서보 제어 |
ESP32-S3 PWM 직접 제어 |
PCA9685 I2C 보드 |
펌웨어 불필요, Python 직접 제어 |
| 메인 허브 |
Raspberry Pi 5 (주문 예정) |
Raspberry Pi 4 (개발용) |
보유 RPI4로 즉시 개발 착수 |
| AI 허브 |
Jetson Xavier (미확정) |
Jetson Xavier NX + NX215AG |
캐리어보드 포함 확보 완료 |
| USB HID |
Arduino Leonardo (전용) |
RPi Pico (CircuitPython) |
보유, adafruit_hid로 간편 구현 |
| 전원 |
6V 10A 별도 PSU |
보유 5V 5A PSU |
MG996R 4.8~7.2V 호환, 추가 구매 불필요 |
| ESP32-C3 |
OTA/WiFi 관리 |
제거 |
MVP에 불필요, 복잡도 감소 |
| 통신 |
MQTT + Serial |
REST/WebSocket + Serial |
MQTT 브로커 제거로 간소화 |
| DB |
InfluxDB + SQLite |
SQLite 단일 |
MVP에서 시계열 DB 불필요 |
변경의 핵심 원칙
"보유 장비를 최대한 활용하고, 추가 구매는 최소화하여 빠르게 동작하는 프로토타입을 완성한다."
- PCA9685 1개만 추가 배송되면 전체 하드웨어 구성이 완료됨
- 소프트웨어는 시뮬레이션 모드로 하드웨어 도착 전에 전체 로직을 구현 완료
4. 소프트웨어 개발 현황
4.1 구현 완료 항목 (40개 파일, ~317KB)
전체 소프트웨어는 시뮬레이션 모드(SIMULATE_HARDWARE=True)로 하드웨어 없이 개발 및 테스트가 가능하도록 설계했습니다. PCA9685 수령 후 SIMULATE_HARDWARE=False로 전환하면 실제 하드웨어와 즉시 연동됩니다.
Backend (Flask + Socket.IO) - 21 파일
| 모듈 |
파일 |
설명 |
상태 |
| Core |
app/__init__.py |
Flask 앱 팩토리, CORS, Socket.IO |
완료 |
| Core |
app/config.py |
개발/프로덕션/테스트 설정 |
완료 |
| Core |
run.py |
서버 엔트리포인트 (CLI) |
완료 |
| API |
api/robot.py |
6축 로봇 제어 REST API |
완료 |
| API |
api/job.py |
작업 관리 API |
완료 |
| API |
api/hil.py |
Human-in-Loop API |
완료 |
| API |
api/anomaly.py |
이상징후 관리 API |
완료 |
| API |
api/system.py |
시스템 상태 API |
완료 |
| API |
api/socket_events.py |
WebSocket 이벤트 핸들러 |
완료 |
| Hardware |
hardware/pca9685_driver.py |
PCA9685 6축 서보 드라이버 |
완료 |
| Hardware |
hardware/sensor_reader.py |
INA219 전류/전압 센서 |
완료 |
| Hardware |
hardware/serial_manager.py |
UART 시리얼 통신 |
완료 |
| Service |
services/robot_service.py |
로봇 제어 비즈니스 로직 |
완료 |
| Service |
services/job_service.py |
작업 스케줄링 + Phase 관리 |
완료 |
| Service |
services/hil_service.py |
Agent ↔ Human 의사결정 |
완료 |
| Service |
services/anomaly_service.py |
이상징후 탐지 + 자동 비상정지 |
완료 |
| Service |
services/jetson_client.py |
Jetson AI 서버 HTTP 클라이언트 |
완료 |
| Model |
models/database.py |
SQLite ORM (jobs, anomalies, HIL) |
완료 |
Dashboard (Web UI) - 4 파일
| 파일 |
설명 |
상태 |
templates/index.html |
대시보드 메인 (6축 표시, 차트, HIL) |
완료 |
static/css/main.css |
다크/라이트 테마, 반응형 |
완료 |
static/js/app.js |
Socket.IO 실시간 업데이트, 데모 모드 |
완료 |
app.py |
대시보드 Flask 앱 |
완료 |
Jetson AI Server (FastAPI) - 7 파일
| 파일 |
설명 |
상태 |
main.py |
FastAPI 서버 (/detect, /agent/decide, /screen) |
완료 |
vision/yolo_detector.py |
YOLO v8 객체 탐지 (USB 포트, 그리퍼 등) |
완료 |
agent/claude_agent.py |
Claude API Agent (자율 의사결정) |
완료 |
servoing/visual_servo.py |
Visual Servoing PID 제어 |
완료 |
Firmware - 5 파일
| 파일 |
설명 |
상태 |
firmware/pico/code.py |
RPi Pico CircuitPython USB HID |
완료 |
firmware/esp32_s3/main/main.c |
ESP32-S3 FreeRTOS (예비) |
완료 |
firmware/arduino_leonardo/amfx_hid.ino |
Arduino HID (백업) |
완료 |
4.2 시스템 아키텍처
┌──────────────────────────────────────────────────────────────────┐
│ AMFX System Architecture v2 │
├──────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ Jetson Xavier NX (AI Hub) │ │
│ │ AverMedia NX215AG Carrier │ │
│ │ │ │
│ │ ┌────────────┐ ┌────────────┐ ┌────────────┐ ┌──────────┐│ │
│ │ │ USB Camera │ │HDMI Capture│ │ YOLO v8 │ │Claude API││ │
│ │ │ (Top View) │ │ (NX215AG) │ │ Detector │ │ Agent ││ │
│ │ └──────┬─────┘ └──────┬─────┘ └──────┬─────┘ └────┬─────┘│ │
│ │ │ │ │ │ │ │
│ │ ┌──────┴───────────────┴──────────────┴─────────────┴────┐│ │
│ │ │ FastAPI AI Server (:8000) ││ │
│ │ └────────────────────────┬────────────────────────────────┘│ │
│ └───────────────────────────┼──────────────────────────────────┘ │
│ │ HTTP/REST │
│ ┌───────────────────────────┼──────────────────────────────────┐ │
│ │ Raspberry Pi 4 (Control Hub) │ │
│ │ │ │
│ │ ┌──────────────────────────────────────────────────────┐ │ │
│ │ │ Flask + Socket.IO Server (:5000) │ │ │
│ │ └─────────────────────────┬──────────────────────────────┘ │ │
│ │ │ │ │
│ │ ┌───────────┐ ┌──────┴──────┐ ┌─────────────┐ │ │
│ │ │ PCA9685 │ │ INA219 │ │ RPi Pico │ │ │
│ │ │ I2C PWM │ │ I2C 센서 │ │ USB HID │ │ │
│ │ └─────┬─────┘ └─────────────┘ └──────┬──────┘ │ │
│ │ ┌─────┴─────┐ ┌────┴─────┐ │ │
│ │ │ MG996R x6 │ │ Target PC│ │ │
│ │ │ 6축 로봇팔 │ │ (포맷대상)│ │ │
│ │ └───────────┘ └──────────┘ │ │
│ └──────────────────────────────────────────────────────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────────────┐ │
│ │ Web Dashboard (Socket.IO 실시간 모니터링) │ │
│ └──────────────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────────┘
5. 구현 순서 및 일정
5.1 완료된 작업 (Quest 2 기간: 01.17~02.15)
| 주차 |
기간 |
작업 내용 |
산출물 |
상태 |
| W1 |
01.17-01.24 |
아이디에이션, 시스템 설계 |
system_architecture.md, ideation_log.md |
완료 |
| W2 |
01.25-01.31 |
대시보드 설계, 프론트엔드 리서치 |
dashboard_design.md, Dashboard HTML/CSS/JS |
완료 |
| W3 |
02.01-02.07 |
Backend API 구현 (Flask + Socket.IO) |
REST API 8개 엔드포인트, WebSocket 6개 이벤트 |
완료 |
| W4 |
02.08-02.14 |
하드웨어 드라이버, AI 서버, 서비스 레이어 |
PCA9685 드라이버, Jetson AI 서버, 전체 서비스 |
완료 |
| W4 |
02.15 |
v2 아키텍처 확정, 로봇 조립, 코드 통합 |
system_architecture_v2.md, 40개 파일 통합 |
완료 |
5.2 남은 작업 및 개발 계획 (Quest 3 기간: 02.16~03.01)
Phase A: 하드웨어 통합 (02.16~02.20, 5일)
| 일자 |
작업 |
상세 |
완료 기준 |
| 02.16 |
PCA9685 구매 |
국내 온라인 주문 |
주문 완료 |
| 02.17-18 |
PCA9685 수령 + I2C 연결 |
RPI4 ↔ PCA9685 배선, I2C 주소 확인 |
i2cdetect로 0x40 감지 |
| 02.18-19 |
서보 개별 테스트 |
6축 각 관절 PWM 범위 캘리브레이션 |
6축 모두 정상 회전 |
| 02.19-20 |
INA219 센서 연결 |
전류/전압 모니터링 검증 |
실시간 전류값 대시보드 표시 |
현재 전체 소프트웨어가 시뮬레이션 모드(SIMULATE_HARDWARE=True)로 동작 중이므로, PCA9685 수령 즉시 False로 전환하여 실제 하드웨어 연동이 가능합니다.
Phase B: 디바이스 연동 (02.21~02.24, 4일)
| 일자 |
작업 |
상세 |
완료 기준 |
| 02.21 |
RPi Pico HID 연동 |
CircuitPython 펌웨어 업로드, UART 통신 |
타겟 PC에 키 입력 성공 |
| 02.22 |
Jetson 카메라 연동 |
USB 웹캠 + HDMI 캡처 테스트 |
카메라 피드 정상 수신 |
| 02.23 |
YOLO 모델 학습 |
USB 포트 커스텀 데이터셋 학습 |
mAP@50 > 85% |
| 02.24 |
Visual Servoing 테스트 |
카메라 → 로봇 보정 루프 검증 |
타겟 ±5mm 정밀도 |
Phase C: End-to-End 통합 (02.25~03.01, 5일)
| 일자 |
작업 |
상세 |
완료 기준 |
| 02.25-26 |
전체 데모 시나리오 테스트 |
USB 삽입 → BIOS → OS 설치 연속 동작 |
1회 이상 성공 |
| 02.27 |
Agent HIL 통합 |
Claude Vision 화면 분석 + 자율 판단 |
3개 시나리오 대응 |
| 02.28 |
이상징후 시나리오 테스트 |
과전류, 스톨, 전압 이상 시 자동 비상정지 |
비상정지 정상 동작 |
| 03.01 |
최종 정리 |
버그 수정, 문서화, Quest 3 제출 준비 |
제출 완료 |
5.3 개발 방식
| 항목 |
방식 |
| 개발 전략 |
시뮬레이션 모드로 로직 먼저 완성 → 하드웨어 도착 후 즉시 통합 |
| 형상 관리 |
Git (GitHub private repository) |
| AI 도구 |
Claude Code (Opus 4.6) 활용 AI-Native 개발 |
| 테스트 |
pytest 단위 테스트 + 시뮬레이션 통합 테스트 |
| 리스크 관리 |
ESP32-S3, Arduino Leonardo를 백업으로 보유 |
6. 데모 시나리오
[Phase 1] USB 삽입
로봇 Home → USB 파지 → Visual Servoing으로 USB 포트 탐지 → 정밀 삽입
[Phase 2] OS 설치
Pico HID로 타겟 PC 키보드 제어 → BIOS 진입 (F2/DEL)
→ 부팅 순서 변경 → USB 부팅 → Windows 설치 자동 진행
[Phase 3] Agent 자율 판단
HDMI 화면 캡처 → Claude Vision 분석 → 다음 행동 결정
→ 예상치 못한 상황 발생 시 Agent HIL로 운영자 개입 요청
[Phase 4] 완료
설치 완료 확인 → USB 제거 → 로봇 Home 복귀
→ 대시보드에 전체 작업 리포트 표시
7. 로봇팔 조립 사진
[사진 첨부 예정] 6축 로봇팔 (MG996R x6) 조립 완료 상태
8. 대시보드 스크린샷
대시보드는 시뮬레이션 모드에서 동작 확인 완료:
- 6축 관절 각도 실시간 표시 (Base, Shoulder, Elbow, W.Pitch, W.Roll, Gripper)
- 서보 전류 / 전압 게이지
- 작업 진행률 (Phase 단위)
- Agent HIL 패널 (AI 질문 → 운영자 응답)
- Cycle Time 트렌드 차트
- Anomaly Log (이상징후 실시간 로그)
- 시스템 상태 바 (RPI4, PCA9685, Jetson NX, Pico HID, INA219)
9. 기술 스택 요약
| 레이어 |
기술 |
버전 |
| Backend |
Flask + Socket.IO |
3.0 / 5.3 |
| Frontend |
Jinja2 + Chart.js + Socket.IO Client |
4.7.5 |
| AI Server |
FastAPI + YOLO v8 + Claude API |
- |
| MCU |
CircuitPython (Pico) + ESP-IDF (ESP32) |
- |
| DB |
SQLite |
3.x |
| 통신 |
REST / WebSocket / UART (115200bps) |
- |
| 전원 |
5V 5A PSU → PCA9685 → MG996R x6 |
- |
10. 구매 인보이스
DigiKey 구매 (Quest 1)
| 품목 |
DigiKey Part |
가격 |
상태 |
| Raspberry Pi 5 8GB |
SC1431 |
$95 USD (~100,000원) |
주문 예정 |
DigiKey 구매 인보이스는 Quest 3에서 별도 제출합니다.