Hai điều.
Nếu bạn có kế hoạch thực hiện ánh xạ, bạn cần một Thuật toán Bản đồ hóa và Bản đồ hóa đồng thời (SLAM) chính thức. Xem: Bản đồ hóa và Bản đồ hóa đồng thời (SLAM): Phần I Các thuật toán cần thiết . Trong SLAM, ước tính trạng thái robot chỉ là một nửa vấn đề. Làm thế nào để làm điều đó là một câu hỏi lớn hơn có thể được trả lời ở đây.
Về nội địa hóa (ước tính trạng thái của robot), đây không phải là công việc cho Bộ lọc Kalman. Sự chuyển đổi từ
sang x ( t + 1 )x(t)=[x,y,x˙,y˙,θ,θ˙]x(t+1)không phải là một hàm tuyến tính do gia tốc và vận tốc góc. Do đó, bạn cần xem xét các công cụ ước tính phi tuyến tính cho nhiệm vụ này. Vâng, có những cách tiêu chuẩn để làm điều này. Vâng, chúng có sẵn trong văn học. Có, thông thường tất cả các đầu vào được đưa vào cùng một bộ lọc. Vị trí, vận tốc, định hướng và tốc độ góc của robot được sử dụng làm đầu ra. Và có, tôi sẽ giới thiệu ngắn gọn về các chủ đề phổ biến của họ ở đây. Các phương tiện chính là
- bao gồm thiên vị Gyro và IMU trong tiểu bang của bạn hoặc ước tính của bạn sẽ phân kỳ
- Một mở rộng Kalman Filter (EKF) thường được sử dụng cho vấn đề này
- Việc triển khai có thể bắt nguồn từ đầu và thường không cần phải "tra cứu".
- Triển khai tồn tại cho hầu hết các vấn đề nội địa hóa và SLAM, vì vậy đừng làm nhiều việc hơn bạn phải làm. Xem: Hệ điều hành Robot ROS
Bây giờ, để giải thích EKF trong bối cảnh hệ thống của bạn. Chúng tôi có IMU + Gyro, GPS và đo hình. Các robot trong câu hỏi là một ổ đĩa vi sai như đã đề cập. Nhiệm vụ lọc là để có những ước tính tư thế hiện tại của robot
x t , đầu vào kiểm soát u t , và các số đo từ mỗi cảm biến, z t , và sản xuất ước tính ở bước tiếp theo thời gian
x t + 1 . Chúng tôi sẽ gọi các phép đo IMU là I t , GPS là G t và đo hình, O t .x^tutztx^t+1ItGtOt
Tôi cho rằng chúng ta đang quan tâm đến việc đánh giá các tư thế robot như
. Vấn đề với IMU và Gyros là trôi dạt. Có sự thiên vị không cố định trong các gia tốc mà bạn phải tính đến trong EKF. Điều này được thực hiện (thường) bằng cách đưa sự thiên vị vào trạng thái ước tính. Điều này cho phép bạn ước tính trực tiếp độ lệch ở mỗi bước thời gian.
x t = x , y , ˙ x , ˙ y , θ , ˙ θ , bxt=x,y,x˙,y˙,θ,θ˙xt=x,y,x˙,y˙,θ,θ˙,b, cho một vectơ sai lệch .b
Tôi đang giả sử:
- = hai phép đo khoảng cách đại diện cho quãng đường mà các bước đã đi trong một khoảng thời gian nhỏOt
- = ba phép đo định hướng alpha , β , θ và số đo ba accelleration ¨ x , ¨ y , ¨ z .Itα,β,θx¨,y¨,z¨
- = vị trí của robot trongkhungtoàn cầu,
G x t , G y t .GtGxt,Gyt
Thông thường, kết quả của các đầu vào điều khiển (tốc độ mong muốn cho từng rãnh) rất khó ánh xạ tới các đầu ra (sự thay đổi trong tư thế của robot). Thay cho , người ta thường sử dụng (xem Thrun , Câu hỏi trắc nghiệm ) để sử dụng phép đo hình học làm "kết quả" của điều khiển. Giả định này hoạt động tốt khi bạn không ở trên bề mặt gần như không ma sát. IMU và GPS có thể giúp khắc phục tình trạng trượt, như chúng ta sẽ thấy.u
Vì vậy, nhiệm vụ đầu tiên là để dự đoán trạng thái tiếp theo từ trạng thái hiện
. Trong trường hợp robot điều khiển vi sai, dự đoán này có thể được lấy trực tiếp từ tài liệu (xem Trên Động học của Robot di động có bánh xe hoặc cách xử lý ngắn gọn hơn trong bất kỳ sách giáo khoa về robot hiện đại nào), hoặc xuất phát từ đầu như được nêu ở đây: Câu hỏi hình học .x^t+1=f(x^t,ut)
Vì vậy, bây giờ chúng ta có thể dự đoán x t + 1 = f ( x t , O t ) . Đây là bước tuyên truyền hoặc dự đoán. Bạn có thể vận hành một robot bằng cách đơn giản là tuyên truyền. Nếu các giá trị O t là hoàn toàn chính xác, bạn sẽ không bao giờ có một ước tính x mà không chính xác bằng trạng thái thực sự của bạn. Điều này không bao giờ xảy ra trong thực tế.x^t+1=f(x^t,Ot)Otx^
Điều này chỉ đưa ra một giá trị dự đoán từ ước tính trước đó và không cho chúng tôi biết độ chính xác của ước tính giảm theo thời gian như thế nào. Vì vậy, để truyền bá độ không đảm bảo, bạn phải sử dụng các phương trình EKF (truyền các độ không đảm bảo ở dạng đóng theo giả định nhiễu Gaussian), bộ lọc hạt (sử dụng phương pháp lấy mẫu) *, UKF (sử dụng phương pháp lấy điểm xấp xỉ độ không đảm bảo), hoặc một trong nhiều biến thể khác.
Trong trường hợp của EKF, chúng tôi tiến hành như sau. Gọi là ma trận hiệp phương sai của trạng thái robot. Chúng tôi tuyến tính hóa hàm f
bằng cách sử dụng mở rộng chuỗi Taylor để có được một hệ thống tuyến tính. Một hệ thống tuyến tính có thể được giải quyết dễ dàng bằng Bộ lọc Kalman. Giả sử hiệp phương sai của ước lượng tại thời điểm t là P t và hiệp phương sai giả định của nhiễu trong phép đo được đưa ra dưới dạng ma trận U t
(thường là ma trận 2 × 2 chéo , như .1 × I 2 × 2 ). Trong trường hợp của hàm f , chúng ta có được JacobianPtftPtUt2×2.1×I2×2f
vàFu=∂fFx=∂f∂x , sau đó tuyên truyền sự không chắc chắn là,Fu=∂f∂u
Pt+1=Fx∗Pt∗FTx+Fu∗Ut∗FTu
Bây giờ chúng ta có thể tuyên truyền ước tính và sự không chắc chắn. Lưu ý sự không chắc chắn sẽ tăng đơn điệu theo thời gian. Điều này được mong đợi. Để khắc phục điều này, những gì thường được thực hiện, là sử dụng và G t để cập nhật trạng thái dự đoán. Đây được gọi là bước đo lường của quá trình lọc, vì các cảm biến cung cấp một phép đo gián tiếp về trạng thái của robot.ItGt
hg()hi()RRgRih
szs
vs=zs−hs(x^t+1)
Ss=Hs∗Pt+1∗HTs+Rs
K=Pt+1∗HTsS−1s
x^t+1=x^t+1−K∗v
Pt+1=(I−K∗Hs)∗Pt+1
In the case of GPS, the measurement zg=hg() it is probably just a
transformation from latitude and longitude to the local frame of the
robot, so the Jacobian Hg will be nearly Identity. Rg is
reported directly by the GPS unit in most cases.
In the case of the IMU+Gyro, the function zi=hi() is an integration of
accelerations, and an additive bias term. One way to handle the IMU is
to numerically integrate the accelerations to find a position and
velocity estimate at the desired time. If your IMU has a small
additive noise term pi for each acceleration estimate, then you
must integrate this noise to find the accuracy of the position
estimate. Then the covariance Ri is the integration of all the
small additive noise terms, pi. Incorporating the update for the
bias is more difficult, and out of my expertise. However, since you are interested in planar motion, you can probably simplify the problem.
You'll have to look in literature for this.
Some off-the-top-of-my-head references:
Improving the Accuracy of EKF-Based Visual-Inertial
Odometry
Observability-based Consistent EKF Estimators for Multi-robot
Cooperative
Localization
Adaptive two-stage EKF for INS-GPS loosely coupled system with
unknown fault bias
This field is mature enough that google (scholar) could probably find
you a working implementation. If you are going to be doing a lot of
work in this area, I recommend you pick up a solid textbook. Maybe
something like Probablistic Robotics by S. Thrun of Google Car fame.
(I've found it a useful reference for those late-night
implementations).
*There are several PF-based estimators available in the
Robot Operating System (ROS). However, these have
been optimized for indoor use. Particle filters deal with the
multi-modal PDFs which can result from map-based localization (am I
near this door or that door). I believe most outdoor
implementations (especially those that can use GPS, at least
intermittently) use the Extended Kalman Filter (EKF). I've
successfully used the Extended Kalman Filter for an outdoor, ground
rover with differential drive.