[6.5.0][道路事件] 统一处理上车数据的坐标类型判断逻辑;添加道路施工和道路事故的单元测试
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user