Files
ENIG/Cs_HMI/CLAUDE.md
ChiKyun Kim de0e39e030 refactor: Consolidate RFID mapping and add bidirectional pathfinding
Major improvements to AGV navigation system:

• Consolidated RFID management into MapNode, removing duplicate RfidMapping class
• Enhanced MapNode with RFID metadata fields (RfidStatus, RfidDescription)
• Added automatic bidirectional connection generation in pathfinding algorithms
• Updated all components to use unified MapNode-based RFID system
• Added command line argument support for AGVMapEditor auto-loading files
• Fixed pathfinding failures by ensuring proper node connectivity

Technical changes:
- Removed RfidMapping class and dependencies across all projects
- Updated AStarPathfinder with EnsureBidirectionalConnections() method
- Modified MapLoader to use AssignAutoRfidIds() for RFID automation
- Enhanced UnifiedAGVCanvas, SimulatorForm, and MainForm for MapNode integration
- Improved data consistency and reduced memory footprint

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-11 16:41:52 +09:00

6.2 KiB

CLAUDE.md

이 파일은 이 저장소의 코드로 작업할 때 Claude Code (claude.ai/code)를 위한 지침을 제공합니다. 맵데이터는 C:\Data\Source(5613#) ENIG AGV\Source\Cs_HMI\Data\NewMap.agvmap 파일을 기준으로 사용

빌드 및 개발 명령어

프로젝트 빌드 및 실행

  • 메인 빌드: build.bat 파일 참고
  • **빌드후 이벤트 예제) rem xcopy "$(TargetDir)*.exe" "\192.168.1.80\Amkor\AGV2" /Y

프로젝트 구조 및 빌드 설정

  • 메인 애플리케이션: Project/AGV4.csproj - "Amkor"라는 실행 파일명으로 컴파일
  • 타겟 플랫폼: .NET Framework 4.8, x86/x64 아키텍처
  • 출력 경로:
    • Debug: ..\..\..\..\..\Amkor\AGV4\
    • Release: ..\..\..\ManualMapEditor\

고수준 코드 아키텍처

솔루션 구조

이 프로젝트는 ENIG AGV (자동 유도 차량) 시스템을 위한 C# HMI (Human-Machine Interface) 애플리케이션입니다.

AGVCSharp.sln (메인 솔루션)
├── Project/AGV4.csproj (메인 HMI 애플리케이션)
├── StateMachine/ (상태 머신 라이브러리)
├── AGVMapEditor/ (맵 에디터 - 2024.09 추가)
├── AGVSimulator/ (AGV 시뮬레이터 - 2024.09 추가)
└── SubProject/ (서브 프로젝트 모듈들)
    ├── AGVControl/ (AGV 제어)
    ├── BMS/ (배터리 관리 시스템)
    ├── NARUMI/ (AGV 하드웨어)
    ├── CommData/ (통신 데이터)
    ├── ENIGProtocol/ (ENIG 프로토콜)
    └── 기타 모듈들

메인 애플리케이션 아키텍처 (Project/)

핵심 폼 구조

  • fMain.cs: 메인 UI 폼 - AGV 시스템의 중앙 제어판
  • fSetup.cs: 설정 화면 - 시스템 파라미터 및 구성
  • ViewForm/: 각종 모니터링 화면들
    • fAuto.cs - 자동 모드 화면
    • fManual.cs - 수동 모드 화면
    • fAgv.cs - AGV 상태 화면
    • fBms.cs - 배터리 상태 화면
    • fIO.cs - I/O 상태 화면

상태 머신 시스템 (StateMachine/)

AGV의 동작을 제어하는 상태 기반 시스템:

  • _Loop.cs: 메인 상태 머신 루프
  • _AGV.cs: AGV 제어 로직
  • _BMS.cs: 배터리 관리 상태
  • _SPS.cs: SPS(Stored Program Sequencer) 제어
  • Step/: 각 상태별 구현 클래스들
    • _SM_RUN_*.cs - 실행 상태들 (INIT, READY, GOTO, CHARGE 등)

핵심 클래스들

  • PUB.cs: 전역 변수 및 공통 함수
  • CSetting.cs: 설정 데이터 관리
  • Manager/DataBaseManager.cs: 데이터베이스 관리
  • Device/: 하드웨어 인터페이스 클래스들

