MCPcopy Create free account
hub / github.com/Smorodov/Multitarget-tracker / CreateLinearAcceleration

Method CreateLinearAcceleration

src/Tracker/Kalman.cpp:240–293  ·  view source on GitHub ↗

\brief TKalmanFilter::CreateLinearAcceleration \param xy0 \param xyv0

Source from the content-addressed store, hash-verified

238/// \param xyv0
239///
240void TKalmanFilter::CreateLinearAcceleration(Point_t xy0, Point_t xyv0)
241{
242 // 6 state variables, 2 measurements
243 m_linearKalman.init(6, 2, 0, El_t);
244 // Transition cv::Matrix
245 const track_t dt = m_deltaTime;
246 const track_t dt2 = 0.5f * m_deltaTime * m_deltaTime;
247 m_linearKalman.transitionMatrix = (cv::Mat_<track_t>(6, 6) <<
248 1, 0, dt, 0, dt2, 0,
249 0, 1, 0, dt, 0, dt2,
250 0, 0, 1, 0, dt, 0,
251 0, 0, 0, 1, 0, dt,
252 0, 0, 0, 0, 1, 0,
253 0, 0, 0, 0, 0, 1);
254
255 // init...
256 m_lastPointResult = xy0;
257 m_linearKalman.statePre.at<track_t>(0) = xy0.x; // x
258 m_linearKalman.statePre.at<track_t>(1) = xy0.y; // y
259 m_linearKalman.statePre.at<track_t>(2) = xyv0.x; // vx
260 m_linearKalman.statePre.at<track_t>(3) = xyv0.y; // vy
261 m_linearKalman.statePre.at<track_t>(4) = 0; // ax
262 m_linearKalman.statePre.at<track_t>(5) = 0; // ay
263
264 m_linearKalman.statePost.at<track_t>(0) = xy0.x;
265 m_linearKalman.statePost.at<track_t>(1) = xy0.y;
266 m_linearKalman.statePost.at<track_t>(2) = xyv0.x;
267 m_linearKalman.statePost.at<track_t>(3) = xyv0.y;
268 m_linearKalman.statePost.at<track_t>(4) = 0;
269 m_linearKalman.statePost.at<track_t>(5) = 0;
270
271 cv::setIdentity(m_linearKalman.measurementMatrix);
272
273 track_t n1 = pow(m_deltaTime, 4.f) / 4.f;
274 track_t n2 = pow(m_deltaTime, 3.f) / 2.f;
275 track_t n3 = pow(m_deltaTime, 2.f);
276 m_linearKalman.processNoiseCov = (cv::Mat_<track_t>(6, 6) <<
277 n1, 0, n2, 0, n2, 0,
278 0, n1, 0, n2, 0, n2,
279 n2, 0, n3, 0, n3, 0,
280 0, n2, 0, n3, 0, n3,
281 0, 0, n2, 0, n3, 0,
282 0, 0, 0, n2, 0, n3);
283
284 m_linearKalman.processNoiseCov *= m_accelNoiseMag;
285
286 cv::setIdentity(m_linearKalman.measurementNoiseCov, cv::Scalar::all(0.1));
287
288 cv::setIdentity(m_linearKalman.errorCovPost, cv::Scalar::all(.1));
289
290 m_initialPoints.reserve(MIN_INIT_VALS);
291
292 m_initialized = true;
293}
294
295///
296/// \brief TKalmanFilter::CreateLinearAcceleration

Callers

nothing calls this directly

Calls 2

powFunction · 0.85
initMethod · 0.45

Tested by

no test coverage detected