Files
ENIG/Cs_HMI/TODO.md
ChiKyun Kim 7567602479 feat: Add AGV Map Editor and Simulator tools
- Add AGVMapEditor: Visual map editing with drag-and-drop node placement
  * RFID mapping separation (physical ID ↔ logical node mapping)
  * A* pathfinding algorithm with AGV directional constraints
  * JSON map data persistence with structured format
  * Interactive map canvas with zoom/pan functionality

- Add AGVSimulator: Real-time AGV movement simulation
  * Virtual AGV with state machine (Idle, Moving, Rotating, Docking, Charging, Error)
  * Path execution and visualization from calculated routes
  * Real-time position tracking and battery simulation
  * Integration with map editor data format

- Update solution structure and build configuration
- Add comprehensive documentation in CLAUDE.md
- Implement AGV-specific constraints (forward/backward docking, rotation limits)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-10 17:39:23 +09:00

6.9 KiB

AGV 이동 시스템 개발 TODO

프로젝트 개요

AGV 이동 시스템 설계 및 개발 - RFID 기반 네비게이션 시스템


1. 요구사항 분석 및 시스템 구성 요소

📍 AGV 기본 사양

  • 이동 기능: 전진, 후진, 좌회전, 우회전, 마크스탑, 정지
  • 방향성: 전면(모니터), 후면(리프트)
  • 주요 기능: 카트 이동 및 장비 도킹

🏭 장비 구성 (총 10대)

도킹 장비 (8대):
├── 1번 로더 (후진 도킹)
├── 2번 클리너 (후진 도킹)  
├── 3번 오프로더 (후진 도킹)
└── 4번 버퍼 (후진 도킹)
    ├── 4-1 ~ 4-5 (5대)

충전 장비 (2대):
├── 충전기 1 (전진 도킹)
└── 충전기 2 (전진 도킹)

🗺️ 네비게이션 시스템

  • 위치 인식: RFID 기반
  • 경로 계산: 다이나믹 라우팅
  • 방향 제어: 도킹 방향별 접근 전략

2. 시스템 아키텍처 설계

📊 핵심 컴포넌트 구조

AGV Navigation System
├── Map Management
│   ├── RFID Node Manager
│   ├── Path Calculator  
│   └── Route Optimizer
├── Movement Control
│   ├── Motion Controller
│   ├── Direction Manager
│   └── Docking Controller
├── Position Tracking
│   ├── RFID Reader Interface
│   ├── Position Monitor
│   └── Route Validator
└── Station Management
    ├── Equipment Interface
    ├── Charging Controller
    └── Operation Scheduler

3. RFID 기반 맵 시스템 설계

🏷️ RFID 관리 방식 (실용적 접근)

// RFID ID는 순수한 식별자로만 사용 (의미 없는 값)
// 예시 RFID 값들:
"1234567890", "9876543210", "5555666677"  // 임의의 고유값

// 실제 의미는 별도 매핑 데이터에서 관리
// RFID Writer 작업 최소화 - 물리적 교체/추가만 수행

🗺️ 맵 데이터 구조 (RFID 매핑 분리)

// RFID-맵노드 매핑 테이블
public class RfidMapping
{
    public string RfidId { get; set; }          // 물리적 RFID 값 (의미 없음)
    public string LogicalNodeId { get; set; }   // 논리적 노드 ID
    public DateTime CreatedDate { get; set; }
    public string Description { get; set; }    // 설치 위치 설명
}

// 맵 노드 정보 (논리적)
public class MapNode
{
    public string NodeId { get; set; }          // 논리적 ID (N001, N002...)
    public string Name { get; set; }            // 노드 이름 (로더1, 충전기1...)
    public Point Position { get; set; }
    public NodeType Type { get; set; }
    public DockingDirection? DockDirection { get; set; }
    public List<string> ConnectedNodes { get; set; }
    public bool CanRotate { get; set; }
    public string StationId { get; set; }       // 장비 ID (LOADER1, CHARGER1...)
}

// RFID 리더에서 읽은 값을 논리적 노드로 변환
public class NodeResolver
{
    public MapNode GetNodeByRfid(string rfidValue)
    {
        var mapping = GetRfidMapping(rfidValue);
        return GetNodeById(mapping?.LogicalNodeId);
    }
}