통신 및 프로토콜

  • XBee 무선 통신: call button 및 충전기 통신
  • ENIG Protocol: 자체 정의 프로토콜
  • Socket 통신: 네트워크 기반 데이터 교환
  • Database: 운영 데이터 저장 및 관리

의존성 및 라이브러리

  • arCommUtil: AR 통신 유틸리티
  • arControl.Net4: AR 제어 라이브러리
  • Newtonsoft.Json: JSON 데이터 처리
  • Microsoft.Speech: 음성 처리
  • System.Management: 시스템 관리

빌드 후 처리

프로젝트는 빌드 후 네트워크 위치로 파일을 자동 복사하는 설정이 있습니다 (현재 주석 처리됨).

Git 업데이트

SubProject 내의 GitUpdate.bat을 사용하여 모든 하위 프로젝트를 일괄 업데이트할 수 있습니다.

새로 추가된 AGV 개발 도구 (2024.09)

AGVMapEditor (맵 에디터)

위치: AGVMapEditor/AGVMapEditor.csproj
실행파일: AGVMapEditor/bin/Debug/AGVMapEditor.exe

핵심 기능

  • 맵 노드 관리: 논리적 노드 생성, 연결, 속성 설정
  • RFID 매핑 분리: 물리적 RFID ID ↔ 논리적 노드 ID 매핑 관리
  • 시각적 맵 편집: 드래그앤드롭으로 노드 배치 및 연결
  • JSON 파일 저장: 맵 데이터를 JSON 형식으로 저장/로드

핵심 클래스

  • MapNode: 논리적 맵 노드 (NodeId, 위치, 타입, 연결 정보)
  • RfidMapping: RFID 물리적 ID ↔ 논리적 노드 매핑
  • NodeResolver: RFID ID를 통한 노드 해석기
  • PathCalculator: A* 알고리즘 기반 AGV 경로 계산
  • MapCanvas: 시각적 맵 편집 컨트롤

AGV 특화 제약사항

  • 방향성 제약: 전진/후진, 회전은 마크센서 위치에서만 가능
  • 도킹 제약: 충전기(전진 도킹), 장비(후진 도킹)
  • RFID 기반 네비게이션: 물리적 RFID와 논리적 의미 분리

AGVSimulator (AGV 시뮬레이터)

위치: AGVSimulator/AGVSimulator.csproj
실행파일: AGVSimulator/bin/Debug/AGVSimulator.exe

핵심 기능

  • 가상 AGV 시뮬레이션: 실시간 AGV 움직임 및 상태 관리
  • 맵 시각화: 맵 에디터에서 생성한 맵 파일 로드 및 표시
  • 경로 실행: 계산된 경로를 따라 AGV 시뮬레이션
  • 상태 모니터링: AGV 상태, 위치, 배터리 등 실시간 모니터링

핵심 클래스

  • VirtualAGV: 가상 AGV 동작 시뮬레이션 (이동, 회전, 도킹, 충전)
  • SimulatorCanvas: AGV 및 맵 시각화 캔버스
  • SimulatorForm: 시뮬레이터 메인 인터페이스
  • SimulationState: 시뮬레이션 상태 관리

AGV 상태

  • Idle: 대기, Moving: 이동 중, Rotating: 회전 중
  • Docking: 도킹 중, Charging: 충전 중, Error: 오류

개발 워크플로우

  1. 맵 생성: AGVMapEditor로 맵 노드 배치 및 RFID 매핑 설정
  2. 경로 테스트: AGVSimulator로 AGV 동작 시뮬레이션 및 검증
  3. 실제 적용: 검증된 맵 데이터를 실제 AGV 시스템에 적용

RFID 매핑 아키텍처 원칙

중요: 물리적 RFID ID는 의미없는 고유값으로 관리하고, 논리적 노드 ID와 별도 매핑 테이블로 분리하여 현장 유지보수성 향상

개발시 주의사항

  • 메인 애플리케이션은 Windows Forms 기반의 터치 인터페이스로 설계됨
  • 실시간 AGV 제어 시스템이므로 상태 머신 로직 수정시 신중히 접근
  • 통신 관련 코드 변경시 하드웨어 호환성 고려 필요
  • 맵 에디터/시뮬레이터: AGVMapEditor 프로젝트에 의존성이 있으므로 먼저 빌드 필요
  • JSON 파일 형식: 맵 데이터는 MapNodes, RfidMappings 두 섹션으로 구성