This commit is contained in:
backuppc
2026-01-16 17:33:10 +09:00
parent ddf111c69f
commit 3044894e5c
7 changed files with 340 additions and 249 deletions

View File

@@ -64,7 +64,7 @@ namespace AGVNavigationCore.PathFinding.Core
/// <summary>
/// 오류 메시지 (실패시)
/// </summary>
public string ErrorMessage { get; set; }
public string Message { get; set; }
/// <summary>
/// 도킹 검증 결과
@@ -116,7 +116,7 @@ namespace AGVNavigationCore.PathFinding.Core
ExploredNodes = 0;
EstimatedTimeSeconds = 0;
RotationCount = 0;
ErrorMessage = string.Empty;
Message = string.Empty;
PlanDescription = string.Empty;
RequiredDirectionChange = false;
DirectionChangeNode = string.Empty;
@@ -148,37 +148,20 @@ namespace AGVNavigationCore.PathFinding.Core
return result;
}
/// <summary>
/// 실패 결과 생성
/// </summary>
/// <param name="errorMessage">오류 메시지</param>
/// <param name="calculationTimeMs">계산 시간</param>
/// <returns>실패 결과</returns>
public static AGVPathResult CreateFailure(string errorMessage, long calculationTimeMs)
{
return new AGVPathResult
{
Success = false,
ErrorMessage = errorMessage,
CalculationTimeMs = calculationTimeMs
};
}
/// <summary>
/// 실패 결과 생성 (확장)
/// </summary>
/// <param name="errorMessage">오류 메시지</param>
/// <param name="calculationTimeMs">계산 시간</param>
/// <param name="exploredNodes">탐색된 노드 수</param>
/// <returns>실패 결과</returns>
public static AGVPathResult CreateFailure(string errorMessage, long calculationTimeMs, int exploredNodes)
public static AGVPathResult CreateFailure(string errorMessage, long calculationTimeMs = 0, int exploredNodes = 0)
{
return new AGVPathResult
{
Success = false,
ErrorMessage = errorMessage,
Message = errorMessage,
CalculationTimeMs = calculationTimeMs,
ExploredNodes = exploredNodes
};
@@ -276,22 +259,6 @@ namespace AGVNavigationCore.PathFinding.Core
}
}
/// <summary>
/// 상세 경로 정보 반환
/// </summary>
/// <returns>상세 정보 문자열</returns>
public string GetDetailedInfo()
{
if (!Success)
{
return $"경로 계산 실패: {ErrorMessage} (계산시간: {CalculationTimeMs}ms)";
}
return $"경로: {Path.Count}개 노드, 거리: {TotalDistance:F1}px, " +
$"회전: {RotationCount}회, 예상시간: {EstimatedTimeSeconds:F1}초, " +
$"계산시간: {CalculationTimeMs}ms";
}
/// <summary>
/// 경로의 노드 정보를 포함
/// </summary>
@@ -300,13 +267,14 @@ namespace AGVNavigationCore.PathFinding.Core
{
if (!Success)
{
return $"경로 계산 실패: {ErrorMessage} (계산시간: {CalculationTimeMs}ms)";
return $"경로 계산 실패: {Message} (계산시간: {CalculationTimeMs}ms)";
}
var data = DetailedPath.Select(t => {
return $"{t.RfidId}[{t.NodeId}] {t.MotorDirection.ToString().Substring(0,1)}-{t.MagnetDirection.ToString().Substring(0,1)}";
var data = DetailedPath.Select(t =>
{
return $"{t.RfidId}[{t.NodeId}] {t.MotorDirection.ToString().Substring(0, 1)}-{t.MagnetDirection.ToString().Substring(0, 1)}";
});
return string.Join(" → ",data);
return string.Join(" → ", data);
}
@@ -322,7 +290,7 @@ namespace AGVNavigationCore.PathFinding.Core
}
return Path?.Select(n => n.Id).ToList() ?? new List<string>();
}
/// <summary>
/// 문자열 표현
/// </summary>
@@ -334,7 +302,7 @@ namespace AGVNavigationCore.PathFinding.Core
}
else
{
return $"Failed: {ErrorMessage}";
return $"Failed: {Message}";
}
}
}

View File

@@ -351,12 +351,12 @@ namespace AGVNavigationCore.PathFinding.Core
if (!previousResult.Success)
return AGVPathResult.CreateFailure(
$"이전 경로 결과 실패: {previousResult.ErrorMessage}",
$"이전 경로 결과 실패: {previousResult.Message}",
previousResult.CalculationTimeMs);
if (!currentResult.Success)
return AGVPathResult.CreateFailure(
$"현재 경로 결과 실패: {currentResult.ErrorMessage}",
$"현재 경로 결과 실패: {currentResult.Message}",
currentResult.CalculationTimeMs);
// 경로가 비어있는 경우 처리

View File

@@ -138,7 +138,7 @@ namespace AGVNavigationCore.PathFinding.Planning
pathResult.PrevDirection = prevDirection;
if (!pathResult.Success)
return AGVPathResult.CreateFailure(pathResult.ErrorMessage ?? "경로 없음", 0, 0);
return AGVPathResult.CreateFailure(pathResult.Message ?? "경로 없음", 0, 0);
// 3. 상세 데이터 생성 (갈림길 마그넷 방향 계산 포함)
// 3. 상세 데이터 생성 (갈림길 마그넷 방향 계산 포함)

View File

@@ -108,7 +108,7 @@ namespace AGVNavigationCore.PathFinding.Planning
/// </summary>
public override string ToString()
{
var result = $"R{RfidId}[N{NodeId}]:{MotorDirection}";
var result = $"R{RfidId}[*{NodeId}]:{MotorDirection}";
// 마그넷 방향이 직진이 아닌 경우 표시
if (MagnetDirection != MagnetDirection.Straight)

View File

@@ -191,7 +191,7 @@ namespace AGVNavigationCore.Utils
}
// 검증 수행
if (LastNodeInfo.MotorDirection == requiredDirection && pathResult.DetailedPath[pathResult.DetailedPath.Count - 2].MotorDirection == requiredDirection)
if (LastNodeInfo.MotorDirection == requiredDirection && pathResult.DetailedPath[pathResult.DetailedPath.Count - 1].MotorDirection == requiredDirection)
{
System.Diagnostics.Debug.WriteLine($"[DockingValidator] ✅ 도킹 검증 성공");
return DockingValidationResult.CreateValid(