Tôi có ba giá trị con quay hồi chuyển, độ dốc, cuộn và ngáp. Tôi muốn thêm bộ lọc Kalman để có được các giá trị chính xác hơn. Tôi tìm thấy thư viện opencv, mà thực hiện một bộ lọc Kalman, nhưng tôi không thể hiểu nó như thế nào là nó thực sự làm việc.Bộ lọc OpenCV Kalman
Bạn có thể cho tôi bất kỳ trợ giúp nào có thể giúp tôi không? Tôi không tìm thấy bất kỳ chủ đề liên quan nào trên internet.
Tôi đã cố gắng làm cho nó hoạt động với một trục.
const float A[] = { 1, 1, 0, 1 };
CvKalman* kalman;
CvMat* state = NULL;
CvMat* measurement;
void kalman_filter(float FoE_x, float prev_x)
{
const CvMat* prediction = cvKalmanPredict(kalman, 0);
printf("KALMAN: %f %f %f\n" , prev_x, prediction->data.fl[0] , prediction->data.fl[1]);
measurement->data.fl[0] = FoE_x;
cvKalmanCorrect(kalman, measurement);
}
trong chính
kalman = cvCreateKalman(2, 1, 0);
state = cvCreateMat(2, 1, CV_32FC1);
measurement = cvCreateMat(1, 1, CV_32FC1);
cvSetIdentity(kalman->measurement_matrix,cvRealScalar(1));
memcpy(kalman->transition_matrix->data.fl, A, sizeof(A));
cvSetIdentity(kalman->process_noise_cov, cvRealScalar(2.0));
cvSetIdentity(kalman->measurement_noise_cov, cvRealScalar(3.0));
cvSetIdentity(kalman->error_cov_post, cvRealScalar(1222));
kalman->state_post->data.fl[0] = 0;
Và tôi gọi mọi này, khi tôi nhận dữ liệu từ gyro:
kalman_filter(prevr, mpe->getGyrosDegrees().roll);
Tôi nghĩ trong kalman_filter tham số đầu tiên là giá trị trước đó và lần thứ hai là giá trị dòng. Tôi không và mã này không hoạt động ... Tôi biết tôi có rất nhiều công việc với nó, nhưng tôi không biết làm thế nào để tiếp tục, những gì để thay đổi ...
Bạn có thể muốn đặt câu hỏi cụ thể hơn. Bạn gặp khó khăn khi hiểu Bộ lọc Kalman hoặc việc triển khai Bộ lọc Kalman? –
thành thật mà nói, tôi chưa hiểu bộ lọc Kalman. Tôi tìm thấy một số bài viết về nó, nhưng có chứa rất nhiều Toán cao ... Tôi đã cố gắng để thực hiện một cái gì đó cho một trục của con quay hồi chuyển, nhưng tôi không biết, mà biến là những gì cho. Tôi thêm một số mã vào câu hỏi. thời điểm –
@Gabriel Schreiber: Tôi đã thêm một số mã vào câu hỏi. Cảm ơn bạn đã trợ giúp! –