Tại sao Runge-Kutta cho tích hợp Đệ tứ trong bộ lọc Kalman?


7

Tôi đang đọc về lọc Kalman tại thời điểm này. Cụ thể, tôi quan tâm đến việc sử dụng các biến thể "mở rộng" và "không có trọng lượng" để hợp nhất và hiệu chuẩn cảm biến IMU.

Trong một so sánh về bộ lọc Kalman không tập trung và mở rộng để ước tính chuyển động bậc bốn, các bậc bốn được sử dụng để biểu diễn xoay 3d.

Tôi hiểu các bậc bốn đơn vị có thể được sử dụng để thể hiện một vòng quay 3d . Chúng phù hợp để thể hiện thái độ tuyệt đối (một vòng quay từ một tham chiếu phổ quát), xoay tương đối hoặc tốc độ góc (một tốc độ quay đại diện cho mỗi giây hoặc một số khoảng thời gian cố định khác).

Tuy nhiên, bài viết này thảo luận về việc sử dụng tích hợp Runge-Kutta , cụ thể là RK4. Nó sử dụng RK4 với các bậc bốn nhưng dường như không cung cấp chi tiết về những gì nó liên quan hoặc tại sao nó lại cần thiết. Đây là một phần của bài báo đề cập đến nó

Cho vectơ trạng thái ở bước k - 1, trước tiên chúng ta thực hiện bước dự đoán bằng cách tìm ước lượng trạng thái tiên nghiệm xˆ k bằng cách tích hợp phương trình 1 [f = dq / dt = qω / 2] qua thời gian bằng ∆t (tức là 1.0 chia cho tỷ lệ lấy mẫu hiện tại) bằng cách sử dụng sơ đồ Runge-Kutta bậc 4.

Tôi đã gặp Runge Kutta trước đây để tích hợp các vị trí trong động học. Tôi không thực sự hiểu làm thế nào hoặc tại sao nó lại cần thiết ở đây.

Cách tiếp cận ngây thơ của tôi sẽ chỉ đơn giản là nhân thái độ q hiện tại với vận tốc góc để có được q mới dự kiến ​​- Tôi không thấy tại sao tích hợp số là cần thiết ở đây? Có lẽ đó là để "chia tỷ lệ" thời gian đơn vị ω cho sự thay đổi xảy ra trong ∆t, nhưng chắc chắn điều đó có thể được thực hiện rất đơn giản bằng cách thao tác trực tiếp (nâng nó lên sức mạnh phân số ∆t)?

Có ai biết không?


1
Bài viết được viết kém từ quan điểm KF / EKF. Nó không chỉ định mô hình tín hiệu là gì, mặc dù nó ám chỉ nó khi đề cập đến phương trình 1. Ngoài ra, bản thân phương trình 1 không rõ ràng: thường là 4 vectơ và thường là 3- vectơ ... vì vậy thuật ngữ là không có chiều. qωqω
Peter K.

Xin chào @PeterK. Nó đề cập "là một vectơ thuần túy đại diện cho vận tốc góc" - Tôi cho rằng điều này có nghĩa là nó không có phần thực, hay phần thực là 0?
Stewohn

Vâng, bạn có thể đúng ... mặc dù tôi nghĩ rằng đó là thành phần không ... "thực" khi nói đến tứ phương là ... khó hiểu. :-)w
Peter K.

:-) Tôi vẫn chưa biết làm thế nào một bậc bốn vận tốc góc được lấy từ các con quay tốc độ ba trục - Tôi tự hỏi liệu điều này có thể cần một loại bước tích hợp nào không? Mặc dù vậy, nắm bắt được ống hút!
Stewohn 18/1/2016

Câu trả lời:


7

Tôi nghĩ rằng sự nhầm lẫn đến từ các tác giả không tham số hóa mọi thứ rõ ràng. Hơn nữa, bằng cách chuyển sang đại số hình học chứ không phải bậc bốn, một số nhầm lẫn bổ sung có thể được làm sáng tỏ.

