refactor: Move AGV development projects to separate AGVLogic folder
- Reorganized AGVMapEditor, AGVNavigationCore, AGVSimulator into AGVLogic folder - Removed deleted project files from root folder tracking - Updated CLAUDE.md with AGVLogic-specific development guidelines - Clean separation of independent project development from main codebase - Projects now ready for independent development and future integration 🤖 Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -2,6 +2,101 @@
|
||||
|
||||
이 파일은 AGV HMI 시스템의 주요 변경 사항을 기록합니다.
|
||||
|
||||
## [2025.10.22] - VirtualAGV를 코어 라이브러리로 마이그레이션
|
||||
|
||||
### ⚠️ 중요 변경
|
||||
- **VirtualAGV를 AGVNavigationCore 라이브러리로 이동**
|
||||
- 이전: `AGVSimulator\Models\VirtualAGV.cs` (시뮬레이터 전용)
|
||||
- 현재: `AGVNavigationCore\Models\VirtualAGV.cs` (공용 코어 라이브러리)
|
||||
- **의미**: 실제 AGV 제어 시스템과 시뮬레이터에서 동일한 비즈니스 로직 사용
|
||||
|
||||
### ✨ 새로운 기능
|
||||
- **IMovableAGV 인터페이스 추가**
|
||||
- **위치**: `AGVNavigationCore\Models\IMovableAGV.cs` (신규)
|
||||
- **목적**: 실제 AGV와 시뮬레이션 AGV의 계약 정의
|
||||
- **주요 메서드**:
|
||||
```csharp
|
||||
// 센서 입력
|
||||
void SetCurrentPosition(Point position); // 위치 센서
|
||||
void SetDetectedRfid(string rfidId); // RFID 센서
|
||||
void SetMotorDirection(AgvDirection direction); // 모터
|
||||
void SetBatteryLevel(float percentage); // BMS
|
||||
|
||||
// 프레임 업데이트 (외부에서 호출)
|
||||
void Update(float deltaTimeMs);
|
||||
```
|
||||
|
||||
### 🔧 기술적 개선사항
|
||||
- **타이머 의존성 제거**
|
||||
- System.Windows.Forms.Timer 제거
|
||||
- 외부에서 Update(deltaTimeMs)를 주기적으로 호출하는 방식으로 변경
|
||||
- 장점: 타이머 없이도 동작 가능, 실제 시스템과 시뮬레이터 모두 적용 가능
|
||||
|
||||
- **UI 의존성 제거**
|
||||
- EventHandler 이외의 UI 라이브러리 제거
|
||||
- 순수 .NET 라이브러리로 변환 (System 네임스페이스만 사용)
|
||||
|
||||
- **프레임 업데이트 방식 개선**
|
||||
- 이전: 내부 타이머로 자동 업데이트
|
||||
- 현재: 외부에서 Update(100)을 정기적으로 호출
|
||||
```csharp
|
||||
// AGVSimulator\Forms\SimulatorForm.cs의 OnSimulationTimer_Tick
|
||||
foreach (var agv in _agvList)
|
||||
{
|
||||
agv.Update(100); // 100ms 간격으로 업데이트
|
||||
}
|
||||
```
|
||||
|
||||
### 📝 아키텍처 변화
|
||||
```
|
||||
Before:
|
||||
AGVSimulator (시뮬레이터 전용)
|
||||
└── VirtualAGV (시뮬레이터용)
|
||||
└── System.Windows.Forms.Timer
|
||||
|
||||
After:
|
||||
AGVNavigationCore (공용 코어)
|
||||
├── IMovableAGV (인터페이스)
|
||||
└── VirtualAGV (구현체)
|
||||
└── Update(deltaTime) 메서드만
|
||||
|
||||
AGVSimulator (시뮬레이터)
|
||||
└── SimulatorForm.OnSimulationTimer_Tick
|
||||
└── agv.Update(100)
|
||||
|
||||
Project (실제 AGV)
|
||||
└── AgvController
|
||||
└── agv.Update(deltaTime)
|
||||
```
|
||||
|
||||
### 🎯 향후 활용
|
||||
1. **실제 AGV 시스템에서**:
|
||||
```csharp
|
||||
var agv = new VirtualAGV("AGV1", startPos);
|
||||
|
||||
// 하드웨어 센서에서
|
||||
agv.SetCurrentPosition(sensorData.Position);
|
||||
agv.SetDetectedRfid(rfidSensor.Value);
|
||||
agv.SetMotorDirection(motorController.Direction);
|
||||
agv.SetBatteryLevel(bms.Level);
|
||||
|
||||
// 제어 루프에서
|
||||
agv.Update(deltaTime);
|
||||
```
|
||||
|
||||
2. **시뮬레이션 테스트**:
|
||||
- 시뮬레이터에서 완벽하게 동작한 VirtualAGV
|
||||
- 실제 AGV에 그대로 적용 가능
|
||||
- 테스트 신뢰도 향상
|
||||
|
||||
### 📋 변경 파일
|
||||
- ✨ 추가: `AGVNavigationCore\Models\VirtualAGV.cs`
|
||||
- ✨ 추가: `AGVNavigationCore\Models\IMovableAGV.cs`
|
||||
- 📝 수정: `AGVNavigationCore\AGVNavigationCore.csproj` (프로젝트 파일 업데이트)
|
||||
- 📝 수정: `AGVSimulator\Forms\SimulatorForm.cs` (Update 호출 추가)
|
||||
|
||||
---
|
||||
|
||||
## [2024.12.16] - AGV 방향 표시 수정 및 타겟계산 기능 추가
|
||||
|
||||
### 🐛 버그 수정
|
||||
|
||||
Reference in New Issue
Block a user