Дві речі.
Якщо ви плануєте робити карти, вам потрібен повноцінний алгоритм одночасної локалізації та картографування (SLAM). Див.: Одночасна локалізація та картографування (SLAM): частина I Основні алгоритми . У SLAM оцінка стану робота - це лише половина проблеми. Як це зробити - питання більші, ніж можна відповісти тут.
Що стосується локалізації (оцінка стану робота), це не фільтр для Kalman Filter. Перехід від
до x ( t + 1 )x(t)=[x,y,x˙,y˙,θ,θ˙]x(t+1)не є лінійною функцією внаслідок кутових прискорень та швидкостей. Тому для цього завдання потрібно розглянути нелінійні оцінки. Так, є стандартні способи зробити це. Так, вони доступні в літературі. Так, зазвичай всі входи складаються в один і той же фільтр. Положення, швидкість, орієнтація та кутова швидкість роботи використовуються як вихідні. І так, я наведу тут короткий вступ до їх загальних тем. Основні прийоми є
- включіть упередження щодо гіроскопа та ВНУ у вашій державі, або ваші оцінки розходяться
- Для цієї проблеми зазвичай використовується розширений фільтр Kalman (EKF)
- Реалізація може бути отримана з нуля, і їх взагалі не потрібно "шукати".
- Реалізатори існують для більшості проблем локалізації та SLAM, тому не робіть більше роботи, ніж вам доведеться. Див.: Робоча операційна система ROS
Тепер, щоб пояснити EKF в контексті вашої системи. У нас є IMU + гіроскоп, GPS та одометрія. Робот, про який йде мова, є диференційованим приводом, як згадувалося. Фільтрації завдання полягає в тому, щоб прийняти поточну оцінку позу робота
х т , керуючих входів у т і вимірювань від кожного датчика, г т , і зробити оцінку на наступному часовому кроці
х т + 1 . Ми будемо називати вимірювання IMU I t , GPS - G t , а одометрія - O t .x^tutztx^t+1ItGtOt
Я припускаю, що ми зацікавлені в оцінці пози робота як
. Проблема з IMU та Gyros - це дрейф. Існує нестаціонарний ухил у прискореннях, які необхідно враховувати в EKF. Це робиться (як правило) шляхом встановлення зміщення в оціночний стан. Це дозволяє безпосередньо оцінювати зміщення на кожному етапі часу.
x t = x , y , ˙ x , ˙ y , θ , ˙ θ , bxt=x,y,x˙,y˙,θ,θ˙xt=x,y,x˙,y˙,θ,θ˙,b, для вектора зміщення .b
Я припускаю:
- = два вимірювання відстані, що представляють відстань, яку пройдено протекторами за невеликий приріст часуOt
- = три вимірювання орієнтації α , β , θ і три вимірювання акселерації ¨ x , ¨ y , ¨ z .Itα,β,θx¨,y¨,z¨
- = положення робота вглобальномукадрі,
G x t , G y t .GtGxt,Gyt
Як правило, результат керуючих входів (бажані швидкості для кожного протектора) важко відобразити на виходи (зміна пози робота). Замість прийнято використовувати одометрію як "результат" контролю (див. Питання Thrun , Одометрія ). Це припущення добре працює, коли ви не знаходитесь на поверхні, що майже не має тертя. IMU та GPS можуть допомогти виправити ковзання, як ми побачимо.u
Таким чином, перше завдання полягає в тому, щоб передбачити наступний стан з поточного
. Що стосується робота з диференційованим приводом, це передбачення можна отримати безпосередньо з літератури (див. «Кінематика мобільних роботів на колесах» або більш стисле звернення в будь-якому сучасному навчальному посібнику з робототехніки), або вивести з нуля, як показано тут: Питання з одометрії .х^t + 1= f( х^т, ут)
Таким чином, тепер ми можемо передбачити х т + 1 = F ( х т , Про т ) . Це етап поширення чи прогнозування. Ви можете управляти роботом, просто розповсюджується. Якщо значення O т є абсолютно точними, ви ніколи не будете мати оцінку х , що не в точності так само ваше справжнє стан. На практиці цього ніколи не відбувається.х^t + 1= f( х^т, От)Отх^
Це дає лише передбачуване значення з попередньої оцінки, і не говорить про те, як точність оцінки з часом погіршується. Отже, для розповсюдження невизначеності необхідно використовувати рівняння EKF (які поширюють невизначеність у закритій формі при гауссових припущеннях щодо шуму), фільтр для частинок (який використовує підхід, заснований на вибірці) *, UKF (який використовує точкове визначення) наближення невизначеності) або один із багатьох інших варіантів.
ПтfтПтUт2 × 2.1 × I2 × 2f
Жх= ∂f∂хЖу= ∂f∂у
Пt + 1= Fх∗ Рт∗ FТх+ Fу∗ Uт∗ FТу
ЯтГт
годг( )годi( )RRгRiгод
сzс
vс= zс- годс( х^t + 1)
Sс= Нс∗ Рt + 1∗ НТс+ Rс
К= Рt + 1∗ НТсS- 1с
х^t + 1= х^t + 1- К∗ v
Пt + 1= ( Я- К∗ Нс) ∗ Рt + 1
zг= годг( )НгRг
zi= годi( )piRipi. Включити оновлення для зміщення складніше, і я не знаю. Однак, оскільки вас цікавить планарний рух, ви, ймовірно, можете спростити проблему. Для цього вам доведеться шукати літературу.
Деякі посилання на голову:
Підвищення точності візуально-інерціальної одометрії на основі EKF
Послідовні оцінники EKF на основі спостереження для локалізації спільної роботи з кількома роботами
Адаптивний двоступінчастий EKF для системи INS-GPS із слабким поєднанням із невідомими зміщеннями несправності
Це поле є достатньо зрілим, що Google (вчений), ймовірно, може знайти вам робочу реалізацію. Якщо ви збираєтеся зробити багато роботи в цій галузі, рекомендую вам підібрати ґрунтовний підручник. Можливо, щось на кшталт ймовірнісної робототехніки С. Thrun із Google Car Fame. (Я вважаю це корисним посиланням для тих впроваджень пізньої ночі).
* У операційній системі роботів (ROS) доступні кілька оцінок на основі ПФ
. Однак вони були оптимізовані для використання в приміщенні. Фільтри частинок мають справу з мультимодальними PDF-файлами, які можуть бути результатом локалізації на основі карт (я біля цієї двері чи тієї двері). Я вважаю, що більшість зовнішніх реалізацій (особливо тих, які можуть використовувати GPS принаймні з перервами) використовують розширений фільтр Kalman (EKF). Я успішно використовував розширений фільтр Kalman для зовнішнього наземного мотора з диференціальним приводом.