Ước tính vận tốc từ vị trí đã biết và gia tốc


8

Tôi bị mắc kẹt trong việc mô hình hóa một mô hình hệ thống, tức là lấy vectơ trạng thái và vectơ đầu vào của tôi. Tôi đoán là vị trí và vận tốc là vectơ trạng thái và gia tốc là vectơ đầu vào. Dự đoán thứ 2 của tôi là cả ba đại lượng đều ở vectơ trạng thái và không có vectơ đầu vào.

Vậy ... vectơ trạng thái là gì và vectơ đầu vào trong trường hợp của tôi là gì?

-

Thông tin bổ sung:

Tôi lấy số đo từ cảm biến vị trí và cảm biến gia tốc. Mọi thứ đang diễn ra trong 1D, ví dụ trên một đường thẳng. Tôi muốn hợp nhất các bài đọc này (và loại bỏ nhiễu) để có được ước tính vận tốc cho mỗi dấu thời gian.

Các phương trình này mô tả hệ thống; Tôi không chắc chắn nếu họ mô hình đúng mặc dù. Nếu tôi hiểu chính xác thì có thể dự đoán rằng gia tốc là không đổi (mặc dù trong thực tế nó thay đổi) - bởi vì ma trận hiệp phương sai quá trình sửa chữa giả định này (phải không?). nhập mô tả hình ảnh ở đây

Tôi cũng có một số dữ liệu mẫu để làm việc (đơn giản là các giá trị đầu vào không gây ồn ở đây):

 time    pos     acc      what I should get as output (velocity)
[0.0s]  0.000, -0.000  | 18.850
[0.1s]  1.885, -0.113  | 18.850
[0.2s]  3.768, -0.227  | 18.839
[0.3s]  5.650, -0.340  | 18.816
[0.4s]  7.528, -0.452  | 18.782
[0.5s]  9.401, -0.565  | 18.737

BỔ SUNG 2:

Để giao tiếp tốt hơn, tôi đang tạo một câu trả lời mới nhưng nên được coi là một nhận xét cho câu trả lời đầu tiên. Jason bạn đã giúp tôi rất nhiều và tôi thực sự biết ơn thời gian của bạn. Tôi vẫn có vấn đề với điều này mặc dù - kết quả từ Bộ lọc Kalman không như mong đợi. Có thể bạn tìm thấy thời gian xin vui lòng xem lại sau đây, cảm ơn. Tôi đã nợ bạn một hoặc hai cốc bia (hoặc cà phê nếu bạn thích) - nếu bạn có paypal liên hệ với tôi trên primoz [at] codehunter.eu :)


Tôi đã thực hiện mô hình Jason đã đề xuất trong câu trả lời đầu tiên. Tôi đã thêm jerk là biến trạng thái thứ 4. Sau nhiều giờ xem xét tôi quyết định quay lại đây để được giúp đỡ. Các giá trị tôi nhận được từ KF không như mong đợi. Bảng dưới đây biểu thị dữ liệu từ 10 lần lặp đầu tiên của thuật toán. Lưu ý cách giật tăng mỗi lần bước do đó làm cho các ước tính khác sai. Sau một giây, sự khác biệt giữa gia tốc thực và ước tính là hơn 1m / s² (xem bảng, hàng cuối cùng)!

           real           measured                   estimated                    real 
time   pos     acc       pos    acc        pos      acc    jerk    vel[!]       velocity 
0.0   0.000  -0.000    -0.040  0.030  |  -0.300   -0.060   0.000   18.850  <-->  18.850
0.1   1.885  -0.113     1.965 -0.153  |   1.585   -0.061  -0.006   18.844  <-->  18.844
0.2   3.768  -0.227     3.778 -0.247  |   3.469   -0.066  -0.035   18.835  <-->  18.827
0.3   5.650  -0.340     5.750 -0.370  |   5.351   -0.090  -0.122   18.815  <-->  18.799
0.4   7.528  -0.452     7.358 -0.452  |   7.228   -0.152  -0.291   18.769  <-->  18.759
0.5   9.401  -0.565     9.251 -0.555  |   9.094   -0.282  -0.574   18.673  <-->  18.708
0.6   11.269 -0.677    11.309 -0.717  |   10.938  -0.518  -1.006   18.494  <-->  18.646
0.7   13.130 -0.788    13.260 -0.758  |   12.752  -0.840  -1.490   18.233  <-->  18.573
0.8   14.983 -0.899    15.043 -0.949  |   14.520  -1.286  -2.096   17.854  <-->  18.488
0.9   16.827 -1.009    16.977 -1.089  |   16.235  -1.838  -2.770   17.362  <-->  18.393
1.0   18.661 -1.118    18.831 -1.168  |   17.890  -2.477  -3.476   16.762  <-->  18.287

Ma trận của tôi ở đây:

Điều gì gây ra sự bổ sung này trong mỗi dấu thời gian cho giật ? Có bất kỳ ma trận của tôi sai?

Điều tương tự cũng xảy ra với giải pháp đầu tiên (chỉ có 3 mô hình trạng thái) - khả năng tăng tốc không thay đổi như mong muốn.

EDIT CUỐI:

Cuối cùng tôi đã xoay sở để làm cho nó hoạt động. Tôi không chắc chắn nếu có lỗi triển khai hoặc ma trận P & Q sai.


1
Để có được câu trả lời hữu ích, bạn cần cung cấp thêm thông tin. Mô tả hệ thống. Cho chúng tôi thấy những phương trình bạn đã đặt cùng nhau.
Jim Clay

Cảm ơn bạn đã phản hồi của bạn. Tôi đã cung cấp thêm thông tin.
Primož Kralj

