[6.5.0][道路事件] 统一处理上车数据的坐标类型判断逻辑;添加道路施工和道路事故的单元测试

This commit is contained in:
renwj
2024-07-10 16:52:11 +08:00
parent 2f6d38211f
commit d79866b554
7 changed files with 148 additions and 33 deletions

View File

@@ -9,6 +9,7 @@ import androidx.test.platform.app.InstrumentationRegistry
import com.google.protobuf.ByteString
import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.data.multidisplay.TelematicConstant
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotIdentifyListenerManager
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationWGS84ListenerManager
import com.mogo.eagle.core.function.call.autopilot.CallerV2nNioEventListenerManager
import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager
@@ -20,12 +21,16 @@ import com.mogo.map.MapDataWrapper
import kotlinx.coroutines.delay
import kotlinx.coroutines.runBlocking
import mogo.telematics.pad.MessagePad
import mogo.telematics.pad.MessagePad.Location
import mogo.telematics.pad.MessagePad.TrackedObject
import mogo.telematics.pad.MessagePad.V2nCrossSpeed
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import java.util.HashMap
import java.util.Collections
import java.util.concurrent.TimeUnit
import kotlin.math.cos
import kotlin.math.sin
@RunWith(AndroidJUnit4::class)
@@ -43,6 +48,100 @@ class V2NTest {
launch = ActivityScenario.launch(MainLauncherActivity::class.java)
}
@Test
fun testRoadShiGong(): Unit = runBlocking {
val arguments = InstrumentationRegistry.getArguments()
val millis = arguments.getString("delay", "0").toLong()
if (millis > 0) {
delay(millis)
}
FunctionBuildConfig.isNewV2NData = true
FunctionBuildConfig.v2nMainSwitch = true
runCatching {
val map = HashMap<String, Boolean>().also {
it["f1"] = FunctionBuildConfig.v2nMainSwitch
it["f2"] = FunctionBuildConfig.isNewV2NData
}
CallerTelematicManager.sendMsgToAllClients(TelematicConstant.V2N_NEW_LINK_SWITCH, GsonUtils.toJson(map).toByteArray())
}
delay(2000)
val targetX = arguments.getString("lon", "0").toDouble()
val targetY = arguments.getString("lat", "0").toDouble()
val targetDistance = arguments.getString("distance", "0").toDouble()
val eventDistance = arguments.getString("event_distance", "50").toDouble()
val r = arguments.getString("r", "1").toDouble()
var car = CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84()
var distance = CoordinateUtils.calculateLineDistance(car.longitude, car.latitude, targetX, targetY)
Log.d(TAG, "target_distance: $targetDistance, current distance: $distance, event_distance: $eventDistance")
while (distance > targetDistance) {
delay(2000)
car = CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84()
distance = CoordinateUtils.calculateLineDistance(car.longitude, car.latitude, targetX, targetY)
Log.d(TAG, "target_distance: $targetDistance, current distance: $distance")
}
car = CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84()
val point = DrivingDirectionUtils.calculateNewPoint(car.longitude, car.latitude, car.heading , eventDistance)
val polygon = generateTriangle(point.first, point.second, car.heading, r * 1e-5)
val data = TrackedObject.getDefaultInstance().toBuilder().setType(501).setLongitude(point.first).setLatitude(point.second).setAltitude(0.0).setSystemTime(System.currentTimeMillis() * 1.0 / 1000).setSatelliteTime(1.0).setUuid(10).setCarID("1").setColor("#ffffff").setHeading(car.heading).setSpeed(0.0).setDrawLevel(1).setDriverTime(1.0).setCameraIp("172.18.7.40").setVideoUrl("").addAllImageUrl(Collections.singletonList("http://www.baidu.com")).addAllPolygon(polygon.map { Location.getDefaultInstance().toBuilder().setLongitude(it.first).setLatitude(it.second).setAltitude(0.0).setHeading(0.0).setStation(false).build() }).setDetectStartTime(System.currentTimeMillis()).setV2XUuid("xxxxx1").setStrUuid("xxxxx2").build()
val trafficData = Collections.singletonList(data)
CallerTelematicManager.sendMsgToAllClients(TelematicConstant.V2N_AI_ROAD_SHI_GONG, data.toByteArray())
CallerAutopilotIdentifyListenerManager.invokeAutopilotIdentifyDataUpdate(trafficData)
delay(TimeUnit.MINUTES.toMillis(10))
}
@Test
fun testRoadShiGu(): Unit = runBlocking {
val arguments = InstrumentationRegistry.getArguments()
val millis = arguments.getString("delay", "0").toLong()
if (millis > 0) {
delay(millis)
}
FunctionBuildConfig.isNewV2NData = true
FunctionBuildConfig.v2nMainSwitch = true
runCatching {
val map = HashMap<String, Boolean>().also {
it["f1"] = FunctionBuildConfig.v2nMainSwitch
it["f2"] = FunctionBuildConfig.isNewV2NData
}
CallerTelematicManager.sendMsgToAllClients(TelematicConstant.V2N_NEW_LINK_SWITCH, GsonUtils.toJson(map).toByteArray())
}
delay(2000)
val targetX = arguments.getString("lon", "0").toDouble()
val targetY = arguments.getString("lat", "0").toDouble()
val targetDistance = arguments.getString("distance", "0").toDouble()
val eventDistance = arguments.getString("event_distance", "0").toDouble()
val r = arguments.getString("r", "1").toDouble()
var car = CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84()
var distance = CoordinateUtils.calculateLineDistance(car.longitude, car.latitude, targetX, targetY)
Log.d(TAG, "target_distance: $targetDistance, current distance: $distance, event_distance: $eventDistance")
while (distance > targetDistance) {
delay(2000)
car = CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84()
distance = CoordinateUtils.calculateLineDistance(car.longitude, car.latitude, targetX, targetY)
Log.d(TAG, "target_distance: $targetDistance, current distance: $distance")
}
car = CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84()
val point = DrivingDirectionUtils.calculateNewPoint(car.longitude, car.latitude, car.heading , eventDistance)
val polygon = generateTriangle(point.first, point.second, car.heading, r * 1e-5)
val data = TrackedObject.getDefaultInstance().toBuilder().setType(13).setLongitude(point.first).setLatitude(point.second).setAltitude(0.0).setSystemTime(System.currentTimeMillis() * 1.0 / 1000).setSatelliteTime(1.0).setUuid(10).setCarID("1").setColor("#ffffff").setHeading(car.heading).setSpeed(0.0).setDrawLevel(1).setDriverTime(1.0).setCameraIp("172.18.7.40").setVideoUrl("").addAllImageUrl(Collections.singletonList("http://www.baidu.com")).addAllPolygon(polygon.map { Location.getDefaultInstance().toBuilder().setLongitude(it.first).setLatitude(it.second).setAltitude(0.0).setHeading(0.0).setStation(false).build() }).setDetectStartTime(System.currentTimeMillis()).setV2XUuid("xxxxx1").setStrUuid("xxxxx2").build()
val trafficData = Collections.singletonList(data)
CallerTelematicManager.sendMsgToAllClients(TelematicConstant.V2N_AI_ROAD_SHI_GU, data.toByteArray())
CallerAutopilotIdentifyListenerManager.invokeAutopilotIdentifyDataUpdate(trafficData)
delay(TimeUnit.MINUTES.toMillis(10))
}
private fun generateTriangle(x: Double, y: Double, angle: Double, r: Double): List<Pair<Double, Double>> {
val angles = arrayOf(0, 120, 240)
val coordinates = ArrayList<Pair<Double, Double>>()
for(i in 0 until 3) {
val radian = Math.toRadians(angles[i] + angle)
val x1 = x + (r * cos(radian))
val y1 = y + (r * sin(radian))
coordinates += Pair(x1, y1)
}
coordinates.add(coordinates[0])
return coordinates
}
@Test
fun testGreenWave(): Unit = runBlocking {
@@ -164,8 +263,6 @@ class V2NTest {
Log.d(TAG, "location:[x:${targetX}, y:${targetY}, new_location:[x:${newPoint.first}, y:${newPoint.second}]")
FunctionBuildConfig.isNewV2NData = true
FunctionBuildConfig.v2nMainSwitch = true
FunctionBuildConfig.isNewV2NData = true
FunctionBuildConfig.v2nMainSwitch = true
runCatching {
val map = HashMap<String, Boolean>().also {
it["f1"] = FunctionBuildConfig.v2nMainSwitch