[650][adas] 更新红绿灯PB,新增融合数据

This commit is contained in:
xinfengkun
2024-06-24 17:56:27 +08:00
parent db7ae84de6
commit d235abdadb
10 changed files with 72 additions and 72 deletions

View File

@@ -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障碍物"),

View File

@@ -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
}

View File

@@ -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

View File

@@ -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
}

View File

@@ -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);
/**
* 他车轨迹预测

View File

@@ -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);
}
}