Xin ai đó giúp tôi với điều này - tôi cảm thấy như mình đang mất trí.
Primož Kralj

Tôi không thấy bất kỳ vấn đề rõ ràng. Có khả năng là bạn có lỗi thực hiện.
Jason R

1
@Phonon, không có cảm giác khó khăn. Tôi cảm thấy như mình đã ở trên tàu lượn siêu tốc :)
Primož Kralj

Câu trả lời:


10

Bạn sẽ không đưa ra một giả định tăng tốc liên tục trong trường hợp này. Bạn thường sẽ làm điều đó nếu bạn không có phương tiện đo gia tốc của hệ thống, nhưng bạn nói rằng nó có thể quan sát được cho trường hợp của bạn. Cách rõ ràng nhất để mô hình hóa hệ thống này là sử dụng vectơ trạng thái

xk= =[xkx˙kx¨k]= =[xkvkmộtk]

xkvkmộtkkzk

zk= =Hxk+vk

với

H= =[100001]

dẫn đến mô hình đo lường:

zk= =[xkmộtk]+vk

vkbạnk= =0

mộtk+1= =mộtk

xk= =[xkx˙kx¨kxk]= =[xkvkmộtkjk]

jkk

H= =[10000010]

Và ma trận chuyển trạng thái sẽ trở thành:

F= =[1dt12dt216dt301dt12dt2001dt0001]

Đây là mô hình "giật liên tục" (tương tự như các mô hình gia tốc không đổi hoặc gia tốc không đổi mà bạn có thể thấy trong các ví dụ đơn giản); ma trận chuyển trạng thái của bạn đưa ra một giả định ngầm định rằng độ giật là hằng số cho tất cả các giá trị của k. Điều này không có khả năng là đúng. Để xử lý khía cạnh đó của vấn đề, bạn sẽ đưa ra thuật ngữ nhiễu quá trình trong thành phần giật của phương trình chuyển trạng thái.

Về mặt định tính, điều này cho phép bạn bày tỏ rằng bạn không chắc chắn thuật ngữ giật sẽ thay đổi theo từng bước như thế nào, nhưng bạn mong đợi các thay đổi là ngẫu nhiên với một số phân phối Gaussian. Đây là một công cụ thường được sử dụng để "điều chỉnh" các mô hình bộ lọc thích ứng như thế này cho đến khi bạn tìm thấy một bộ tham số hoạt động tốt cho ứng dụng của mình.


Cảm ơn bạn, bạn thực sự thắp một ngọn đèn trong đầu tôi. Nhưng tôi vẫn không nắm bắt được khả năng tăng tốc của mình sẽ là gì trong bước tiếp theo (nếu không phải là hằng số) - điều này rất quan trọng để xây dựng ma trận chuyển tiếp A, hàng cuối cùng phải chính xác. Bạn muốn đề nghị gì?
Primož Kralj

Có một mớ hỗn độn với các câu hỏi di chuyển. Một phần câu trả lời của bạn đã biến mất. Tôi hy vọng mod sửa chữa điều này. Ngoài ra, hãy nhìn vào Bổ sung 2 trong câu hỏi ban đầu của tôi.
Primož Kralj

2
Tôi đã có thể khôi phục văn bản đã chỉnh sửa và áp dụng lại câu trả lời của mình.
Jason R

Bạn có thể giải thích làm thế nào để có được hiệp phương sai cho giải pháp đầu tiên (3 biến trạng thái) không? Tôi không thể tìm thấy một liên kết trực tuyến tốt mà sẽ giải thích nó kỹ lưỡng trong thực tế.
Primož Kralj

4

Q

Q

Q= =[0,0000100000,0000100000,0000100000,001]

Nếu các phần tử đường chéo này bằng 0, mô hình sẽ nói "Tôi không mong đợi vị trí, vận tốc hoặc gia tốc thay đổi (ngoài các phương trình cập nhật)" --- rõ ràng không phải là trường hợp.


Giải thích hay - nhưng tại sao chọn 0,001, tại sao không phải là 2,84 chẳng hạn?
Primož Kralj

Cảm ơn! Lý do chọn 0,00001 trên 2,84: Chà, 2,84 là RẤT lớn cho một phương sai. Tôi giả định rằng bạn có một lý do hợp lệ đằng sau số giật (0,001), và các số khác nên nhỏ hơn đáng kể so với số này. Nếu không có lý do thực sự để chọn số giật, hãy thử cùng một giá trị trong tất cả các yếu tố đường chéo.
Peter K.

Nhưng điều này có ý nghĩa gì trong thực tế? Nếu tôi nói cảm biến vị trí của tôi có 0,00001 phương sai (phần tử đầu tiên trong ma trận Q) thì điều đó có nghĩa là sai lầm của nó là + - 0,00001 mét chẳng hạn (tôi đoán là không)? Tôi đoán bạn chọn phương sai nhỏ hơn cho cảm biến chính xác hơn (vị trí) và phương sai lớn hơn cho cảm biến có độ chính xác thấp hơn (gia tốc).
Primož Kralj

3
0,000010,000010,0000120,00001

Cảm ơn cả hai, tôi hy vọng chủ đề này cũng sẽ giúp khách truy cập trong tương lai.
Primož Kralj

1

Tôi nghĩ vấn đề là ở Q. Q đang sạc K với giá trị của chúng. Tôi đạt được kết quả tốt khi Q được tải sẵn với sức mạnh của delta_t.

Xem bất kỳ bài viết về mô hình wiener. Nó có một ma trận Q tốt.

A00 phải là nhiều công suất delta_t của 5 A11 công suất delta_t của 3 A22 công suất delta_t của 1 A01 nhiều công suất delta_t của 4

Và như thế

Nhìn vào

https://www.googleurururur

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.