remove heading change when track move
This commit is contained in:
@@ -141,31 +141,6 @@ public class TrackObj {
|
||||
}
|
||||
|
||||
private void calHeading() {
|
||||
double newDelta;
|
||||
ObjQueue lastObj;
|
||||
if (circleQueue.size() >= 3) {
|
||||
//计算差量
|
||||
List<ObjQueue> objQueueList = circleQueue.getLastThreeFrame();
|
||||
lastObj = objQueueList.get(2);
|
||||
|
||||
double firstDelta = objQueueList.get(1).getHeading() - objQueueList.get(0).getHeading();
|
||||
double secondDelta = objQueueList.get(2).getHeading() - objQueueList.get(1).getHeading();
|
||||
newDelta = Math.abs(cacheData.getHeading() - lastObj.getHeading());
|
||||
//按帧与帧之间的顺序变化
|
||||
double abs = Math.abs(firstDelta - secondDelta);
|
||||
//存在180度转向(有一帧出现错误)
|
||||
if (Math.abs(abs - 180) < 5) {
|
||||
headingDelta = firstDelta - secondDelta;
|
||||
} else if (abs < 5) { //两帧之间差量比较均匀
|
||||
headingDelta = firstDelta - secondDelta;
|
||||
} else if (Math.abs(abs - 180) > 5 && newDelta < 5) { //前两帧数据中出现异常值,相信后序帧
|
||||
headingDelta = newDelta;
|
||||
}
|
||||
} else {
|
||||
lastObj = circleQueue.getLastFrame();
|
||||
newDelta = Math.abs(cacheData.getHeading() - lastObj.getHeading());
|
||||
headingDelta = newDelta;
|
||||
}
|
||||
//更正数据,速度小于LIMIT_SPEED使用上一帧数据
|
||||
if (relativeStatic()) {
|
||||
if (roadAngle != 0.0) {
|
||||
@@ -180,11 +155,6 @@ public class TrackObj {
|
||||
}
|
||||
|
||||
}
|
||||
//速度大于LIMIT_SPEED并出现大幅度转向使用缓存帧和delta数据
|
||||
if (cacheData.getSpeed() >= LIMIT_SPEED && newDelta > 10 && headingDelta != 0.0) {
|
||||
// Log.i("hy uuid : " + cacheData.getUuid() , " 修正航向角 last : " + lastObj.getHeading() + " , 增益 : " + headingDelta);
|
||||
cacheData = cacheData.toBuilder().setHeading(lastObj.getHeading() + headingDelta).build();
|
||||
}
|
||||
}
|
||||
|
||||
public double getRecentlyTime() {
|
||||
|
||||
Reference in New Issue
Block a user