feat(positionmap): 增加车头朝向的种类并优化路径规划逻辑

- 在 PositionMapLineDO 和 PositionMapLineDTO 中扩展了车头朝向的种类,增加了随意朝向和反向行走时的朝向变化
- 修改了 PathPlanningServiceImpl 中的路径规划逻辑,以适应新的车头朝向种类
- 更新了相关控制器和 API 接口中的车头朝向描述
This commit is contained in:
aikai 2025-04-09 09:56:45 +08:00
parent fd814aad58
commit 1fef888488
8 changed files with 66 additions and 17 deletions

View File

@ -102,16 +102,18 @@ public class PositionMapLineDTO {
@Schema(description = "终点高")
private Double endHigh;
@Schema(description = "车头朝向(0:正正 1:正反 2:反正 3:反反)", example = "15890")
@Schema(description = "车头朝向(0:正正 1:正反 2:反正 3:反反 4正随 5随正 6随反 7反随 8随随) 如果是单向的话 0代表正 1代表反 2代表随意", example = "15890")
private Integer toward;
@Schema(description = "发送给路径规划 车头朝向(0正 1反)", example = "15890")
@Schema(description = "发送给路径规划 车头朝向(0正 1反 2随)", example = "15890")
private Integer ppToward;
/**
* 双向车道 反向行走变更车头朝向
*
* 车头朝向(0:正正 1:正反 2:反正 3:反反 4正随 5随正 6随反 7反随 8随随
*
* @param toward
* @return
*/
@ -124,6 +126,48 @@ public class PositionMapLineDTO {
return 0;
} else if (toward == 3) {
return 1;
} else if (toward == 4) {
return 2;
} else if (toward == 5) {
return 0;
} else if (toward == 6) {
return 1;
} else if (toward == 7) {
return 2;
} else if (toward == 8) {
return 2;
} else {
return 0;
}
}
/**
* 双向车道 反向行走变更车头朝向
*
* 车头朝向(0:正正 1:正反 2:反正 3:反反 4正随 5随正 6随反 7反随 8随随
*
* @param toward
* @return
*/
public Integer changeTowardFirst(Integer toward) {
if (toward == 0) {
return 0;
} else if (toward == 1) {
return 0;
} else if (toward == 2) {
return 1;
} else if (toward == 3) {
return 1;
} else if (toward == 4) {
return 0;
} else if (toward == 5) {
return 2;
} else if (toward == 6) {
return 2;
} else if (toward == 7) {
return 1;
} else if (toward == 8) {
return 2;
} else {
return 0;
}

View File

@ -102,6 +102,6 @@ public class PositionMapLineDTO {
@Schema(description = "终点高")
private BigDecimal endHigh;
@Schema(description = "车头朝向( 0:正正 1:正反 2:反正 3:反反)")
@Schema(description = "车头朝向(0:正正 1:正反 2:反正 3:反反 4正随 5随正 6随反 7反随 8随随")
private Integer toward;
}

View File

@ -114,7 +114,7 @@ public class PositionMapLinePageReqVO extends PageParam {
private LocalDateTime[] createTime;
@Schema(description = "车头朝向( 0:正正 1:正反 2:反正 3:反反)", example = "15890")
@Schema(description = "车头朝向(0:正正 1:正反 2:反正 3:反反 4正随 5随正 6随反 7反随 8随随", example = "15890")
private Integer toward;
}

View File

@ -130,8 +130,8 @@ public class PositionMapLineRespVO {
@ExcelProperty("创建时间")
private LocalDateTime createTime;
@Schema(description = "车头朝向( 0:正正 1:正反 2:反正 3:反反)", example = "15890")
@ExcelProperty("车头朝向( 0:正正 1:正反 2:反正 3:反反)")
@Schema(description = "车头朝向(0:正正 1:正反 2:反正 3:反反 4正随 5随正 6随反 7反随 8随随", example = "15890")
@ExcelProperty("车头朝向(0:正正 1:正反 2:反正 3:反反 4正随 5随正 6随反 7反随 8随随")
private Integer toward;
}

View File

@ -112,7 +112,7 @@ public class PositionMapLineSaveReqVO {
private BigDecimal reverseSpeedLimit;
@Schema(description = "车头朝向( 0:正正 1:正反 2:反正 3:反反)", example = "15890")
@Schema(description = "车头朝向(0:正正 1:正反 2:反正 3:反反 4正随 5随正 6随反 7反随 8随随 如果是单向的话 0代表正 1代表反 2代表随意", example = "15890")
private Integer toward;
}

View File

@ -169,7 +169,7 @@ public class PositionMapLineDO extends BaseDO {
private BigDecimal reverseSpeedLimit;
/**
* 车头朝向(0:正正 1:正反 2:反正 3:反反)
* 车头朝向(0:正正 1:正反 2:反正 3:反反 4正随 5随正 6随反 7反随 8随随 如果是单向的话 0代表正 1代表反 2代表随意
*/
private Integer toward;
}

View File

@ -205,10 +205,12 @@ public class PathPlanningServiceImpl implements PathPlanningService {
List<PositionMapLineDTO> list = new ArrayList<>();
for (PositionMapLineDTO positionMapLineDO : positionMapLineDOS) {
list.add(positionMapLineDO);
if (DirectionEnum.ONE_WAY.getType().equals(positionMapLineDO.getDirection())) {
positionMapLineDO.setPpToward(positionMapLineDO.changeToward(positionMapLineDO.getToward()));
positionMapLineDO.setPpToward(positionMapLineDO.getToward());
list.add(positionMapLineDO);
} else {
positionMapLineDO.setPpToward(positionMapLineDO.changeTowardFirst(positionMapLineDO.getToward()));
list.add(positionMapLineDO);
list.add(setPositionMapLineDTOData(positionMapLineDO));
}
}
@ -280,10 +282,12 @@ public class PathPlanningServiceImpl implements PathPlanningService {
List<PositionMapLineDTO> list = new ArrayList<>();
for (PositionMapLineDTO positionMapLineDO : positionMapLineDOS) {
list.add(positionMapLineDO);
if (DirectionEnum.ONE_WAY.getType().equals(positionMapLineDO.getDirection())) {
positionMapLineDO.setPpToward(positionMapLineDO.changeToward(positionMapLineDO.getToward()));
positionMapLineDO.setPpToward(positionMapLineDO.getToward());
list.add(positionMapLineDO);
} else {
positionMapLineDO.setPpToward(positionMapLineDO.changeTowardFirst(positionMapLineDO.getToward()));
list.add(positionMapLineDO);
list.add(setPositionMapLineDTOData(positionMapLineDO));
}
}
@ -533,7 +537,7 @@ public class PathPlanningServiceImpl implements PathPlanningService {
.expansionZoneAfter(positionMapLineDO.getExpansionZoneFront())
.expansionZoneLeft(positionMapLineDO.getExpansionZoneRight())
.expansionZoneRight(positionMapLineDO.getExpansionZoneLeft())
.toward(positionMapLineDO.changeToward(positionMapLineDO.getToward()))
.ppToward(positionMapLineDO.changeToward(positionMapLineDO.getToward()))
.build();
return build;
}
@ -548,10 +552,12 @@ public class PathPlanningServiceImpl implements PathPlanningService {
List<PositionMapLineDTO> list = new ArrayList<>();
for (PositionMapLineDTO positionMapLineDO : positionMapLineDOS) {
list.add(positionMapLineDO);
if (DirectionEnum.ONE_WAY.getType().equals(positionMapLineDO.getDirection())) {
positionMapLineDO.setPpToward(positionMapLineDO.changeToward(positionMapLineDO.getToward()));
positionMapLineDO.setPpToward(positionMapLineDO.getToward());
list.add(positionMapLineDO);
} else {
positionMapLineDO.setPpToward(positionMapLineDO.changeTowardFirst(positionMapLineDO.getToward()));
list.add(positionMapLineDO);
list.add(setPositionMapLineDTOData(positionMapLineDO));
}
}

View File

@ -301,8 +301,7 @@ public class PositionMapServiceImpl extends ServiceImpl<PositionMapMapper, Posit
@Override
public void emergencyStopOrRecovery(Long id) {
// 先获取当前地图上的所有AGV信息
// todo 先获取当前地图上的所有AGV信息
}
@Override