首次启动自驾参数传递

继续启动自驾
This commit is contained in:
yangyakun
2026-03-05 15:38:30 +08:00
parent 13c8808659
commit 30e6e132d7
4 changed files with 81 additions and 37 deletions

View File

@@ -16,6 +16,7 @@ import com.mogo.och.bridge.autopilot.line.LineManager
import com.mogo.och.bridge.distance.TrajectoryAndDistanceManager
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
import com.zhjt.mogo.adas.unmanned.task.dto.cmd.Trajectory
import com.zhjt.mogo.adas.unmanned.task.dto.cmd.VehicleSite
import java.util.concurrent.atomic.AtomicReference
object OchAutoPilotManager {
@@ -117,15 +118,17 @@ object OchAutoPilotManager {
return sessionId
}
//TODO 任务管理继续
// @JvmStatic
// fun unmannedAutoPilotContinue(taskId: Long, traj: Trajectory, parameters: AutopilotControlParameters): Long {
// val sessionId = CallerAutoPilotControlManager.unmannedAutoPilotContinue(taskId, traj, parameters)
// globalSessionId.set(SessionWithTime(sessionId, System.currentTimeMillis(), -1L))
// OchAutoPilotStatusListenerManager.fsmBackSessionId.set(-1L)
// OchAutopilotAnalytics.triggerStartAutopilotParameters(traj, parameters, sessionId)
// return sessionId
// }
/**
* 继续启动自驾
*/
@JvmStatic
fun unmannedAutoPilotContinue(taskId: Long, traj: Trajectory, vehicleSite : VehicleSite, parameters: AutopilotControlParameters): Long {
val sessionId = CallerAutoPilotControlManager.unmannedAutoPilotContinue(taskId, traj,vehicleSite, parameters)
globalSessionId.set(SessionWithTime(sessionId, System.currentTimeMillis(), -1L))
OchAutoPilotStatusListenerManager.fsmBackSessionId.set(-1L)
OchAutopilotAnalytics.triggerStartAutopilotParameters(traj, parameters, sessionId)
return sessionId
}
/**
* 启动自驾失败切 FSM返回的Session和启动SessionId 不同
*/

View File

@@ -678,8 +678,9 @@ object LineManager : CallerBase<ILineCallback>() {
_lineInfos?.let { i ->
val wayPoints = ArrayList<VehicleSite>()
val blackPoints = ArrayList<VehicleSite>()
i.siteInfos.forEach { site ->
wayPoints.add(VehicleSite.builder()
i.siteInfos.forEachIndexed { index, site ->
if(index==0){
wayPoints.add(VehicleSite.builder()
.coordinateType(AutopilotCoordinateTypeEnum.WGS84.code)
.point(AutopilotPoint.builder().x(site.lon).y(site.lat).build())
.station(StationEnum.SITE.code)
@@ -688,19 +689,20 @@ object LineManager : CallerBase<ILineCallback>() {
.stationSeq(site.seq)
.tag(site.tag)
.build())
site.passPoints?.forEach { p ->
wayPoints.add(VehicleSite.builder()
}else{
site.passPoints?.forEach { p ->
wayPoints.add(VehicleSite.builder()
.coordinateType(AutopilotCoordinateTypeEnum.WGS84.code)
.point(AutopilotPoint.builder().x(p.lon).y(p.lat).build())
.station(StationEnum.SITE.code)
.station(StationEnum.WAY.code)
.stationId(p.siteId.toLong())
.stationName(p.name)
.stationSeq(p.seq)
.tag(p.tag)
.build())
}
site.blackPoints?.forEach { b ->
blackPoints.add(VehicleSite.builder()
}
site.blackPoints?.forEach { b ->
blackPoints.add(VehicleSite.builder()
.coordinateType(AutopilotCoordinateTypeEnum.WGS84.code)
.point(AutopilotPoint.builder().x(b.lon).y(b.lat).build())
.station(StationEnum.SITE.code)
@@ -709,6 +711,16 @@ object LineManager : CallerBase<ILineCallback>() {
.stationSeq(b.seq)
.tag(b.tag)
.build())
}
wayPoints.add(VehicleSite.builder()
.coordinateType(AutopilotCoordinateTypeEnum.WGS84.code)
.point(AutopilotPoint.builder().x(site.lon).y(site.lat).build())
.station(StationEnum.SITE.code)
.stationId(site.siteId.toLong())
.stationName(site.name)
.stationSeq(site.seq)
.tag(site.tag)
.build())
}
}
val traj = Trajectory.builder()
@@ -722,7 +734,7 @@ object LineManager : CallerBase<ILineCallback>() {
.wayPoints(wayPoints)
.blackPoints(blackPoints)
.build()
val sessionId = unmannedStartAutoPilot(taskId, traj, parameters)
val sessionId = OchAutoPilotManager.unmannedStartAutoPilot(taskId, traj, parameters)
OchAutopilotAnalytics.triggerUpdateStartAutoPilotSessionId(sessionId, true)
d(
TAG,
@@ -785,18 +797,41 @@ object LineManager : CallerBase<ILineCallback>() {
return
}
_lineInfos?.let { i ->
//TODO 任务管理继续
// val sessionId = unmannedAutoPilotContinue(taskId, traj, parameters)
// OchAutopilotAnalytics.triggerUpdateStartAutoPilotSessionId(sessionId, true)
d(
startStation?.let { start->
val wayPoints = ArrayList<VehicleSite>()
val blackPoints = ArrayList<VehicleSite>()
val vehicleSite = VehicleSite.builder()
.coordinateType(AutopilotCoordinateTypeEnum.WGS84.code)
.point(AutopilotPoint.builder().x(start.lon).y(start.lat).build())
.station(StationEnum.SITE.code)
.stationId(start.siteId.toLong())
.stationName(start.name)
.stationSeq(start.seq)
.tag(start.tag)
.build()
wayPoints.add(vehicleSite)
val traj = Trajectory.builder()
.id(i.lineId)
.name(i.lineName)
.trajUrl(_contraiInfo!!.csvFileUrl)
.trajMd5(_contraiInfo!!.csvFileMd5)
.stopUrl(_contraiInfo!!.txtFileUrl)
.stopMd5(_contraiInfo!!.txtFileMd5)
.timestamp(_contraiInfo!!.contrailSaveTime)
.wayPoints(wayPoints)
.blackPoints(blackPoints)
.build()
val sessionId = OchAutoPilotManager.unmannedAutoPilotContinue(taskId, traj,vehicleSite, parameters)
OchAutopilotAnalytics.triggerUpdateStartAutoPilotSessionId(sessionId, true)
d(
TAG,
"无人化 行程日志-开启自动驾驶====" + GsonUtil.jsonFromObject(parameters)
+ " startLatLon=" + parameters.startName + "endLatLon=" + parameters.endName +
"isRestart = " + isFirstStartAutopilot
)
M_LISTENERS.forEach {
it.value.sendStartAutopilotSuccess()
)
M_LISTENERS.forEach {
it.value.sendStartAutopilotSuccess()
}
}
}
}

View File

@@ -247,6 +247,8 @@ object OrderModel {
if (CallerAutoPilotStatusListenerManager.getState() != IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING
) {
LineManager.unmannedStartAutopilot(taskId ?: 0L, true)
}else{
LineManager.unmanneAutopilotContinue(taskId ?: 0L, false)
}
}

View File

@@ -36,6 +36,7 @@ import com.zhjt.mogo.adas.data.AdasConstants
import com.zhjt.mogo.adas.data.bean.NodeStateInfo
import com.zhjt.mogo.adas.data.sweeper.task.cloud.s_r.SweeperTaskCloudSuspendResume.BigTaskActionResp
import com.zhjt.mogo.adas.unmanned.task.dto.cmd.Trajectory
import com.zhjt.mogo.adas.unmanned.task.dto.cmd.VehicleSite
import com.zhjt.service.chain.ChainLog
import com.zhjt.service_biz.BizConfig
import kotlinx.coroutines.launch
@@ -106,17 +107,20 @@ object CallerAutoPilotControlManager {
CallerAutoPilotStatusListenerManager.updateAutopilotControlParameters(controlParameters)
return sessionId
}
//TODO 任务管理继续
// fun unmannedAutoPilotContinue(trackId: Long, taskId: Long, stationId: Long, stationName: String, stationSeq: Int, lon: Double, lat: Double): Long {
// if (traj == null) {
// //LogUtils.eTag(TAG, "自动驾驶控制参数异常,请检查参数信息")
// return -1L
// }
// val sessionId = providerApi?.sendTaskManagerAutopilotContinue(trackId, taskId, stationId, stationName, stationSeq, lon, lat) ?: -1L
// // 更新记录在全局的控制参数
// CallerAutoPilotStatusListenerManager.updateAutopilotControlParameters(controlParameters)
// return sessionId
// }
/**
* 自驾成功后再次启动自驾时
*/
fun unmannedAutoPilotContinue(taskId: Long, traj: Trajectory?, vehicleSite : VehicleSite, controlParameters: AutopilotControlParameters): Long {
if (traj == null) {
//LogUtils.eTag(TAG, "自动驾驶控制参数异常,请检查参数信息")
return -1L
}
val sessionId = providerApi?.sendTaskManagerAutopilotContinue(traj.id, taskId, vehicleSite.stationId, vehicleSite.stationName, vehicleSite.stationSeq, vehicleSite.point.x, vehicleSite.point.y) ?: -1L
// 更新记录在全局的控制参数
CallerAutoPilotStatusListenerManager.updateAutopilotControlParameters(controlParameters)
return sessionId
}
/**
* 启自驾前,是否要拦截
* @param isShowTip true: 展示Toast+语音提示; false:不展示Toast+语音提示