# AGV HMI 시스템 변경 로그 이 파일은 AGV HMI 시스템의 주요 변경 사항을 기록합니다. ## [2024.12.16] - AGV 방향 표시 수정 및 타겟계산 기능 추가 ### 🐛 버그 수정 - **AGV 후진 모터 시 리프트 방향 표시 오류 수정** - **문제**: 008→007→006 후진 이동 시 리프트가 동남쪽으로 잘못 표시 - **원인**: LiftCalculator에서 후진 모터 방향 계산 로직 오류 - **수정파일**: `AGVNavigationCore\Utils\LiftCalculator.cs` - **수정메서드**: `CalculateLiftAngleRadians()` :32-39행 - **수정내용**: ```csharp // 이전 (잘못된 계산) var dx = targetPos.X - currentPos.X; var dy = targetPos.Y - currentPos.Y; // 수정 (올바른 계산) var dx = currentPos.X - targetPos.X; var dy = currentPos.Y - targetPos.Y; ``` - **결과**: 후진 시 리프트가 AGV 이동 방향(북서쪽)을 올바르게 표시 ### ✨ 새로운 기능 - **타겟계산 버튼 추가** - **위치**: AGV 시뮬레이터 → 경로 제어 그룹박스 - **기능**: - 버튼 클릭 후 맵에서 노드 클릭 시 자동 경로 계산 - 시작 RFID가 비어있으면 AGV 현재 위치로 자동 설정 - 연속 테스트 지원 - **구현파일**: - `AGVSimulator\Forms\SimulatorForm.Designer.cs` - UI 컨트롤 추가 - `AGVSimulator\Forms\SimulatorForm.cs` - 이벤트 핸들러 구현 - **주요메서드**: - `OnTargetCalc_Click()` - 타겟계산 버튼 이벤트 - `SetStartNodeFromAGVPosition()` - AGV 위치에서 시작 노드 자동 설정 - `SetTargetNodeInCombo()` - 목적지 콤보박스 설정 - `FindClosestNode()` - 가장 가까운 노드 찾기 ### 📝 문서 업데이트 - **CLAUDE.md 문서 개선** - AGV 하드웨어 구조 및 방향 체계 설명 추가 - 방향 계산 관련 주요 파일 및 함수 매핑 정보 추가 - 해결된 문제점과 새로운 기능 기록 - 다음 세션에서의 빠른 참조를 위한 구조화 ### 🔧 기술적 개선사항 - **AGV 방향 시스템 이해도 향상** - `LIFT --- AGV --- MONITOR` 하드웨어 구조 명확화 - 모터 방향과 리프트 위치 관계 정립 - 전진/후진에 따른 리프트 방향 로직 통일 - **마우스 클릭 감지 개선** - **문제**: 줌/팬 상태에서 노드 클릭 시 좌표 오차로 감지되지 않는 문제 - **원인**: 렌더링 Matrix 변환과 마우스 좌표 변환이 불일치 - **수정파일**: `AGVNavigationCore\\Controls\\UnifiedAGVCanvas.Mouse.cs` - **수정메서드**: `ScreenToWorld()` 좌표 변환 함수 - **수정내용**: ```csharp // 수정 전: 수동 계산 var worldX = (int)((screenPoint.X - _panOffset.X) / _zoomFactor); // 수정 후: Matrix 역변환 사용 transform.Scale(_zoomFactor, _zoomFactor); transform.Translate(_panOffset.X, _panOffset.Y); transform.Invert(); transform.TransformPoints(points); ``` - **결과**: 줌/팬 상태에서도 정확한 노드 클릭 감지 가능 --- ## 변경 로그 형식 ### 버전 표기 - `[YYYY.MM.DD]` - 날짜 기반 버전 관리 ### 변경 유형 - 🐛 **버그 수정**: 기존 기능의 오류 수정 - ✨ **새로운 기능**: 새로 추가된 기능 - 🔧 **기술적 개선**: 성능 향상, 리팩토링 등 - 📝 **문서**: 문서 추가/수정 - 🗑️ **제거**: 기능 또는 파일 제거 - ⚠️ **중요 변경**: 호환성에 영향을 주는 변경 ### 기록 원칙 - 사용자에게 영향을 주는 모든 변경사항 기록 - 수정된 파일과 메서드명 명시 - 문제의 원인과 해결 방법 설명 - 테스트 결과나 검증 방법 포함 --- *이 체인지로그는 [Keep a Changelog](https://keepachangelog.com/) 형식을 따릅니다.*