public enum NodeType { Normal, Rotation, Docking, Charging }
public enum DockingDirection { Forward, Backward }
public enum AgvDirection { Forward, Backward, Left, Right }

4. 개발 순서 및 단계별 계획

🎯 Phase 1: 기반 시스템 개발

  1. 맵 에디터 도구 (.NET Framework 4.8 WinForms)

    • RFID 노드 배치 및 편집
    • 연결선 설정 및 시각화
    • 도킹 방향 설정 인터페이스
  2. 경로 계산 엔진

    • A* 알고리즘 기반 최단 경로
    • 방향성 고려 라우팅
    • 동적 경로 재계산

🎯 Phase 2: 이동 제어 시스템

  1. AGV 모션 컨트롤러

    • 기존 AGV 컨트롤러 인터페이스
    • 방향 전환 로직
    • 도킹 시퀀스 제어
  2. 위치 추적 시스템

    • RFID 리더 인터페이스
    • 실시간 위치 모니터링
    • 경로 이탈 감지 및 보정

🎯 Phase 3: 통합 및 테스트

  1. 시뮬레이션 테스트 도구
    • 가상 AGV 시뮬레이터
    • 경로 시각화 및 디버깅
    • 시나리오 기반 테스트

5. 테스트 프로그램 우선 개발

🧪 AGV Navigation Test Suite (.NET Framework 4.8)

TestProgram Solution
├── AGVNavigationCore           // 핵심 라이브러리
├── MapEditorTool              // 맵 편집 도구  
├── SimulatorApp               // AGV 시뮬레이터
└── UnitTestProjects           // 단위 테스트

📋 첫 번째 구현 목표 (우선순위)

  1. 맵 에디터: RFID 노드 배치 및 연결선 설정
  2. 경로 계산기: A* 알고리즘 구현 및 테스트
  3. 시뮬레이터: 가상 AGV로 경로 추적 테스트
  4. RFID 매니저: 노드 정보 관리 및 검색

🚀 다음 단계

현재 권장사항: 맵 에디터 테스트 프로그램부터 시작

맵 에디터 우선 개발 이유:

  1. 시각적 확인: RFID 노드와 경로를 시각적으로 배치하고 확인 가능
  2. 기초 검증: 경로 계산 알고리즘을 테스트할 수 있는 기반 제공
  3. 점진적 개발: 복잡한 AGV 제어 없이 핵심 로직부터 검증

첫 번째 단계:

AGV MapEditor Test Program (.NET Framework 4.8)
├── 그래픽 맵 편집기 (WinForms)
├── RFID 노드 관리 시스템  
├── 경로 계산 엔진 (A*)
└── 맵 데이터 저장/로드 (JSON/XML)

📝 상세 기능 요구사항

AGV 동작 특성

  • 전진: 모니터 방향으로 이동
  • 후진: 리프트(모니터 반대) 방향으로 이동
  • 도킹: 장비별 지정된 방향으로 접근 필요
    • 로더/클리너/오프로더/버퍼: 후진 도킹
    • 충전기: 전진 도킹
  • 회전: 180도 회전, 마크센서 감지시 정지

경로 관리 요구사항

  • 동적 경로 계산: 현재 위치에서 목적지까지
  • 경로 보정: RFID 감지시 경로 유효성 검증 및 재계산
  • 방향 최적화: 목적지 도킹 방향 고려한 접근 경로
  • 회전 지점: 특정 RFID에서만 180도 회전 가능

RFID 시스템 요구사항 (매핑 분리 방식)

  • 물리적 RFID: 의미 없는 고유값, Writer 작업 최소화
  • 논리적 매핑: 소프트웨어에서 RFID ↔ 노드정보 매핑 관리
  • 유지보수성:
    • RFID 손상시 → 새 RFID 설치 후 매핑만 변경
    • 장비 추가시 → 논리적 노드 추가, RFID 매핑 연결
  • 편집 용이성: 맵 에디터에서 의미있는 이름으로 작업
  • 현장 작업 최소화: RFID Writer 사용 빈도 대폭 감소

💡 실무 장점

기존 방식 (RFID에 의미 부여):
RFID 손상 → Writer 들고가서 → 의미있는 값 재작성 → 테스트

새 방식 (매핑 분리):
RFID 손상 → 임의 RFID 설치 → 소프트웨어에서 매핑만 변경 → 완료