Sự khác biệt chính giữa đại số vectơ bình thường và đại số hình học là chúng ta có thể nhân các vectơ. Vì vậy, , và là các vectơ cơ sở (trực giao) của chúng ta, chúng ta cũng có không phải là một vectơ mà là một bivector có thể được coi là một phần tử mặt phẳng định hướng. (Theo "vectơ thuần túy", chúng có nghĩa là một bivector; bạn đúng có nghĩa là phần và thật hợp lý khi nói nó có phần "thực".) Một thuộc tính quan trọng là các vectơ cơ sở chống lại việc đi lại với nhau , tức là . Điều này dẫn đến . Nói chung, bất kỳ bình phương bivector đơn vị đếnexeyezexey0 w0exey=eyex(exey)2=11, có nghĩa là chúng ta có thể áp dụng công thức của Euler: trong đó là một bivector đơn vị và chúng ta gọi là rôto . Một bộ tứ đơn vị chỉ là một rôto 3D. (Số phức chỉ là đại số phụ chẵn của đại số hình học 2D. Ở đây chúng tôi đang xem xét các bậc bốn, đại số chẵn của 3D GA.)

R=eθB=cosθ+Bsinθ
BR

Nếu chúng ta muốn một phép quay bằng trong mặt phẳng của một bivector đơn vị chúng ta sử dụng rôto . (Một nửa xuất hiện do chúng ta xoay vectơ qua ; xem liên kết ở trên.) Tất nhiên, chúng tôi muốn cho phép cả mặt phẳng và góc thay đổi để chúng tôi xác định bivector (không phải đơn vị) vì vậy nếu thì trong đó . Đây là ; của họ là của chúng tôi và của họθBR=eθ2BvRvR~Θ(t)=θ(t)B(t)

R(t)=e12Θ(t)
R˙(t)=12Ω(t)R(t)
Ω=Θ˙f=qω/2qRωlà của chúng tôi . Bây giờ nếu chúng ta có và chúng ta muốn chúng ta cần tích hợp từ đến .ΩR(t0)R(t0+Δt)R˙t0t0+Δt

Đề án bạn mô tả là khoảng tương tự như làm phía trước Euler hội nhập, trong đó chủ yếu giả định của họ và của chúng tôi và là hằng số trên . RK4 chỉ là một phương pháp tích hợp tốt hơn. Tôi nghi ngờ có bất kỳ lý do đặc biệt nào họ chọn sử dụng RK4 trái ngược với các phương thức tích hợp khác. Đó chỉ là sự lựa chọn mặc định.qωRΩΔt


! :-) Tôi đã chờ đợi ngày mà ai đó sẽ đích thân nói với tôi, "bằng cách chuyển sang đại số hình học thay vì tứ phương, một số nhầm lẫn khác có thể được xóa tan." Cảm ơn bạn! Tôi đã quan tâm đến GA trong một vài năm, vì vậy thật tuyệt vời khi có ai đó đưa ra một vấn đề mà tôi muốn giải quyết bằng cách sử dụng chúng! ... Đúng vậy, quan điểm của bạn về việc cải thiện trên Euler tích hợp làm cho rất nhiều ý nghĩa, nhưng: nó không cần thêm một số thông tin ngoài chỉ vị trí trước đó và vận tốc? Có lẽ cả vận tốc cũ và mới? Hoặc ngụ ý tăng tốc?
Stewohn

1
Tôi đoán là họ giữ không đổi trong khi thực hiện tích hợp. Vì có vẻ như chúng không có bất kỳ phép đo vận tốc góc nào, nên tốc độ góc chỉ thay đổi khi nó được "hiệu chỉnh" bởi bộ lọc Kalman, tức là vận tốc góc là trạng thái không quan sát được mà bộ lọc Kalman đang cố gắng tái tạo. ω
Derek Elkins rời SE

0

Để tích hợp Quancyions, phương pháp tốt nhất mà tôi biết là thuật toán SLERP và con đẻ của nó được sử dụng trong đồ họa Máy tính. Tôi đã sử dụng điều này trên dữ liệu thử nghiệm Tăng tốc tác động thử nghiệm cao và trải nghiệm độ chính xác tăng dần. Sử dụng phương pháp này, tránh việc tích lũy lỗi Chuẩn hóa liên quan đến Phương pháp Runge-Kutta thông thường. Hãy nhớ lại rằng các Đệ tứ là một hệ thống các phương trình vi phân-đại số của DAE.

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.