fix: RFID duplicate validation and correct magnet direction calculation
- Add real-time RFID duplicate validation in map editor with automatic rollback - Remove RFID auto-assignment to maintain data consistency between editor and simulator - Fix magnet direction calculation to use actual forward direction angles instead of arbitrary assignment - Add node names to simulator combo boxes for better identification - Improve UI layout by drawing connection lines before text for better visibility 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -139,4 +139,65 @@ SubProject 내의 GitUpdate.bat을 사용하여 모든 하위 프로젝트를
|
||||
- 실시간 AGV 제어 시스템이므로 상태 머신 로직 수정시 신중히 접근
|
||||
- 통신 관련 코드 변경시 하드웨어 호환성 고려 필요
|
||||
- **맵 에디터/시뮬레이터**: AGVMapEditor 프로젝트에 의존성이 있으므로 먼저 빌드 필요
|
||||
- **JSON 파일 형식**: 맵 데이터는 MapNodes, RfidMappings 두 섹션으로 구성
|
||||
- **JSON 파일 형식**: 맵 데이터는 MapNodes, RfidMappings 두 섹션으로 구성
|
||||
|
||||
## 최근 구현 완료 기능 및 중요사항 (2024.12.09)
|
||||
|
||||
### ✅ 회전 구간 회피 기능 (PathFinding)
|
||||
**파일**: `AGVNavigationCore/PathFinding/PathfindingOptions.cs` (신규)
|
||||
- **목적**: AGV 회전 오류를 피하기 위한 선택적 회전 구간 회피
|
||||
- **구현**: PathfindingOptions 클래스로 회전 회피 설정 관리
|
||||
- **UI**: AGVSimulator에 "회전 구간 회피" 체크박스 추가
|
||||
- **알고리즘**: A* 경로탐색에서 회전 노드 가중치 증가 또는 필터링
|
||||
|
||||
### ✅ 맵 에디터 마우스 좌표 오차 수정
|
||||
**파일**: `AGVNavigationCore/Controls/UnifiedAGVCanvas.Mouse.cs`
|
||||
- **문제**: 줌 인/아웃 시 노드 선택 히트 영역이 너무 작아짐
|
||||
- **해결**: 최소 화면 히트 영역(20픽셀) 보장으로 정확한 노드 선택 가능
|
||||
- **적용**: 원형, 5각형, 삼각형 모든 노드 타입 히트 감지 개선
|
||||
|
||||
### ✅ 노드 연결 관리 시스템 (신규 구현)
|
||||
**파일들**:
|
||||
- `AGVMapEditor/Forms/MainForm.cs` - UI 및 이벤트 처리
|
||||
- `AGVNavigationCore/Controls/UnifiedAGVCanvas.cs` - 편집 모드 및 이벤트 정의
|
||||
- `AGVNavigationCore/Controls/UnifiedAGVCanvas.Mouse.cs` - 마우스 연결 삭제 기능
|
||||
|
||||
#### 주요 기능:
|
||||
1. **노드 연결 목록 표시**: `lstNodeConnection` 리스트박스에 모든 연결 정보 표시
|
||||
2. **버튼 연결 삭제**: `btNodeRemove` 버튼으로 선택된 연결 삭제
|
||||
3. **더블클릭 연결 삭제**: 목록에서 더블클릭으로 빠른 삭제
|
||||
4. **마우스 직접 삭제**: 맵에서 연결선 클릭으로 직접 삭제
|
||||
|
||||
#### 핵심 클래스:
|
||||
- **NodeConnectionInfo**: 연결 정보 표현 클래스 (From/To 노드, 연결 타입)
|
||||
- **EditMode.DeleteConnection**: 새로운 편집 모드 추가
|
||||
- **ConnectionDeleted 이벤트**: 연결 삭제 시 발생하는 이벤트
|
||||
|
||||
### 🔧 빌드 환경 이슈
|
||||
- **Visual Studio 2022**: MSBuild 경로 문제로 빌드 실패
|
||||
- **권장**: Visual Studio Community/Professional 2022 설치 필요
|
||||
- **대안**: 기존 빌드된 실행파일로 테스트 가능
|
||||
|
||||
### 📋 개발 우선순위 및 권장사항
|
||||
|
||||
#### 꼭 지켜야 할 사항:
|
||||
1. **PathFinding 로직 변경시**: 반드시 시뮬레이터에서 테스트 후 적용
|
||||
2. **노드 연결 관리**: 물리적 RFID와 논리적 노드 ID 분리 원칙 유지
|
||||
3. **UI 편집 모드**: 동시에 여러 편집 모드 활성화하지 않도록 주의
|
||||
4. **이벤트 처리**: MapChanged, NodeAdded/Deleted, ConnectionDeleted 이벤트 체인 확인
|
||||
|
||||
#### 다음 개발 우선순위:
|
||||
1. **방향 전환 기능**: AGV 현재 방향과 목표 방향 불일치 시 회전 노드 경유 로직
|
||||
2. **맵 검증 기능**: 연결 무결성, 고립된 노드, 순환 경로 등 검증
|
||||
3. **성능 최적화**: 대형 맵에서 경로 계산 및 연결 목록 표시 성능 개선
|
||||
4. **실시간 동기화**: 맵 에디터와 시뮬레이터 간 실시간 맵 동기화
|
||||
|
||||
#### 중요 개발 패턴:
|
||||
- **이벤트 기반 아키텍처**: UI 업데이트는 이벤트를 통해 자동화
|
||||
- **상태 관리**: _hasChanges 플래그로 변경사항 추적
|
||||
- **에러 처리**: 사용자 확인 다이얼로그와 상태바 메시지 활용
|
||||
- **코드 재사용**: UnifiedAGVCanvas를 맵에디터와 시뮬레이터에서 공통 사용
|
||||
|
||||
### 🚨 알려진 이슈
|
||||
- **빌드 환경**: MSBuild 2022가 설치되지 않은 환경에서 빌드 불가
|
||||
- **좌표 시스템**: 줌/팬 상태에서 좌표 변환 정확성 지속 모니터링 필요
|
||||
Reference in New Issue
Block a user