Commit 9d19c112 authored by p x's avatar p x
Browse files

加入高精地图API

parent 666b069e
package com.sd.cavphmi.bean
/**
* 感知目标物
* 感知目标物实体
****/
data class PerTarget(
val collectTime: Int,
......
package com.sd.cavphmi.highmap
/**
* Alert path
* 传入点的坐标数组绘制路面状况颜色2=(路径里的红色、施工区域红色、人行道红色) 3=绿色(绿波) 4=感知车前的红色)
*/
data class AlertPath(
val alertLins: List<AlertLin>,
val alertType: Int
)
class AlertLin {
// val evel: Int,
var lat: Double=0.0
var lon: Double=0.0
}
\ No newline at end of file
package com.sd.cavphmi.highmap
/**
* 开启(关闭)绘制主车底盘下的光圈
*/
data class BottomCircle(
val ison: Boolean
)
\ No newline at end of file
package com.sd.cavphmi.highmap
/**
*全局路径绘制(蓝色)
*/
data class CarNavPath(
val lines: List<AllLine>
)
data class AllLine(
// val evel: Int,
val lat: Double,
val lon: Double
)
\ No newline at end of file
package com.sd.cavphmi.highmap
/**
* 根据外界传入的坐标,航向角,速度使主车移动
* {
* "lat": 116.50272672296624, //纬度
* "lon": 116.49886019, //经度
* "evel": 20.80189, //高度
* "heading": 0, //汽车姿态方向角度
* }
*/
class CarPos {
var evel = 20.80189
var heading = 0.0
var lat = 0.0
var lon = 0.0
}
package com.sd.cavphmi.highmap
import com.google.gson.Gson
import com.unity3d.player.UnityPlayer
/**
* 高精地图Api
*
* 在EarlyWarnVM.kt里setAssEvent函数里用到了
*/
object HighMapApi {
private var gson = Gson()
private const val MODELNAME = "MsgBridge"
/**
* 给unity读取3d tile json配置
*/
fun setTileInit(tileJsonBean: TileJsonBean) {
UnityPlayer.UnitySendMessage(MODELNAME, "SetTileInit", gson.toJson(tileJsonBean))
}
/**
* 根据外界传入的坐标,航向角,速度使主车移动
* @param heading 航向角
* @param evel 高程
*/
fun setCarPosition(
evel: Float,
heading: Double,
lat: Double,
lon: Double
) {
val carPos = CarPos().apply {
this.evel=evel.toDouble()
this.heading = heading
this.lat = lat
this.lon = lon
}
UnityPlayer.UnitySendMessage(MODELNAME, "SetCarPosition", gson.toJson(carPos))
}
/**
* 开启(关闭)绘制主车底盘下的光圈
*/
fun setCarBottomCircle(ison: Boolean) {
var bottomCircle = BottomCircle(ison)
UnityPlayer.UnitySendMessage(MODELNAME, "SetCarBottomCircle", gson.toJson(bottomCircle))
}
/**
* 开启(关闭)主车前方的雷达6个方向
*/
fun setCarRadarDirection(dirent: Int) {
var radarDirection = RadarDirection(dirent)
UnityPlayer.UnitySendMessage(MODELNAME, "SetCarRadarDirection", gson.toJson(radarDirection))
}
/**
* 车辆行驶全局路径绘制 - 蓝色渐变引导线
* @param lines 全局路径
*/
fun setCarNavPath(lines: List<AllLine>) {
var carNavPath = CarNavPath(lines)
UnityPlayer.UnitySendMessage(MODELNAME, "SetCarNavPath", gson.toJson(carNavPath))
}
/**
* 传入点的坐标数组绘制路面状况颜色2=(路径里的红色、施工区域红色、人行道红色) 3=绿色(绿波) 4=感知车前的红色)
* @param alertLins 危险路径
* @param alertType 危险类型
*/
fun setAlertPath(alertLins: List<AlertLin>, alertType: Int) {
var alertPath = AlertPath(alertLins, alertType)
UnityPlayer.UnitySendMessage(MODELNAME, "SetAlertPath", gson.toJson(alertPath))
}
/**
* 绘制感知物
* @param ptcList
*/
fun setPtcData(ptcList: List<UnityPtc>) {
var ptcData = PtcData(ptcList)
UnityPlayer.UnitySendMessage(MODELNAME, "SetPtcData", gson.toJson(ptcData))
}
/**
* 清除所有感知物
*/
fun clearPtcData() {
UnityPlayer.UnitySendMessage(MODELNAME, "ClearAllPtcData","")
}
}
\ No newline at end of file
package com.sd.cavphmi.highmap
/**
* 感知物数据
*
* {
* ptcList: //感知物数组
* [
* {
* ptcid:xxx,//感知物id
* "lat": 43.826145, //纬度
* "lon": 125.12990, //经度
* "pType":1 //感知物类型 1=车 2=人
* "heading": 125.12990, //航向角
* “isRed”:false //是否变红
* isFlash:fasle //是否闪烁
* aniTime:1(单位秒) //此字段具有高优先级,以第一帧接收为准开始计时,控制闪烁和变红在X秒后消失,如果传0已上面的bool值为准。
* },
*
* }
*/
data class PtcData(
val ptcList: List<UnityPtc>
)
class UnityPtc {
var aniTime = 1
var pType = 0
var heading = 0.0
var isFlash = false
var isRed = false
var lat: Double = 0.0
var lon: Double = 0.0
var ptcid: String = ""
}
package com.sd.cavphmi.highmap
/**
* 车前雷达
* {dirent:1} 0=关闭 1=左前 2=正前 3=右前 4=右后 5=正后 6=左后
*/
data class RadarDirection(
val dirent: Int
)
\ No newline at end of file
package com.sd.cavphmi.highmap
import com.sd.cavphmi.utils.MyContants
/**
* 给unity 初始化json
*
* @property host
* @property tiles3d
* @constructor Create empty Tile json bean
*/
class TileJsonBean {
var host: String = MyContants.HOST
var tiles3d = listOf(
"/gis_data/3dtiles/road/CurbStrip/tileset.json",
"/gis_data/3dtiles/road/LanePolygon/tileset.json",
"/gis_data/3dtiles/road/RoadSection/tileset.json",
"/gis_data/3dtiles/road/SafetyIsland/tileset.json",
"/gis_data/3dtiles/road/SepStrip/tileset.json",
"/gis_data/3dtiles/road/SideWalk/tileset.json",
"/gis_data/3dtiles/road/TraMarkA/tileset.json",
"/gis_data/3dtiles/road/TraMarkL/tileset.json",
"/gis_data/3dtiles/road/TraMarkP/tileset.json",
"/gis_data/3dtiles/roadequip/FieldFacility/tileset.json",
"/gis_data/3dtiles/roadequip/PlatForm/tileset.json",
"/gis_data/3dtiles/roadequip/SafetyRail/tileset.json",
"/gis_data/3dtiles/roadequip/SignStrct/tileset.json",
"/gis_data/3dtiles/roadequip/StreetLight/tileset.json",
"/gis_data/3dtiles/roadequip/TrafficLight/tileset.json",
"/gis_data/3dtiles/roadequip/TrafficSign/tileset.json",
"/gis_data/3dtiles/roadequip/VideoCamera/tileset.json",
"/gis_data/3dtiles/roadequip/baoganji/tileset.json",
"/gis_data/3dtiles/roadequip/buguangdeng/tileset.json",
"/gis_data/3dtiles/roadequip/chongdianzhuang/tileset.json",
"/gis_data/3dtiles/roadequip/jiaohuanji/tileset.json",
"/gis_data/3dtiles/roadequip/xinhaoji/tileset.json",
"/gis_data/3dtiles/roadequip/yidongronghe/tileset.json",
"/gis_data/3dtiles/buildings/tileset.json",
"/gis_data/3dtiles/ground/tileset.json",
"/gis_data/3dtiles/vegetation/Tree/tileset.json"
)
}
\ No newline at end of file
......@@ -50,7 +50,7 @@ class LoginActivity : AppCompatActivity() {
binding.btSpaceinfo.setOnClickListener {
mainVm.getSpaceInfo()
}
// HTTP获取AVp状态信息 以后就用socket订阅了
// HTTP获取AVp状态信息 以后就用socket订阅了,获取找、泊车状态,拿到全局路径lines,和局部(避障)路径xxx
binding.btAvpstatu.setOnClickListener {
mainVm.getAvpStatus()
}
......
......@@ -22,7 +22,7 @@ object MyContants {
var WSHOST = "wss://itg-dev.cu-sc.com:19443/WSPLUSV5/socket?token=${WSTOKEN}&vehicleId=${VEHICLEID}&"
// var PORT = if (IS_DEBUG) "123" else "34534"
/***感知目标物 &intersectionCode***/
/***感知目标物 &intersectionCode=17 停车场 不传就是整个园区***/
var WS_FEEL_TARGET = "${WSHOST}msgType=1&intersectionCode=17"
/***网联车辆位姿 &vehicleId=***/
......
......@@ -125,7 +125,7 @@ class MainVm @Inject constructor(
}
//获取车辆详情 传{}就行,正常应该是传场地ID,但是亦庄这个和太和桥车是一样的
//获取车辆详情 传{}就行,正常应该是传场地ID,但是亦庄这个和太和桥车是一样的,用于拿到车内视频
fun getVehDetail(id: String = ""): LiveData<VehDetailBean> {
viewModelScope.launch {
var result = avpDataRepo.getVehDetail(id)
......@@ -142,7 +142,8 @@ class MainVm @Inject constructor(
}
//HTTP获取车位占用情况
/* HTTP获取车位占用情况
通过车位号传给四维高精地图*/
fun getSpaceInfo(): LiveData<SpaceInfoBean> {
viewModelScope.launch {
var result = avpDataRepo.getSpaceInfo()
......@@ -182,6 +183,7 @@ class MainVm @Inject constructor(
/**
* 联网车辆位姿数据
* 传入vehicleId 和url拼接代表某辆车的预警
* 用来控制主车移动
*/
fun subVehicle(): LiveData<CarVehicle> {
if (isMock) {
......@@ -235,7 +237,8 @@ class MainVm @Inject constructor(
/**
* V2X预警开始
* 传入vehicleId 和url拼接代表某辆车的预警
* **/
* 某个预警id要和感知物的ptcid对上
*/
fun subStartV2x(): LiveData<V2xStartBean> {
if (isMock) {
mockVM.onV2xMock(v2xStartBean)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment