[6.7.0]
[fea] [taxi无人化 到站逻辑简化]
This commit is contained in:
@@ -45,6 +45,7 @@ import com.mogo.och.common.module.manager.autopilot.autopilot.IOchAutopilotStatu
|
|||||||
import com.mogo.och.common.module.manager.autopilot.autopilot.OchAutoPilotManager
|
import com.mogo.och.common.module.manager.autopilot.autopilot.OchAutoPilotManager
|
||||||
import com.mogo.och.common.module.manager.autopilot.autopilot.OchAutoPilotStatusListenerManager
|
import com.mogo.och.common.module.manager.autopilot.autopilot.OchAutoPilotStatusListenerManager
|
||||||
import com.mogo.och.common.module.manager.autopilot.autopilot.OchAutopilotAnalytics
|
import com.mogo.och.common.module.manager.autopilot.autopilot.OchAutopilotAnalytics
|
||||||
|
import com.mogo.och.common.module.manager.autopilot.line.ILineCallback
|
||||||
import com.mogo.och.common.module.manager.autopilot.line.LineManager
|
import com.mogo.och.common.module.manager.autopilot.line.LineManager
|
||||||
import com.mogo.och.common.module.manager.autopilot.location.OchLocationManager
|
import com.mogo.och.common.module.manager.autopilot.location.OchLocationManager
|
||||||
import com.mogo.och.common.module.manager.distance.IDistanceListener
|
import com.mogo.och.common.module.manager.distance.IDistanceListener
|
||||||
@@ -214,6 +215,7 @@ object TaxiTaskModel {
|
|||||||
OchAutoPilotStatusListenerManager.addListener(TAG, mMogoAutopilotStatusListener)
|
OchAutoPilotStatusListenerManager.addListener(TAG, mMogoAutopilotStatusListener)
|
||||||
//定位监听, 传false是高德坐标系 10 -> 100ms一次
|
//定位监听, 传false是高德坐标系 10 -> 100ms一次
|
||||||
OchLocationManager.addGCJ02Listener(TAG, 5, mMapLocationListener)
|
OchLocationManager.addGCJ02Listener(TAG, 5, mMapLocationListener)
|
||||||
|
LineManager.addListener(TAG,iLineCallback)
|
||||||
//2021.11.1 自动驾驶路线规划接口
|
//2021.11.1 自动驾驶路线规划接口
|
||||||
CallerPlanningRottingListenerManager.addListener(TAG, mMogoAutopilotPlanningListener)
|
CallerPlanningRottingListenerManager.addListener(TAG, mMogoAutopilotPlanningListener)
|
||||||
//开启自驾后 异常信息返回
|
//开启自驾后 异常信息返回
|
||||||
@@ -235,6 +237,7 @@ object TaxiTaskModel {
|
|||||||
|
|
||||||
// 注销地图监听
|
// 注销地图监听
|
||||||
OchLocationManager.removeGCJ02Listener(TAG)
|
OchLocationManager.removeGCJ02Listener(TAG)
|
||||||
|
LineManager.removeListener(TAG)
|
||||||
OCHSocketMessageManager.releaseSocketMessageListener(OCHSocketMessageManager.msgMonitorType)
|
OCHSocketMessageManager.releaseSocketMessageListener(OCHSocketMessageManager.msgMonitorType)
|
||||||
OchAutoPilotStatusListenerManager.removeListener(mMogoAutopilotStatusListener)
|
OchAutoPilotStatusListenerManager.removeListener(mMogoAutopilotStatusListener)
|
||||||
CallerPlanningRottingListenerManager.removeListener(mMogoAutopilotPlanningListener)
|
CallerPlanningRottingListenerManager.removeListener(mMogoAutopilotPlanningListener)
|
||||||
@@ -276,14 +279,6 @@ object TaxiTaskModel {
|
|||||||
private val mMogoAutopilotStatusListener: IOchAutopilotStatusListener =
|
private val mMogoAutopilotStatusListener: IOchAutopilotStatusListener =
|
||||||
object : IOchAutopilotStatusListener {
|
object : IOchAutopilotStatusListener {
|
||||||
override fun onAutopilotIpcConnectStatusChanged(status: AdasConstants.IpcConnectionStatus, reason: String?) {
|
override fun onAutopilotIpcConnectStatusChanged(status: AdasConstants.IpcConnectionStatus, reason: String?) {
|
||||||
// DebugView.printInfoMsg(
|
|
||||||
// "[域控连接状态变化] status=$status, reason=${
|
|
||||||
// if (TextUtils.isEmpty(
|
|
||||||
// reason
|
|
||||||
// )
|
|
||||||
// ) "" else reason
|
|
||||||
// }"
|
|
||||||
// )
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onAutopilotGuardian(guardianInfo: MogoReportMessage?, lineId: Long) {
|
override fun onAutopilotGuardian(guardianInfo: MogoReportMessage?, lineId: Long) {
|
||||||
@@ -390,10 +385,10 @@ object TaxiTaskModel {
|
|||||||
).toDouble()
|
).toDouble()
|
||||||
if (distance <= TaxiUnmannedConst.ARRIVE_AT_START_STATION_DISTANCE){// 两坐标小于15米
|
if (distance <= TaxiUnmannedConst.ARRIVE_AT_START_STATION_DISTANCE){// 两坐标小于15米
|
||||||
DebugView.printInfoMsg("[MAP到站通知] 到站坐标和任务终点15米内, 请求到站")
|
DebugView.printInfoMsg("[MAP到站通知] 到站坐标和任务终点15米内, 请求到站")
|
||||||
autopilotArriveAtStation()
|
|
||||||
}else{
|
}else{
|
||||||
DebugView.printInfoMsg("[MAP到站通知] 到站坐标和任务终点不一致, 不请求到站")
|
DebugView.printInfoMsg("[MAP到站通知] 到站坐标和任务终点不一致, 不请求到站")
|
||||||
}
|
}
|
||||||
|
autopilotArriveAtStation()
|
||||||
}else{
|
}else{
|
||||||
DebugView.printInfoMsg("[MAP到站通知] endSiteLat = $endSiteLat, endSiteLon = $endSiteLon, " +
|
DebugView.printInfoMsg("[MAP到站通知] endSiteLat = $endSiteLat, endSiteLon = $endSiteLon, " +
|
||||||
"mapEndSiteLat = $mapEndSiteLatWgs, mapEndSiteLon = $mapEndSiteLonWgs")
|
"mapEndSiteLat = $mapEndSiteLatWgs, mapEndSiteLon = $mapEndSiteLonWgs")
|
||||||
@@ -410,10 +405,17 @@ object TaxiTaskModel {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun canStartAutopilot(canStart: Boolean) {
|
}
|
||||||
super.canStartAutopilot(canStart)
|
private val iLineCallback: ILineCallback =
|
||||||
|
object : ILineCallback {
|
||||||
|
override fun arrivedStationSuccessBySearch() {
|
||||||
|
super.arrivedStationSuccessBySearch()
|
||||||
|
if (checkCurrentTaskCondition()
|
||||||
|
&& QueryCurrentTaskRespBean.isTaskStartTaskType(mCurrentTaskWithOrder)
|
||||||
|
) {
|
||||||
|
judgeTaskEndSiteStation()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 自车定位
|
// 自车定位
|
||||||
@@ -422,18 +424,12 @@ object TaxiTaskModel {
|
|||||||
override fun onChassisLocationGCJ02(mogoLocation: MogoLocation?) {
|
override fun onChassisLocationGCJ02(mogoLocation: MogoLocation?) {
|
||||||
//位置变化时,通过围栏判断是否到达x点
|
//位置变化时,通过围栏判断是否到达x点
|
||||||
if (null == mogoLocation) return
|
if (null == mogoLocation) return
|
||||||
|
if (mDriveToNearestStationTask != null) {
|
||||||
OCHThreadPoolManager.getsInstance().locationExecute {
|
OCHThreadPoolManager.getsInstance().locationExecute {
|
||||||
if (mDriveToNearestStationTask != null) {
|
if (mDriveToNearestStationTask != null) {
|
||||||
judgeDriveToNearestStationTaskStation(mDriveToNearestStationTask, mogoLocation)
|
judgeDriveToNearestStationTaskStation(mDriveToNearestStationTask, mogoLocation)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (checkCurrentTaskCondition()
|
|
||||||
&& QueryCurrentTaskRespBean.isTaskStartTaskType(mCurrentTaskWithOrder)
|
|
||||||
) {
|
|
||||||
judgeTaskEndSiteStation(mogoLocation)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1310,65 +1306,20 @@ object TaxiTaskModel {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun judgeTaskEndSiteStation(currentLocation: MogoLocation) {
|
private fun judgeTaskEndSiteStation() {
|
||||||
if (!checkCurrentTaskCondition() || !QueryCurrentTaskRespBean.isTaskStartTaskType(mCurrentTaskWithOrder)) {
|
if (!checkCurrentTaskCondition() || !QueryCurrentTaskRespBean.isTaskStartTaskType(mCurrentTaskWithOrder)) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
val endSite = mCurrentTaskWithOrder!!.endSite ?: return
|
val endSite = mCurrentTaskWithOrder!!.endSite ?: return
|
||||||
|
|
||||||
val endLon = endSite.gcjLon
|
if (!checkCurrentTaskCondition()
|
||||||
val endLat = endSite.gcjLat
|
|| !QueryCurrentTaskRespBean.isTaskStartTaskType(mCurrentTaskWithOrder)
|
||||||
val distance = CoordinateUtils.calculateLineDistance(
|
) {
|
||||||
endLon, endLat,
|
i(TAG, "task null or TaskStatus = ${getCurTaskStatus()}")
|
||||||
currentLocation.longitude, currentLocation.latitude
|
return
|
||||||
).toDouble()
|
|
||||||
i(TAG, "judgeEndStation() distance = $distance")
|
|
||||||
if (distance <= TaxiUnmannedConst.ARRIVE_AT_START_STATION_DISTANCE) { //1、当前位置和站点围栏15m内
|
|
||||||
|
|
||||||
//2、开始计算当前位置和站点的向量角度 < 90度 未经过 >90度 经过
|
|
||||||
val stationAngle = DrivingDirectionUtils.getDegreeOfCar2Poi(
|
|
||||||
currentLocation.longitude,
|
|
||||||
currentLocation.latitude,
|
|
||||||
endLon,
|
|
||||||
endLat, currentLocation.heading.toInt()
|
|
||||||
).toDouble()
|
|
||||||
i(
|
|
||||||
TAG,
|
|
||||||
"judgeEndStation() stationAngle = $stationAngle"
|
|
||||||
)
|
|
||||||
|
|
||||||
if (!checkCurrentTaskCondition()
|
|
||||||
|| !QueryCurrentTaskRespBean.isTaskStartTaskType(mCurrentTaskWithOrder)
|
|
||||||
) {
|
|
||||||
i(TAG, "task null or TaskStatus = ${getCurTaskStatus()}")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
//3、刚过站且过站距离在15m内, 提交到站
|
|
||||||
if (stationAngle > 90) {
|
|
||||||
i(TAG, "judgeEndStation() = 刚过站且在15m内")
|
|
||||||
DebugView.printInfoMsg(
|
|
||||||
"[自车定位围栏] 触发围栏,任务类型:${
|
|
||||||
TaskTypeEnum.valueOf(
|
|
||||||
mCurrentTaskWithOrder?.taskType ?: 0
|
|
||||||
)?.name
|
|
||||||
},围栏范围:${TaxiUnmannedConst.ARRIVE_AT_START_STATION_DISTANCE}米 刚过站且在15m内"
|
|
||||||
)
|
|
||||||
submitArriveSite(endSite.siteId, true)
|
|
||||||
} else {
|
|
||||||
// 4、 没有过站距离小于15m 速度小于0.3(根据M1来的模数 可能要调)
|
|
||||||
if (currentLocation.gnssSpeed < 0.3) {
|
|
||||||
i(TAG, "judgeEndStation() = 没有过站、速度基本为零且在15m内")
|
|
||||||
DebugView.printInfoMsg(
|
|
||||||
"[自车定位围栏] 触发围栏,任务类型:${
|
|
||||||
TaskTypeEnum.valueOf(
|
|
||||||
mCurrentTaskWithOrder?.taskType ?: 0
|
|
||||||
)?.name
|
|
||||||
},围栏范围:${TaxiUnmannedConst.ARRIVE_AT_START_STATION_DISTANCE}米 没有过站、速度基本为零且在15m内"
|
|
||||||
)
|
|
||||||
submitArriveSite(endSite.siteId, true)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
submitArriveSite(endSite.siteId, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user