- 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>
6.9 KiB
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: 기반 시스템 개발
-
맵 에디터 도구 (.NET Framework 4.8 WinForms)
- RFID 노드 배치 및 편집
- 연결선 설정 및 시각화
- 도킹 방향 설정 인터페이스
-
경로 계산 엔진
- A* 알고리즘 기반 최단 경로
- 방향성 고려 라우팅
- 동적 경로 재계산
🎯 Phase 2: 이동 제어 시스템
-
AGV 모션 컨트롤러
- 기존 AGV 컨트롤러 인터페이스
- 방향 전환 로직
- 도킹 시퀀스 제어
-
위치 추적 시스템
- RFID 리더 인터페이스
- 실시간 위치 모니터링
- 경로 이탈 감지 및 보정
🎯 Phase 3: 통합 및 테스트
- 시뮬레이션 테스트 도구
- 가상 AGV 시뮬레이터
- 경로 시각화 및 디버깅
- 시나리오 기반 테스트
5. 테스트 프로그램 우선 개발
🧪 AGV Navigation Test Suite (.NET Framework 4.8)
TestProgram Solution
├── AGVNavigationCore // 핵심 라이브러리
├── MapEditorTool // 맵 편집 도구
├── SimulatorApp // AGV 시뮬레이터
└── UnitTestProjects // 단위 테스트
📋 첫 번째 구현 목표 (우선순위)
- 맵 에디터: RFID 노드 배치 및 연결선 설정
- 경로 계산기: A* 알고리즘 구현 및 테스트
- 시뮬레이터: 가상 AGV로 경로 추적 테스트
- RFID 매니저: 노드 정보 관리 및 검색
🚀 다음 단계
현재 권장사항: 맵 에디터 테스트 프로그램부터 시작
맵 에디터 우선 개발 이유:
- 시각적 확인: RFID 노드와 경로를 시각적으로 배치하고 확인 가능
- 기초 검증: 경로 계산 알고리즘을 테스트할 수 있는 기반 제공
- 점진적 개발: 복잡한 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 설치 → 소프트웨어에서 매핑만 변경 → 완료