| | |
| | | import com.algo.config.EnvDataConfig; |
| | | import com.algo.model.*; |
| | | import com.algo.util.JsonUtils; |
| | | import com.algo.util.PathTimeCalculator; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | |
| | | * 剩余路径处理 |
| | | */ |
| | | private RemainingPathProcessor remainingPathProcessor; |
| | | |
| | | /** |
| | | * 路径时间计算器 |
| | | */ |
| | | private PathTimeCalculator timeCalculator; |
| | | |
| | | |
| | | /** |
| | |
| | | |
| | | // 初始化剩余路径处理器 |
| | | this.remainingPathProcessor = new RemainingPathProcessor(envDataConfig.getPathMapping()); |
| | | |
| | | // 初始化时间计算器 |
| | | Map<String, double[]> realCoordinateMapping = JsonUtils.loadRealCoordinateMapping("man_code.json"); |
| | | this.timeCalculator = new PathTimeCalculator(envDataConfig.getPathMapping(), realCoordinateMapping); |
| | | |
| | | // 为碰撞解决器设置时间计算器 |
| | | this.collisionResolver.setTimeCalculator(timeCalculator); |
| | | } |
| | | |
| | | /** |
| | |
| | | List<double[]> constraints, |
| | | Map<String, String> occupancyMap, |
| | | AGVStatus agvStatus) { |
| | | // 首先尝试基本路径规划 |
| | | // 尝试基本路径规划 |
| | | PlannedPath basicPath = pathPlanner.planPath(startPos, endPos, constraints); |
| | | if (basicPath == null) { |
| | | return null; |
| | |
| | | basicPath, occupancyMap, agvStatus.getPhysicalConfig() |
| | | ); |
| | | |
| | | // 设置路径的时间信息 |
| | | enhancePathWithTimeInfo(basicPath, safeStartTime, agvStatus.getPhysicalConfig()); |
| | | // 使用统一的时间计算器设置精确的时间信息 |
| | | timeCalculator.calculatePathTiming(basicPath, safeStartTime, agvStatus.getPhysicalConfig(), 0.0); |
| | | |
| | | return basicPath; |
| | | } |