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>
79 lines
2.4 KiB
C#
79 lines
2.4 KiB
C#
using System;
|
|
|
|
namespace AGVNavigationCore.Models
|
|
{
|
|
/// <summary>
|
|
/// RFID와 논리적 노드 ID를 매핑하는 클래스
|
|
/// 물리적 RFID는 의미없는 고유값, 논리적 노드는 맵 에디터에서 관리
|
|
/// </summary>
|
|
public class RfidMapping
|
|
{
|
|
/// <summary>
|
|
/// 물리적 RFID 값 (의미 없는 고유 식별자)
|
|
/// 예: "1234567890", "ABCDEF1234" 등
|
|
/// </summary>
|
|
public string RfidId { get; set; } = string.Empty;
|
|
|
|
/// <summary>
|
|
/// 논리적 노드 ID (맵 에디터에서 관리)
|
|
/// 예: "N001", "N002", "LOADER1", "CHARGER1" 등
|
|
/// </summary>
|
|
public string LogicalNodeId { get; set; } = string.Empty;
|
|
|
|
/// <summary>
|
|
/// 매핑 생성 일자
|
|
/// </summary>
|
|
public DateTime CreatedDate { get; set; } = DateTime.Now;
|
|
|
|
/// <summary>
|
|
/// 마지막 수정 일자
|
|
/// </summary>
|
|
public DateTime ModifiedDate { get; set; } = DateTime.Now;
|
|
|
|
/// <summary>
|
|
/// 설치 위치 설명 (현장 작업자용)
|
|
/// 예: "로더1번 앞", "충전기2번 입구", "복도 교차점" 등
|
|
/// </summary>
|
|
public string Description { get; set; } = string.Empty;
|
|
|
|
/// <summary>
|
|
/// RFID 상태 (정상, 손상, 교체예정 등)
|
|
/// </summary>
|
|
public string Status { get; set; } = "정상";
|
|
|
|
/// <summary>
|
|
/// 매핑 활성화 여부
|
|
/// </summary>
|
|
public bool IsActive { get; set; } = true;
|
|
|
|
/// <summary>
|
|
/// 기본 생성자
|
|
/// </summary>
|
|
public RfidMapping()
|
|
{
|
|
}
|
|
|
|
/// <summary>
|
|
/// 매개변수 생성자
|
|
/// </summary>
|
|
/// <param name="rfidId">물리적 RFID ID</param>
|
|
/// <param name="logicalNodeId">논리적 노드 ID</param>
|
|
/// <param name="description">설치 위치 설명</param>
|
|
public RfidMapping(string rfidId, string logicalNodeId, string description = "")
|
|
{
|
|
RfidId = rfidId;
|
|
LogicalNodeId = logicalNodeId;
|
|
Description = description;
|
|
CreatedDate = DateTime.Now;
|
|
ModifiedDate = DateTime.Now;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 문자열 표현
|
|
/// </summary>
|
|
public override string ToString()
|
|
{
|
|
return $"{RfidId} → {LogicalNodeId} ({Description})";
|
|
}
|
|
}
|
|
} |