Merge branch 'dev_robotaxi-d_230912_6.1.0' into dev_minibus-d_230926_6.1.0

# Conflicts:
#	OCH/mogo-och-common-module/src/debug/java/com/mogo/och/common/module/debug/DebugDataDispatch.kt
#	OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/distancemamager/TrajectoryAndDistanceManager.kt
This commit is contained in:
yangyakun
2023-09-26 19:35:13 +08:00
18 changed files with 918 additions and 138 deletions

View File

@@ -131,89 +131,91 @@ class AiRoadMarker {
l2: CenterLine?,
heading: Double
) {
if (countDown.get() != 2) {
return
}
if (l1 == null || l2 == null) {
V2XBizTrace.onAck("$TAG --- marker --- 3 --- line null return ----", "")
return
}
if (l1.points.isEmpty() || l2.points.isEmpty()) {
V2XBizTrace.onAck("$TAG --- marker --- 3 --- line points null return ----", "")
return
}
V2XBizTrace.onAck("$TAG --- marker --- 4 --- l2:", l2)
val points = LinkedList<MogoLatLng>()
if (l2.points.isNotEmpty()) {
points.addAll(l2.points.reversed().map {
MogoLatLng(it.latitude, it.longitude)
})
}
val centerX = marker.poi_lon
val centerY = marker.poi_lat
V2XBizTrace.onAck("$TAG --- marker --- 5 --- marker:", marker)
val farthestPoint = marker.polygon?.let {
var find: Pair<Double, Double> = Pair(centerX, centerY)
var min = Long.MAX_VALUE
for (p in it) {
val angle = DrivingDirectionUtils.getDegreeOfCar2Poi2(
centerX,
centerY,
p.first,
p.second,
heading
)
if (angle < min) {
min = angle
find = p
v2nDrawHandler.post {
if (countDown.get() != 2) {
return@post
}
if (l1 == null || l2 == null) {
V2XBizTrace.onAck("$TAG --- marker --- 3 --- line null return ----", "")
return@post
}
if (l1.points.isEmpty() || l2.points.isEmpty()) {
V2XBizTrace.onAck("$TAG --- marker --- 3 --- line points null return ----", "")
return@post
}
V2XBizTrace.onAck("$TAG --- marker --- 4 --- l2:", l2)
val points = LinkedList<MogoLatLng>()
if (l2.points.isNotEmpty()) {
points.addAll(l2.points.reversed().map {
MogoLatLng(it.latitude, it.longitude)
})
}
val centerX = marker.poi_lon
val centerY = marker.poi_lat
V2XBizTrace.onAck("$TAG --- marker --- 5 --- marker:", marker)
val farthestPoint = marker.polygon?.let {
var find: Pair<Double, Double> = Pair(centerX, centerY)
var min = Long.MAX_VALUE
for (p in it) {
val angle = DrivingDirectionUtils.getDegreeOfCar2Poi2(
centerX,
centerY,
p.first,
p.second,
heading
)
if (angle < min) {
min = angle
find = p
}
}
MogoLatLng(find.second, find.first)
} ?: MogoLatLng(centerY, centerX)
marker.farthestPoint = Pair(farthestPoint.lon, farthestPoint.lat)
V2XBizTrace.onAck("$TAG --- marker --- 6 --- marker:", marker)
if (l1.points.isNotEmpty()) {
for (l in l1.points) {
if (DrivingDirectionUtils.getDegreeOfCar2Poi2(
farthestPoint.lon,
farthestPoint.lat,
l.longitude,
l.latitude,
(heading + 180)
) < 90L
) {
points.add(l.let { MogoLatLng(it.latitude, it.longitude) })
}
}
}
MogoLatLng(find.second, find.first)
} ?: MogoLatLng(centerY, centerX)
marker.farthestPoint = Pair(farthestPoint.lon, farthestPoint.lat)
V2XBizTrace.onAck("$TAG --- marker --- 6 --- marker:", marker)
if (l1.points.isNotEmpty()) {
for (l in l1.points) {
if (DrivingDirectionUtils.getDegreeOfCar2Poi2(
farthestPoint.lon,
farthestPoint.lat,
l.longitude,
l.latitude,
(heading + 180)
) < 90L
) {
points.add(l.let { MogoLatLng(it.latitude, it.longitude) })
}
if (points.size <= 1) {
return@post
}
val evaluator = ArgbEvaluator()
val interceptor = DecelerateInterpolator(1.5f)
val total = points.size
val colors = ArrayList<Int>()
(0..total).forEach { i ->
colors += evaluator.evaluate(
interceptor.getInterpolation(i * 1f / total),
START_COLOR,
END_COLOR
) as Int
}
builder.points(points)
builder.colors(colors)
builder.setVisible(true)
V2XBizTrace.onAck("$TAG --- marker --- 7 --- points:", "${points.size}")
val line = overlayManager?.showOrUpdateLine(builder.build())
if (line != null) {
this.line.set(line)
wrapper.addLine(line)
}
wrapper.onRemoved = { id ->
aiMakers.remove(id)
}
MarkerRemoveManager.addMarker(wrapper)
countDown.set(0)
}
if (points.size <= 1) {
return
}
val evaluator = ArgbEvaluator()
val interceptor = DecelerateInterpolator(1.5f)
val total = points.size
val colors = ArrayList<Int>()
(0..total).forEach { i ->
colors += evaluator.evaluate(
interceptor.getInterpolation(i * 1f / total),
START_COLOR,
END_COLOR
) as Int
}
builder.points(points)
builder.colors(colors)
builder.setVisible(true)
V2XBizTrace.onAck("$TAG --- marker --- 7 --- points:", "${points.size}")
val line = overlayManager?.showOrUpdateLine(builder.build())
if (line != null) {
this.line.set(line)
wrapper.addLine(line)
}
wrapper.onRemoved = { id ->
aiMakers.remove(id)
}
MarkerRemoveManager.addMarker(wrapper)
countDown.set(0)
}
private fun removeLine() {

View File

@@ -21,6 +21,7 @@ import androidx.core.view.MenuCompat
import androidx.core.view.isVisible
import androidx.lifecycle.lifecycleScope
import chassis.Chassis
import com.mogo.cloud.network.cronet.QuicConfig
import com.mogo.cloud.passport.MoGoAiCloudClient
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
import com.mogo.commons.constants.SharedPrefsConstants
@@ -762,6 +763,9 @@ internal class DebugSettingView @JvmOverloads constructor(
tbObuWarningFusionUnion.setOnCheckedChangeListener { _, isChecked ->
FunctionBuildConfig.isObuWarningFusionUnion = isChecked
}
tbCronet.setOnCheckedChangeListener { _, isChecked ->
QuicConfig.setEnable(context, isChecked)
}
//重启工控机所有节点
btnIpcReboot.onClick {
@@ -813,6 +817,7 @@ internal class DebugSettingView @JvmOverloads constructor(
// update tracker provider view
trackerIPCProvider.visibility = View.VISIBLE
}
R.id.trackerProviderObu -> {
FunctionBuildConfig.debugTrackerProvider = 1
// update tracker provider view
@@ -859,16 +864,16 @@ internal class DebugSettingView @JvmOverloads constructor(
ToastUtils.showShort("功能开发中")
}
if(FunctionBuildConfig.isDrawPointCloudData){
if (FunctionBuildConfig.isDrawPointCloudData) {
//如果点云效果是打开的,则自车光圈也跟随打开
tbCarAperture.isChecked = true
}else{
} else {
tbCarAperture.isChecked = FunctionBuildConfig.isDisplayAnimEnable
}
tbCarAperture.setOnCheckedChangeListener { compoundButton, isChecked ->
CallerMapUIServiceManager.getMapUIController()?.setDisplayAnimEnable(isChecked)
CallerSopSettingManager.invokeCarApertureListener(isChecked)
if(!compoundButton.isPressed){
if (!compoundButton.isPressed) {
return@setOnCheckedChangeListener
}
FunctionBuildConfig.isDisplayAnimEnable = isChecked
@@ -882,9 +887,9 @@ internal class DebugSettingView @JvmOverloads constructor(
return@setOnCheckedChangeListener
}
//打开点云效果时,如果自车光圈是关闭状态,则自动打开自车光圈(点云是跟随光圈的 默认没有光圈就不显示点云的)
if(isChecked && !FunctionBuildConfig.isDisplayAnimEnable){
if (isChecked && !FunctionBuildConfig.isDisplayAnimEnable) {
tbCarAperture.isChecked = true
}else{
} else {
tbCarAperture.isChecked = FunctionBuildConfig.isDisplayAnimEnable
}
CallerAutoPilotControlManager.setIsDrawPointCloud(isChecked)
@@ -932,6 +937,7 @@ internal class DebugSettingView @JvmOverloads constructor(
btnConnectServerIp.visibility = View.GONE
etConnectServerIp.visibility = View.GONE
}
else -> {
brakeThresholdDivider.visibility = View.VISIBLE
btnConnectServerIp.visibility = View.VISIBLE
@@ -1112,32 +1118,41 @@ internal class DebugSettingView @JvmOverloads constructor(
R.id.group_hy -> {
return@setOnMenuItemClickListener false
}
R.id.group_bj -> {
return@setOnMenuItemClickListener false
}
R.id.env_reset ->
CallerDevaToolsManager.envConfigReset()
R.id.hy_product ->
CallerDevaToolsManager.envConfigChange(
"0734",
DebugConfig.NET_MODE_RELEASE
)
R.id.hy_qa ->
CallerDevaToolsManager.envConfigChange("0734", DebugConfig.NET_MODE_QA)
R.id.hy_demo ->
CallerDevaToolsManager.envConfigChange(
"0734",
DebugConfig.NET_MODE_DEMO
)
R.id.bj_product ->
CallerDevaToolsManager.envConfigChange(
"010",
DebugConfig.NET_MODE_RELEASE
)
R.id.bj_qa ->
CallerDevaToolsManager.envConfigChange("010", DebugConfig.NET_MODE_QA)
R.id.bj_demo ->
CallerDevaToolsManager.envConfigChange("010", DebugConfig.NET_MODE_DEMO)
else ->
throw AssertionError("invalid item: $item")
}
@@ -1594,11 +1609,13 @@ internal class DebugSettingView @JvmOverloads constructor(
AppConfigInfo.isDriver = true
AppConfigInfo.isConnectedNetty = CallerTelematicManager.getServerStarted()
}
AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode) -> {
AppConfigInfo.isDriver = false
AppConfigInfo.isConnectedNetty = CallerTelematicManager.getClientConnStatus()
AppConfigInfo.serverSn = CallerTelematicManager.getServerToken()
}
else -> {
}
}
@@ -1654,12 +1671,15 @@ internal class DebugSettingView @JvmOverloads constructor(
2 -> {
"测试环境"
}
3 -> {
"生产环境"
}
4 -> {
"演示环境"
}
else -> {
"未知环境"
}
@@ -1710,6 +1730,7 @@ internal class DebugSettingView @JvmOverloads constructor(
AppConfigInfo.isDriver -> {
"司机端Server启动"
}
else -> {
"乘客端${"(司机屏SN是:${AppConfigInfo.serverSn})"}连接"
}
@@ -1729,6 +1750,7 @@ internal class DebugSettingView @JvmOverloads constructor(
AppConfigInfo.isDriver -> {
"司机屏发送数据"
}
else -> "乘客屏接收数据"
}
}的最新时间为:<font color='red'>${simpleDateFormat.format(AppConfigInfo.teleTimeStamp)}"
@@ -1904,6 +1926,7 @@ internal class DebugSettingView @JvmOverloads constructor(
}
tbIsDemoMode.setPadding(left, top, right, bottom)
}
BIZ_RAIN_MODE -> {
tbIsRainMode.isClickable = !lock
val (left, top, right, bottom) = tbIsRainMode.currentPadding()
@@ -1916,6 +1939,7 @@ internal class DebugSettingView @JvmOverloads constructor(
}
tbIsRainMode.setPadding(left, top, right, bottom)
}
BIZ_WARNING_UPLOAD -> {
tbReportWarning.isClickable = !lock
val (left, top, right, bottom) = tbReportWarning.currentPadding()
@@ -1927,6 +1951,7 @@ internal class DebugSettingView @JvmOverloads constructor(
}
tbReportWarning.setPadding(left, top, right, bottom)
}
BIZ_BAG_RECORD -> {
val (left, top, right, bottom) = btnRecordBag.currentPadding()
if (lock) {
@@ -1940,6 +1965,7 @@ internal class DebugSettingView @JvmOverloads constructor(
}
btnRecordBag.setPadding(left, top, right, bottom)
}
BIZ_FULL_LOG -> {
val (left, top, right, bottom) = tbLogCatch.currentPadding()
if (lock) {

View File

@@ -349,8 +349,6 @@ open class MainActivity : MvpActivity<MainView?, MainPresenter?>(), MainView,
CallerAutoPilotStatusListenerManager.removeListener(TAG)
CallerRequestActivityHandleManager.removeListener(TAG)
mogoMapListenerHandler.unregisterHostMapListener(TAG)
val mapUIController = getMapUIController()
mapUIController?.destroy()
MogoStatusManager.getInstance().setMainPageIsBackgroundStatus(TAG, false)
d(SceneConstant.M_HMI + TAG, "destroy.")
ContextHolderUtil.releaseContext()

View File

@@ -290,6 +290,18 @@
android:textOn="关闭obu预警融合"
android:textSize="@dimen/dp_24" />
<ToggleButton
android:id="@+id/tbCronet"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/dp_10"
android:padding="@dimen/dp_20"
android:background="@drawable/radio_button_normal_background_right"
android:textColor="#000"
android:textOff="开启QUIC协议(网络信号差时)"
android:textOn="关闭QUIC协议"
android:textSize="@dimen/dp_24" />
<!-- APP升级数据 start -->
<ToggleButton
android:id="@+id/tbAppUpgrade"

View File

@@ -35,8 +35,8 @@ import com.mogo.eagle.core.function.call.autopilot.CallerPlanningRottingListener
import com.mogo.eagle.core.function.call.map.CallerMapRomaListener
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager
import com.mogo.eagle.core.function.call.map.CallerVisualAngleManager.updateLongSightLevel
import com.mogo.eagle.core.function.utils.MapBizTrace
import com.mogo.eagle.core.function.utils.MapBizTrace.Companion.getCurrentCNode
import com.mogo.eagle.core.function.utils.MapRomaTrace
import com.mogo.eagle.core.function.utils.MapRomaTrace.Companion.getCurrentCNode
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.map.uicontroller.VisualAngleMode
import com.zhidaoauto.map.data.point.LonLatPoint
@@ -74,7 +74,7 @@ class AiCloudIdentifyDataManager : IMoGoPlanningRottingListener,
private val handler = Handler(Looper.getMainLooper()) {
if (it.what == H_ERROR_CLOUD) {
if (!aiCloudDataChange.get()) {
MapBizTrace.log(
MapRomaTrace.log(
CHAIN_CODE_ROMA_MAP_START, CHAIN_CODE_ROMA_CLOUD_ERROR, TAG,
mutableMapOf(
"msg" to "云端 $H_DELAY_TIME 秒内无感知数据下发",
@@ -83,7 +83,7 @@ class AiCloudIdentifyDataManager : IMoGoPlanningRottingListener,
)
)
} else {
MapBizTrace.log(
MapRomaTrace.log(
CHAIN_CODE_ROMA_MAP_START, CHAIN_CODE_ROMA_CLOUD_PUSH, TAG,
mutableMapOf(
"msg" to "延迟 $H_DELAY_TIME 秒内获取云端下发感知数据大小",
@@ -93,7 +93,7 @@ class AiCloudIdentifyDataManager : IMoGoPlanningRottingListener,
}
}
if (it.what == H_ERROR_MAP) {
MapBizTrace.log(
MapRomaTrace.log(
CHAIN_CODE_ROMA_MAP_START, CHAIN_CODE_ROMA_MAP_ERROR, TAG,
mutableMapOf("msg" to "地图漫游模式启动失败,原因:${it.obj}")
)
@@ -148,7 +148,7 @@ class AiCloudIdentifyDataManager : IMoGoPlanningRottingListener,
// 乘客司机屏屏各自单独控制漫游
if (romaStatus) {
// 开启roma当前非漫游开启
MapBizTrace.log(
MapRomaTrace.log(
"",
CHAIN_CODE_ROMA_CLICK,
TAG,
@@ -157,7 +157,7 @@ class AiCloudIdentifyDataManager : IMoGoPlanningRottingListener,
openRoma()
} else {
// 跟上次关联需要确认parent进度
MapBizTrace.log(getCurrentCNode(), CHAIN_CODE_ROMA_CLOSE_CLICK, TAG, "")
MapRomaTrace.log(getCurrentCNode(), CHAIN_CODE_ROMA_CLOSE_CLICK, TAG, "")
handler.removeMessages(H_ERROR_CLOUD)
closeRoma()
}
@@ -186,7 +186,7 @@ class AiCloudIdentifyDataManager : IMoGoPlanningRottingListener,
fun requestRangeOfIdentify(dataReceive: Boolean) {
val gnss = CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84().gnssInfo
// false改变父节点信息
MapBizTrace.log(
MapRomaTrace.log(
if (dataReceive) CHAIN_CODE_ROMA_CLICK else "", CHAIN_CODE_ROMA_REQUEST, TAG,
mutableMapOf(
"dataReceive" to dataReceive,
@@ -203,7 +203,7 @@ class AiCloudIdentifyDataManager : IMoGoPlanningRottingListener,
gnss.latitude,
{
// false改变父节点信息
MapBizTrace.log(
MapRomaTrace.log(
if (dataReceive) CHAIN_CODE_ROMA_REQUEST else "",
CHAIN_CODE_ROMA_REQUEST_OK,
TAG,
@@ -218,13 +218,13 @@ class AiCloudIdentifyDataManager : IMoGoPlanningRottingListener,
CallerMapUIServiceManager.getMapUIController()?.setRomaMode(FunctionBuildConfig.romaModeStyle)
}else{
// 保底清除策略
MapBizTrace.log("",CHAIN_CODE_ROMA_REQUEST_DELAY,TAG,mutableMapOf("delay" to true),true)
MapRomaTrace.log("",CHAIN_CODE_ROMA_REQUEST_DELAY,TAG,mutableMapOf("delay" to true),true)
MapIdentifySubscriber.instance.clearAiCloudRoma()
}
},
{ errorMsg ->
// false改变父节点信息
MapBizTrace.log(
MapRomaTrace.log(
if (dataReceive) CHAIN_CODE_ROMA_REQUEST else "",
CHAIN_CODE_ROMA_REQUEST_ERROR,
TAG,
@@ -248,7 +248,7 @@ class AiCloudIdentifyDataManager : IMoGoPlanningRottingListener,
super.mapRomaStatus(status, msg)
when (status) {
0 -> {
MapBizTrace.log(
MapRomaTrace.log(
CHAIN_CODE_ROMA_REQUEST_OK,
CHAIN_CODE_ROMA_MAP_READY_START,
TAG,
@@ -256,7 +256,7 @@ class AiCloudIdentifyDataManager : IMoGoPlanningRottingListener,
)
}
4 -> {
MapBizTrace.log(
MapRomaTrace.log(
CHAIN_CODE_ROMA_MAP_READY_START,
CHAIN_CODE_ROMA_MAP_START,
TAG,
@@ -280,14 +280,14 @@ class AiCloudIdentifyDataManager : IMoGoPlanningRottingListener,
closeRoma(false)
}
2 -> { // 地图自动漫游结束重置状态调用close通知服务端
MapBizTrace.log(
MapRomaTrace.log(
CHAIN_CODE_ROMA_MAP_START, CHAIN_CODE_ROMA_MAP_END, TAG,
mutableMapOf("romaEnd" to "地图结束回调,状态:$status"), true
)
reset()
}
3 -> { // 业务释放地图视角锁定,回调切换视角结束漫游
MapBizTrace.log(
MapRomaTrace.log(
CHAIN_CODE_ROMA_CLOSE_CLICK,
CHAIN_CODE_ROMA_MAP_CHANGE_END,
TAG, mutableMapOf("romaEnd" to "地图结束回调,状态:$status"), true
@@ -330,7 +330,7 @@ class AiCloudIdentifyDataManager : IMoGoPlanningRottingListener,
}
private fun updateRomaStyle(auto: Boolean, routeList: ArrayList<LonLatPoint>? = null) {
MapBizTrace.log(
MapRomaTrace.log(
"",
CHAIN_CODE_ROMA_ROUTE_MODE,
TAG,

View File

@@ -8,7 +8,7 @@ import com.zhjt.service.chain.ChainLog
import com.zhjt.service.chain.ChildNodeAlias
import com.zhjt.service.chain.ParentNodeAlias
class MapBizTrace {
class MapRomaTrace {
companion object {