[change]增加透传点云接口,升级PB版本

This commit is contained in:
xinfengkun
2022-05-09 17:43:44 +08:00
parent 6ab6caccc7
commit 2ae168b0d7
12 changed files with 129 additions and 4 deletions

View File

@@ -9,6 +9,7 @@ import com.zhidao.adas.client.bean.ErrorData;
import com.zhidao.adas.client.bean.GlobalPathResp;
import com.zhidao.adas.client.bean.GnssInfo;
import com.zhidao.adas.client.bean.MogoReportMessage;
import com.zhidao.adas.client.bean.MyPointCloud;
import com.zhidao.adas.client.bean.PerceptionObstacles;
import com.zhidao.adas.client.bean.PerceptionTrafficLight;
import com.zhidao.adas.client.bean.PredictionObstacleTrajectory;
@@ -110,6 +111,7 @@ public class DataDistribution {
public final List<String> listArrivalNotification = new ArrayList<>();
public final List<String> listErrorData = new ArrayList<>();
public final List<String> listUpdate = new ArrayList<>();
public final List<String> listPointCloud = new ArrayList<>();
public String cutDown(String str) {
if (isCutDown && str.length() > 650) {
@@ -146,6 +148,19 @@ public class DataDistribution {
// for (OnAdasClientListener listener : listeners) {
// listener.onRefresh();
// }
// }
} else if (data instanceof MyPointCloud) {
listPointCloud.add(0, time + str);
if (listPointCloud.size() > LIST_SIZE) {
listPointCloud.remove(listPointCloud.size() - 1);
}
if (listener != null) {
listener.onRefresh();
}
// if (!listeners.isEmpty()) {
// for (OnAdasClientListener listener : listeners) {
// listener.onRefresh();
// }
// }
} else if (data instanceof GnssInfo) {
listGnssInfo.add(0, time + str);

View File

@@ -0,0 +1,21 @@
package com.zhidao.adas.client.bean;
import com.google.protobuf.TextFormat;
import mogo.telematics.pad.MessagePad;
public class MyPointCloud extends BaseInfo {
public final rule_segement.PointCloud.LidarPointCloud bean;
public MyPointCloud(MessagePad.Header header, rule_segement.PointCloud.LidarPointCloud bean) {
super("接收", bean.getSerializedSize(), header);
this.bean = bean;
}
@Override
public String toString() {
return super.toString() + TextFormat.printer().escapingNonAscii(false).printToString(bean);
}
}

View File

@@ -152,6 +152,10 @@ public class InfoFragment extends BaseFragment {
case Constants.TITLE.RECEIVE_PERCEPTION_OBSTACLES:
adapter.setData(DataDistribution.getInstance().listPerceptionObstacles);
break;
case Constants.TITLE.RECEIVE_POINT_CLOUD:
adapter.setData(DataDistribution.getInstance().listPointCloud);
break;
case Constants.TITLE.RECEIVE_ERROR:
adapter.setData(DataDistribution.getInstance().listErrorData);
break;

View File

@@ -42,6 +42,7 @@ import com.mogo.telematic.client.listener.NettyClientListener;
import com.mogo.telematic.client.status.ConnectState;
import com.mogo.telematic.server.netty.NettyServerListener;
import com.zhidao.adas.client.BuildConfig;
import com.zhidao.adas.client.DataDistribution;
import com.zhidao.adas.client.R;
import com.zhidao.adas.client.adapter.InfoTitleAdapter;
import com.zhidao.adas.client.base.BaseActivity;
@@ -55,7 +56,7 @@ import com.zhidao.adas.client.bean.GlobalPathResp;
import com.zhidao.adas.client.bean.GnssInfo;
import com.zhidao.adas.client.bean.IPCConnectState;
import com.zhidao.adas.client.bean.MogoReportMessage;
import com.zhidao.adas.client.bean.MySSHResult;
import com.zhidao.adas.client.bean.MyPointCloud;
import com.zhidao.adas.client.bean.PerceptionObstacles;
import com.zhidao.adas.client.bean.PerceptionTrafficLight;
import com.zhidao.adas.client.bean.PredictionObstacleTrajectory;
@@ -64,7 +65,6 @@ import com.zhidao.adas.client.bean.TrackedObjects;
import com.zhidao.adas.client.bean.Trajectory;
import com.zhidao.adas.client.bean.VehicleState;
import com.zhidao.adas.client.bean.Warn;
import com.zhidao.adas.client.DataDistribution;
import com.zhidao.adas.client.log.LogSave;
import com.zhidao.adas.client.utils.Constants;
import com.zhidao.support.adas.high.AdasManager;
@@ -73,7 +73,6 @@ import com.zhidao.support.adas.high.OnAdasConnectStatusListener;
import com.zhidao.support.adas.high.OnAdasListener;
import com.zhidao.support.adas.high.OnMultiDeviceListener;
import com.zhidao.support.adas.high.bean.IPCUpgradeStateInfo;
import com.zhidao.adas.client.ssh.SSHResult;
import com.zhidao.support.adas.high.common.Constants.IPC_CONNECTION_STATUS;
import com.zhidao.support.adas.high.common.CupidLogUtils;
import com.zhidao.support.adas.high.common.ProtocolStatus;
@@ -96,6 +95,7 @@ import perception.ObjectOuterClass;
import perception.TrafficLightOuterClass;
import prediction.Prediction;
import record_cache.RecordPanelOuterClass;
import rule_segement.PointCloud;
public class MainActivity extends BaseActivity implements OnAdasListener, OnAdasConnectStatusListener, BaseAdapter.OnItemClickListener<String> {
private final static String TAG = MainActivity.class.getSimpleName();
@@ -146,6 +146,7 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas
private InfoFragment perceptionTrafficLightFragment;
private InfoFragment predictionObstacleTrajectoryFragment;
private InfoFragment perceptionObstaclesFragment;
private InfoFragment pointCloudFragment;
private VersionFragment versionFragment;
private FragmentManager manager;
private FragmentTransaction transaction;
@@ -453,6 +454,7 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas
titleFragmentData.add(Constants.TITLE.RECEIVE_TRAJECTORY);
titleFragmentData.add(Constants.TITLE.RECEIVE_TRACKED_OBJECTS);
titleFragmentData.add(Constants.TITLE.RECEIVE_PERCEPTION_OBSTACLES);
titleFragmentData.add(Constants.TITLE.RECEIVE_POINT_CLOUD);
titleFragmentData.add(Constants.TITLE.RECEIVE_VEHICLE_STATE);
titleFragmentData.add(Constants.TITLE.RECEIVE_AUTOPILOT_STATE);
titleFragmentData.add(Constants.TITLE.RECEIVE_REPORT_MESSAGE);
@@ -646,6 +648,14 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas
transaction.commit();
}
break;
case Constants.TITLE.RECEIVE_POINT_CLOUD:
if (pointCloudFragment == null)
pointCloudFragment = new InfoFragment(data);
if (!pointCloudFragment.isVisible()) {
transaction.replace(R.id.fl_info, pointCloudFragment);
transaction.commit();
}
break;
case Constants.TITLE.RECEIVE_CAR_CONFIG_RESP:
AdasManager.getInstance().sendCarConfigReq();
if (versionFragment == null)
@@ -799,6 +809,12 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas
DataDistribution.getInstance().addData(base);
}
@Override
public void onPointCloud(MessagePad.Header header, PointCloud.LidarPointCloud pointCloud) {
MyPointCloud base = new MyPointCloud(header, pointCloud);
DataDistribution.getInstance().addData(base);
}
@Override
public void onBasicInfoReq(MessagePad.Header header, MessagePad.BasicInfoReq basicInfoReq) {
BasicInfoReq info = new BasicInfoReq(header, basicInfoReq);

View File

@@ -152,6 +152,7 @@ public class Constants {
String RECEIVE_PERCEPTION_TRAFFIC_LIGHT = "感知红绿灯";
String RECEIVE_PREDICTION_OBSTACLE_TRAJECTORY = "他车轨迹预测";
String RECEIVE_PERCEPTION_OBSTACLES = "透传障碍物";
String RECEIVE_POINT_CLOUD = "点云透传";
// String RECEIVE_BASIC_INFO_REQ = "自动驾驶设备基础信息请求";
String RECEIVE_CAR_CONFIG_RESP = "信息与配置";

View File

@@ -49,6 +49,7 @@ import perception.ObjectOuterClass
import perception.TrafficLightOuterClass
import prediction.Prediction
import record_cache.RecordPanelOuterClass
import rule_segement.PointCloud
/**
* @author emArrow
@@ -235,6 +236,10 @@ class MoGoAdasListenerImpl : OnAdasListener {
//他车轨迹预测
}
override fun onPointCloud(header: MessagePad.Header?, pointCloud: PointCloud.LidarPointCloud?) {
//点云数据透传
}
override fun onBasicInfoReq(
header: MessagePad.Header,
basicInfoReq: MessagePad.BasicInfoReq?

View File

@@ -3,7 +3,7 @@ package mogo.telematics.pad;
enum ProtocolVersion{
Defaultver = 0;
CurrentVersion = 3; //每次修改proto文件增加1
CurrentVersion = 4; //每次修改proto文件增加1
}
enum MessageType
@@ -19,6 +19,7 @@ enum MessageType
MsgTypePerceptionTrafficLight = 0x10006; //感知红绿灯
MsgTypePredictionObstacleTrajectory = 0x10007; //他车轨迹预测
MsgTypePerceptionObstacles = 0x10008; //透传的融合障碍物
MsgTypePointCloud = 0x10009; //点云透传
MsgTypeBasicInfoReq = 0x10100; //自动驾驶设备基础信息请求
MsgTypeBasicInfoResp = 0x10101; //自动驾驶设备基础信息应答
@@ -133,6 +134,9 @@ message AutopilotState
// message definition for MessageType: MsgTypePerceptionObstacles
// refer to TrackedObjects in object.proto
// message definition for MessageType: MsgTypePointCloud
// refer to point_cloud.proto
// message definition for MessageType: MsgTypeBasicInfoReq
message BasicInfoReq
{

View File

@@ -0,0 +1,14 @@
syntax="proto2";
package rule_segement;
import "header.proto";
message LidarPointCloud
{
optional common.Header header = 1;
optional double self_longitude = 2;
optional double self_latitude = 3;
optional double self_yaw = 4;
repeated float del_data = 7 [packed=true];
repeated float add_data = 8 [packed=true];
}

View File

@@ -10,6 +10,7 @@ import perception.ObjectOuterClass;
import perception.TrafficLightOuterClass;
import prediction.Prediction;
import record_cache.RecordPanelOuterClass;
import rule_segement.PointCloud;
/**
* @ProjectName: lib-adas-fpga
@@ -98,6 +99,14 @@ public interface OnAdasListener {
*/
void onTrackedObjects(MessagePad.Header header, ObjectOuterClass.TrackedObjects trackedObjects);
/**
* 透传的点云数据
*
* @param header 头
* @param pointCloud 数据
*/
void onPointCloud(MessagePad.Header header, PointCloud.LidarPointCloud pointCloud);
/**
* 自动驾驶设备基础信息请求
*

View File

@@ -21,6 +21,7 @@ public enum MessageType {
TYPE_RECEIVE_PERCEPTION_TRAFFIC_LIGHT(MessagePad.MessageType.MsgTypePerceptionTrafficLight, "感知红绿灯"),
TYPE_RECEIVE_PREDICTION_OBSTACLE_TRAJECTORY(MessagePad.MessageType.MsgTypePredictionObstacleTrajectory, "他车轨迹预测"),
TYPE_RECEIVE_PERCEPTION_OBSTACLES(MessagePad.MessageType.MsgTypePerceptionObstacles, "透传的融合障碍物"),
TYPE_RECEIVE_POINT_CLOUD(MessagePad.MessageType.MsgTypePointCloud, "点云透传"),
TYPE_RECEIVE_BASIC_INFO_REQ(MessagePad.MessageType.MsgTypeBasicInfoReq, "自动驾驶设备基础信息请求"),
TYPE_SEND_BASIC_INFO_RESP(MessagePad.MessageType.MsgTypeBasicInfoResp, "自动驾驶设备基础信息应答"),

View File

@@ -20,6 +20,7 @@ public class MyMessageFactory implements IMyMessageFactory {
private IMsg perceptionTrafficLightMessage;//感知红绿灯
private IMsg predictionObstacleTrajectoryMessage;//他车轨迹预测
private IMsg perceptionObstaclesMessage;//透传的融合障碍物
private IMsg pointCloudMessage;//透传点云数据
private IMsg basicInfoReqMessage;//自动驾驶设备基础信息请求
private IMsg carConfigRespMessage;//车机基础信息应答
@@ -105,6 +106,12 @@ public class MyMessageFactory implements IMyMessageFactory {
perceptionObstaclesMessage = new PerceptionObstaclesMessage();
}
return perceptionObstaclesMessage;
} else if (messageType == MessageType.TYPE_RECEIVE_POINT_CLOUD.typeCode) {
//他车轨迹预测
if (pointCloudMessage == null) {
pointCloudMessage = new PointCloudMessage();
}
return pointCloudMessage;
} else if (messageType == MessageType.TYPE_RECEIVE_BASIC_INFO_REQ.typeCode) {
//自动驾驶设备基础信息请求
if (basicInfoReqMessage == null) {

View File

@@ -0,0 +1,28 @@
package com.zhidao.support.adas.high.msg;
import com.google.gson.Gson;
import com.google.protobuf.InvalidProtocolBufferException;
import com.zhidao.support.adas.high.OnAdasListener;
import mogo.telematics.pad.MessagePad;
import rule_segement.PointCloud;
/**
* 透传点云数据
*/
public class PointCloudMessage extends MyAbstractMessageHandler {
@Override
public void handlerMsg(Gson gson, OnAdasListener adasListener, String msg) {
}
@Override
public void handlerMsg(MessagePad.Header header, byte[] msg, OnAdasListener adasListener) throws InvalidProtocolBufferException {
PointCloud.LidarPointCloud pointCloud = PointCloud.LidarPointCloud.parseFrom(msg);
if (adasListener != null) {
adasListener.onPointCloud(header, pointCloud);
}
}
}