[650][adas] 更新红绿灯PB,新增融合数据
This commit is contained in:
@@ -83,7 +83,7 @@ import mogo.v2x.MogoV2X
|
||||
import mogo.v2x.RoadOverviewEvents
|
||||
import mogo.yycp.paralleldriving.protocol.ParallelTaskProcessNoticeOuterClass
|
||||
import mogo_msg.MogoReportMsg
|
||||
import perception.TrafficLightOuterClass
|
||||
import perception.FusionTrafficLightOuterClass
|
||||
import planning.RoboSweeperTaskIndexOuterClass
|
||||
import prediction.Prediction
|
||||
import record_cache.RecordPanelOuterClass
|
||||
@@ -330,10 +330,10 @@ class MoGoAdasListenerImpl : OnAdasListener {
|
||||
}
|
||||
}
|
||||
|
||||
//感知红绿灯
|
||||
//融合感知红绿灯
|
||||
override fun onPerceptionTrafficLight(
|
||||
header: MessagePad.Header?,
|
||||
trafficLights: TrafficLightOuterClass.TrafficLights?
|
||||
trafficLights: FusionTrafficLightOuterClass.FusionTrafficLights?
|
||||
) {
|
||||
if (trafficLights != null) {
|
||||
CallerAutopilotIdentifyListenerManager.invokeAutopilotPerceptionTrafficLight(
|
||||
|
||||
@@ -28,8 +28,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
|
||||
import com.mogo.eagle.core.utilcode.util.GsonUtils
|
||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
|
||||
import com.zhjt.service.chain.ChainLog
|
||||
import perception.TrafficLightOuterClass
|
||||
import perception.TrafficLightOuterClass.TrafficLight
|
||||
import perception.FusionTrafficLightOuterClass
|
||||
|
||||
fun TrafficLightStatus.convert(): TrafficLightEnum {
|
||||
return when {
|
||||
@@ -40,12 +39,12 @@ fun TrafficLightStatus.convert(): TrafficLightEnum {
|
||||
}
|
||||
}
|
||||
|
||||
fun TrafficLight.convert(): TrafficLightEnum {
|
||||
fun FusionTrafficLightOuterClass.FusionTrafficLight.convert(): TrafficLightEnum {
|
||||
return when (this.state) {
|
||||
TrafficLightOuterClass.LightState.STATE_GREEN -> TrafficLightEnum.GREEN
|
||||
TrafficLightOuterClass.LightState.STATE_YELLOW -> TrafficLightEnum.YELLOW
|
||||
TrafficLightOuterClass.LightState.STATE_RED -> TrafficLightEnum.RED
|
||||
TrafficLightOuterClass.LightState.STATE_OFF -> TrafficLightEnum.BLACK
|
||||
FusionTrafficLightOuterClass.FusionLightState.STATE_GREEN_FUSION -> TrafficLightEnum.GREEN
|
||||
FusionTrafficLightOuterClass.FusionLightState.STATE_YELLOW_FUSION -> TrafficLightEnum.YELLOW
|
||||
FusionTrafficLightOuterClass.FusionLightState.STATE_RED_FUSION -> TrafficLightEnum.RED
|
||||
FusionTrafficLightOuterClass.FusionLightState.STATE_OFF_FUSION -> TrafficLightEnum.BLACK
|
||||
else -> TrafficLightEnum.BLACK
|
||||
}
|
||||
}
|
||||
@@ -96,7 +95,7 @@ class TrafficLightDispatcher : IMoGoAutopilotIdentifyListener, IMoGoTrafficLight
|
||||
* 工控机感知红绿灯
|
||||
* @param trafficLights 感知红绿灯
|
||||
*/
|
||||
override fun onAutopilotPerceptionTrafficLight(trafficLights: TrafficLightOuterClass.TrafficLights?) {
|
||||
override fun onAutopilotPerceptionTrafficLight(trafficLights: FusionTrafficLightOuterClass.FusionTrafficLights?) {
|
||||
CallerLogger.d(
|
||||
"${SceneConstant.M_D_C}${TAG}",
|
||||
"onAutopilotPerceptionTrafficLight ---- hasObuLightStatus = $hasObuLightStatus ----hasAiLightStatus = $hasAiLightStatus , trafficLights : ${trafficLights?:"null"}"
|
||||
@@ -104,7 +103,7 @@ class TrafficLightDispatcher : IMoGoAutopilotIdentifyListener, IMoGoTrafficLight
|
||||
if (!hasObuLightStatus) {
|
||||
if (!hasAiLightStatus) {
|
||||
trafficLights?.let {
|
||||
var light: TrafficLight? = null
|
||||
var light: FusionTrafficLightOuterClass.FusionTrafficLight? = null
|
||||
if (it.hasStraight()) {
|
||||
light = it.straight
|
||||
} else if (it.hasLeft()) {
|
||||
|
||||
@@ -2,7 +2,7 @@ package com.mogo.eagle.core.function.api.autopilot
|
||||
|
||||
import mogo.telematics.pad.MessagePad
|
||||
import mogo.v2x.*
|
||||
import perception.TrafficLightOuterClass
|
||||
import perception.FusionTrafficLightOuterClass
|
||||
|
||||
/**
|
||||
* @author xiaoyuzhou
|
||||
@@ -24,10 +24,10 @@ interface IMoGoAutopilotIdentifyListener {
|
||||
fun onAutopilotIdentifyPlanningObj(planningObjects: List<MessagePad.PlanningObject>?){}
|
||||
|
||||
/**
|
||||
* 感知红绿灯
|
||||
* 融合感知红绿灯
|
||||
* @param trafficLights 感知红绿灯
|
||||
*/
|
||||
fun onAutopilotPerceptionTrafficLight(trafficLights: TrafficLightOuterClass.TrafficLights?){}
|
||||
fun onAutopilotPerceptionTrafficLight(trafficLights: FusionTrafficLightOuterClass.FusionTrafficLights?){}
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@@ -4,7 +4,7 @@ import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotIdentifyListener
|
||||
import com.mogo.eagle.core.function.call.base.CallerBase
|
||||
import mogo.telematics.pad.MessagePad
|
||||
import mogo.v2x.*
|
||||
import perception.TrafficLightOuterClass
|
||||
import perception.FusionTrafficLightOuterClass
|
||||
|
||||
/**
|
||||
* 域控制器感知数据
|
||||
@@ -36,10 +36,10 @@ object CallerAutopilotIdentifyListenerManager : CallerBase<IMoGoAutopilotIdentif
|
||||
}
|
||||
|
||||
/**
|
||||
* 感知红绿灯
|
||||
* 融合感知红绿灯
|
||||
*/
|
||||
@Synchronized
|
||||
fun invokeAutopilotPerceptionTrafficLight(trafficLights: TrafficLightOuterClass.TrafficLights?) {
|
||||
fun invokeAutopilotPerceptionTrafficLight(trafficLights: FusionTrafficLightOuterClass.FusionTrafficLights?) {
|
||||
M_LISTENERS.forEach {
|
||||
val listener = it.value
|
||||
listener.onAutopilotPerceptionTrafficLight(trafficLights)
|
||||
|
||||
@@ -20,7 +20,7 @@ public enum MessageType {
|
||||
TYPE_RECEIVE_VEHICLE_STATE(MessagePad.MessageType.MsgTypeVehicleState, "老底盘状态"),
|
||||
TYPE_RECEIVE_AUTOPILOT_STATE(MessagePad.MessageType.MsgTypeAutopilotState, "自动驾驶状态"),
|
||||
TYPE_RECEIVE_REPORT_MESSAGE(MessagePad.MessageType.MsgTypeReportMessage, "监控事件报告"),
|
||||
TYPE_RECEIVE_PERCEPTION_TRAFFIC_LIGHT(MessagePad.MessageType.MsgTypePerceptionTrafficLight, "感知红绿灯"),
|
||||
TYPE_RECEIVE_PERCEPTION_TRAFFIC_LIGHT(MessagePad.MessageType.MsgTypePerceptionTrafficLight, "融合感知红绿灯"),
|
||||
TYPE_RECEIVE_PREDICTION_OBSTACLE_TRAJECTORY(MessagePad.MessageType.MsgTypePredictionObstacleTrajectory, "他车轨迹预测"),
|
||||
TYPE_RECEIVE_POINT_CLOUD(MessagePad.MessageType.MsgTypePointCloud, "点云透传"),
|
||||
TYPE_RECEIVE_PLANNING_OBJECTS(MessagePad.MessageType.MsgTypePlanningObjects, "Planning障碍物"),
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
syntax = "proto2";
|
||||
package perception;
|
||||
|
||||
import "header.proto";
|
||||
|
||||
enum FusionLightType {
|
||||
TYPE_DEFAULT_FUSION = 0;
|
||||
TYPE_VEHICLE_FUSION = 1;
|
||||
TYPE_BICYLE_FUSION = 2;
|
||||
TYPE_PEDSTRIAN_FUSION = 3;
|
||||
TYPE_LANE_FUSION = 5;
|
||||
}
|
||||
|
||||
enum FusionLightState {
|
||||
STATE_OFF_FUSION = 0;
|
||||
STATE_RED_FUSION = 1;
|
||||
STATE_YELLOW_FUSION = 2;
|
||||
STATE_GREEN_FUSION = 3;
|
||||
STATE_FLASH_FUSION = 4;
|
||||
}
|
||||
|
||||
message FusionTrafficLight {
|
||||
optional int64 id = 1;
|
||||
optional FusionLightType type = 2 [default = TYPE_DEFAULT_FUSION];
|
||||
optional FusionLightState state = 3 [default = STATE_OFF_FUSION];
|
||||
optional float duration = 4; // seconds since the last state changed
|
||||
optional FusionLightState next_state = 5 [default = STATE_OFF_FUSION];
|
||||
optional float next_duration = 6 [default = -1.0]; // seconds since the last state changed
|
||||
optional FusionLightState next_two_state = 7 [default = STATE_OFF_FUSION];
|
||||
optional float next_two_duration = 8 [default = -1.0]; // seconds since the last state changed
|
||||
}
|
||||
|
||||
message FusionTrafficLights {
|
||||
optional common.Header header = 1;
|
||||
|
||||
optional FusionTrafficLight straight = 2;
|
||||
optional FusionTrafficLight left = 3;
|
||||
optional FusionTrafficLight right = 4;
|
||||
optional FusionTrafficLight u_turn = 5;
|
||||
|
||||
optional bool shield = 6 [default = false];//wheather the traffic lights are shield
|
||||
optional uint32 source = 7 [default = 0]; // 0: vehicle, 1:V2I, 2: V2N
|
||||
}
|
||||
@@ -24,7 +24,7 @@ enum MessageType
|
||||
MsgTypeVehicleState = 0x10003; //底盘信息, 透传底盘状态,pb参考底盘 定频20hz
|
||||
MsgTypeAutopilotState = 0x10004; //自动驾驶状态 定频20hz
|
||||
MsgTypeReportMessage = 0x10005; //系统事件 不定频
|
||||
MsgTypePerceptionTrafficLight = 0x10006; //感知红绿灯 定频10hz
|
||||
MsgTypePerceptionTrafficLight = 0x10006; //融合感知红绿灯 定频10hz
|
||||
MsgTypePredictionObstacleTrajectory = 0x10007; //他车轨迹预测 定频10hz
|
||||
MsgTypePointCloud = 0x10008; //点云透传 定频1hz
|
||||
MsgTypePlanningObjects = 0x10009; //planning障碍物 定频10hz
|
||||
@@ -356,7 +356,7 @@ message AutopilotState
|
||||
// refer to mogo_report_msg.proto
|
||||
|
||||
// message definition for MessageType: MsgTypePerceptionTrafficLight
|
||||
// refer to traffic_light.proto
|
||||
// refer to fusion_traffic_light.proto
|
||||
|
||||
// message definition for MessageType: MsgTypePredictionObstacleTrajectory
|
||||
// refer to prediction.proto
|
||||
|
||||
@@ -1,43 +0,0 @@
|
||||
syntax = "proto2";
|
||||
package perception;
|
||||
|
||||
import "header.proto";
|
||||
|
||||
enum LightType {
|
||||
TYPE_DEFAULT = 0;
|
||||
TYPE_VEHICLE = 1;//机动车道
|
||||
TYPE_BICYLE = 2;//自行车道
|
||||
TYPE_PEDSTRIAN = 3;//行人道
|
||||
TYPE_LANE = 5;//车道
|
||||
}
|
||||
|
||||
enum LightState {
|
||||
STATE_OFF = 0;//没检测到灯
|
||||
STATE_RED = 1;
|
||||
STATE_YELLOW = 2;
|
||||
STATE_GREEN = 3;
|
||||
STATE_FLASH = 4;//闪烁
|
||||
STATE_OFF_FUSION = 5;
|
||||
}
|
||||
|
||||
message TrafficLight {
|
||||
optional int64 id = 1;
|
||||
optional LightType type = 2 [default = TYPE_DEFAULT];//灯所处的车道类型
|
||||
optional LightState state = 3 [default = STATE_OFF];//灯态
|
||||
optional float duration = 4; // seconds since the last state changed
|
||||
optional LightState next_state = 5 [default = STATE_OFF_FUSION];
|
||||
}
|
||||
|
||||
//触发方式:120m以内会有信号,但远的时候可能不准,越近越准
|
||||
//straight left right u_turn 同一时间只有会有一个触发
|
||||
message TrafficLights {
|
||||
optional common.Header header = 1;
|
||||
|
||||
optional TrafficLight straight = 2;//直行灯
|
||||
optional TrafficLight left = 3;//左转灯
|
||||
optional TrafficLight right = 4;//右转灯
|
||||
optional TrafficLight u_turn = 5;//掉头灯
|
||||
|
||||
optional bool shield = 6 [default = false];//wheather the traffic lights are shield
|
||||
optional uint32 source = 7 [default = 0]; // 0: vehicle, 1:V2I, 2: V2N
|
||||
}
|
||||
@@ -38,7 +38,7 @@ import mogo.v2x.MogoV2X;
|
||||
import mogo.v2x.RoadOverviewEvents;
|
||||
import mogo.yycp.paralleldriving.protocol.ParallelTaskProcessNoticeOuterClass;
|
||||
import mogo_msg.MogoReportMsg;
|
||||
import perception.TrafficLightOuterClass;
|
||||
import perception.FusionTrafficLightOuterClass;
|
||||
import planning.RoboSweeperTaskIndexOuterClass;
|
||||
import prediction.Prediction;
|
||||
import record_cache.RecordPanelOuterClass;
|
||||
@@ -128,12 +128,12 @@ public interface OnAdasListener {
|
||||
void onReportMessage(MessagePad.Header header, MogoReportMsg.MogoReportMessage mogoReportMessage);
|
||||
|
||||
/**
|
||||
* 感知红绿灯
|
||||
* 融合感知红绿灯
|
||||
*
|
||||
* @param header 头
|
||||
* @param trafficLights 感知红绿灯
|
||||
*/
|
||||
void onPerceptionTrafficLight(MessagePad.Header header, TrafficLightOuterClass.TrafficLights trafficLights);
|
||||
void onPerceptionTrafficLight(MessagePad.Header header, FusionTrafficLightOuterClass.FusionTrafficLights trafficLights);
|
||||
|
||||
/**
|
||||
* 他车轨迹预测
|
||||
|
||||
@@ -8,23 +8,24 @@ import com.zhidao.support.adas.high.OnAdasListener;
|
||||
import com.zhidao.support.adas.high.common.CupidLogUtils;
|
||||
import com.zhidao.support.adas.high.protocol.RawData;
|
||||
|
||||
import perception.TrafficLightOuterClass;
|
||||
import perception.FusionTrafficLightOuterClass;
|
||||
|
||||
|
||||
/**
|
||||
* 感知红绿灯
|
||||
* 融合感知红绿灯
|
||||
*/
|
||||
public class PerceptionTrafficLightMessage extends MyAbstractMessageHandler {
|
||||
|
||||
@Override
|
||||
public void handlerMsg(RawData raw, OnAdasListener adasListener) throws InvalidProtocolBufferException {
|
||||
TrafficLightOuterClass.TrafficLights trafficLights = TrafficLightOuterClass.TrafficLights.parser().parseFrom(raw.originalData.toByteArray(), raw.getOffsetValue(), raw.getPackageLengthValue() - raw.getOffsetValue());
|
||||
AdasChannel.calculateTimeConsumingOnDispatchRaw("感知红绿灯", raw.receiveTime);
|
||||
FusionTrafficLightOuterClass.FusionTrafficLights trafficLights = FusionTrafficLightOuterClass.FusionTrafficLights.parser().parseFrom(raw.originalData.toByteArray(), raw.getOffsetValue(), raw.getPackageLengthValue() - raw.getOffsetValue());
|
||||
AdasChannel.calculateTimeConsumingOnDispatchRaw("融合感知红绿灯", raw.receiveTime);
|
||||
long nowTime = 0;
|
||||
if (CupidLogUtils.isEnableLog())
|
||||
nowTime = SystemClock.elapsedRealtime();
|
||||
if (adasListener != null) {
|
||||
adasListener.onPerceptionTrafficLight(raw.getHeader(), trafficLights);
|
||||
}
|
||||
AdasChannel.calculateTimeConsumingBusiness("感知红绿灯", nowTime);
|
||||
AdasChannel.calculateTimeConsumingBusiness("融合感知红绿灯", nowTime);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user