Skip to content

Commit 5ebb9ee

Browse files
author
Sergey Nuzhny
committed
Kalman filter to private members
1 parent 8cf3c12 commit 5ebb9ee

2 files changed

Lines changed: 20 additions & 15 deletions

File tree

Tracker/Ctracker.cpp

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ void CTracker::Update(const std::vector<Point_t>& detections)
5555
{
5656
for (size_t j = 0; j < detections.size(); j++)
5757
{
58-
Point_t diff = (tracks[i]->prediction - detections[j]);
58+
Point_t diff = tracks[i]->prediction - detections[j];
5959
track_t dist = sqrtf(diff.x*diff.x + diff.y*diff.y);
6060
Cost[i + j * N] = dist;
6161
}
@@ -117,25 +117,15 @@ void CTracker::Update(const std::vector<Point_t>& detections)
117117
{
118118
// If track updated less than one time, than filter state is not correct.
119119

120-
tracks[i]->KF.GetPrediction();
121-
122120
if (assignment[i] != -1) // If we have assigned detect, then update using its coordinates,
123121
{
124122
tracks[i]->skipped_frames = 0;
125-
tracks[i]->prediction = tracks[i]->KF.Update(detections[assignment[i]], 1);
123+
tracks[i]->Update(detections[assignment[i]], true, max_trace_length);
126124
}
127-
else // if not continue using predictions
125+
else // if not continue using predictions
128126
{
129-
tracks[i]->prediction = tracks[i]->KF.Update(Point_t(0, 0), 0);
127+
tracks[i]->Update(Point_t(0, 0), false, max_trace_length);
130128
}
131-
132-
if (tracks[i]->trace.size() > max_trace_length)
133-
{
134-
tracks[i]->trace.erase(tracks[i]->trace.begin(), tracks[i]->trace.end() - max_trace_length);
135-
}
136-
137-
tracks[i]->trace.push_back(tracks[i]->prediction);
138-
tracks[i]->KF.LastResult = tracks[i]->prediction;
139129
}
140130

141131
}

Tracker/Ctracker.h

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,31 @@ class CTrack
1313
CTrack(Point_t p, track_t dt, track_t Accel_noise_mag, size_t trackID)
1414
:
1515
track_id(trackID),
16-
prediction(p),
1716
skipped_frames(0),
17+
prediction(p),
1818
KF(p, dt, Accel_noise_mag)
1919
{
2020
}
2121

22+
void Update(Point_t p, bool dataCorrect, size_t max_trace_length)
23+
{
24+
KF.GetPrediction();
25+
prediction = KF.Update(p, dataCorrect);
26+
27+
if (trace.size() > max_trace_length)
28+
{
29+
trace.erase(trace.begin(), trace.end() - max_trace_length);
30+
}
31+
32+
trace.push_back(prediction);
33+
}
34+
2235
std::vector<Point_t> trace;
2336
size_t track_id;
2437
size_t skipped_frames;
2538
Point_t prediction;
39+
40+
private:
2641
TKalmanFilter KF;
2742
};
2843

0 commit comments

Comments
 (0)