Які методи боротьби з компасним відставанням (залежний від швидкості гістерезис)?


12

У мене робот, керований протектором, з низькоточними кодувальниками коліс для відстеження відстані та електронним компасом для визначення курсу. Компас має значне (> 1 секунду) затримка, коли робот швидко повертається, наприклад, після досягнення точки, що обертається на місці, щоб вказувати на його новий заголовок.

Які способи подолати відставання? Я думаю, що можна зробити багато вимірювань та моделювати відповідь компаса. Однак це здається проблематичним, оскільки це залежить від ставки, і миттєвий показник не знаю.

Як простий, але повільний підхід, я маю поворот робота до тих пір, поки він не буде орієнтовно вказаний у правильному напрямку, а потім роблю дуже невеликі повороти з короткими паузами вимірювання, поки не буде вказано правильний шлях. Чи є інші способи боротьби з цим?

Відповіді:


12

Відставання в компасі відбувається через низькочастотний фільтр для придушення високочастотного шуму.

  • Існують дорожчі магнітометри, які мають менше шуму, а отже, і менші відставання.
  • Для підвищення точності також можна використовувати гіроскоп. Насправді це роблять інерційні вимірювальні одиниці (IMU). Це можна досягти за допомогою фільтра Калмана. Підвищення точності допомагає зменшити відставання, оскільки підвищена точність зменшує залежність від фільтра низьких частот для придушення шуму. Фільтр Кальмана сплавляє дані магнітометра, а також гіроскоп (який вимірює швидкість зміни заголовка).

Якщо ви дотримуєтесь свого поточного компаса, є два можливі рішення (Увага, це все більше вдосконалюється, але варіант 1 повинен бути доступний для більшості людей без надто багато роботи).

  1. Ви можете спробувати скасувати фільтр. Це може усунути відставання, але також збільшує шум високої частоти. Після цього ви можете спробувати керувати роботом на основі нової оцінки заголовка. Для цього потрібно експериментувати, щоб опрацювати параметри фільтра низьких частот. Наприклад, за дискретний час ви можете знайти:

    де θ (т)являє собою розрахунковий заголовок (вихід компаса) в момент часуТ,θ- фактичний заголовок (основна істина) в моментt.

    θ^(t)=a0θ(t)+a1θ(t1)++akθ(tk)
    θ^(t)tθt

    ain+k+1

    [θ^(k)θ^(k+n)]=[θ(k)θ(k1)θ(0)θ(k+n)θ(k+n1)θ(n)][a0a1ak]

    [a0a1ak]=[θ(k)θ(k1)θ(0)θ(k+n)θ(k+n1)θ(n)]+[θ^(k)θ^(k+n)]
    M+Mk, тож ви, мабуть, просто здогадаєтесь. Що стосується бонусних очок, це передбачає, що шум білий і незалежний, але ви можете спочатку відбілити його, щоб усунути зміщення, і, отже, покращити свою оцінку параметрів.

    Ви можете перетворити це у функцію передачі (також відому як Z-перетворення в дискретній часовій області):

    Θ^(z)Θ(z)=a0+a1z1+...+akzk

    θ¯(t)

    Θ¯(z)Θ^(z)=1a0+a1z1++akzk

    Повернення до часової області:

    a0θ¯(t)+a1θ¯(t1)++akθ¯(tk)=θ^(t)

    θ¯(t)=θ^(t)a1θ¯(t1)akθ¯(tk)a0

    θ¯

    θ¯

  2. Вищеописане рішення все ще не найкращий спосіб. Шумна оцінка може бути не дуже корисною. Якщо ми помістимо це в рівняння простору стану, ми можемо розробити фільтр Калмана та повноцінний контролер зворотного зв'язку за допомогою LQR (лінійний квадратичний регулятор). Комбінація фільтра Калмана і контролера LQR також відома як контролер LQG (лінійний квадратичний гаусс), і використовують відновлення передачі циклу, щоб отримати хороший контролер.

    Для цього придумайте рівняння стану-простору стану (дискретного часу):

    x(t)=Ax(t1)+Bu(t1)y(t)=Cx(t)

    x(t)=[θ(t)θ(t1)θ(tk)]=[A1A200010000010000010000010]x(t1)+[B0B1000]u(t1)

    y(t)=[θ^(t)]=[a0a1ak]x(t)

    u(t1)A0A1B0B1BA

    QoRo

    QcRcQc=[100000000000]Rc=[1]J=(xTQx+uTRu)

    Потім ви просто переведете це через дискретне алгебраїчне рівняння Ріккаті за часом:

    P=Q+AT(PPB(R+BTPB)1BTP)A

    P

    Таким чином, ваш закон про контроль можна надати:

    u(t)=K(x(t)xref(t))

    K=(R+BTPB)1(BTPA)

    θ¯

    Qo=Q0+q2BVBTQ0QVV=IqqQo матриця стає де-налаштованою, а значить, стає менш оптимальною.

    qRcQc

Поняття в цій публікації отримують досить просунутий характер, але якщо вам потрібно вирішити такі речі, як рівняння Ріккаті, ви можете використовувати MATLAB або інше програмне забезпечення для цього. Також можуть бути бібліотеки, які вже реалізують фільтр Кальмана (знову ж таки, я вважаю, що MATLAB це робить і).

Для вбудованого додатка вам може знадобитися самостійно реалізувати фільтр Kalman, хоча, можливо, існує реалізація C.


Дякую за відмінну та глибоку відповідь. Я дотримуюся суті вашого першого рішення, і я впевнений, що зможу це зробити. Другий, як ви кажете, є складнішим, і мені доведеться попрацювати, щоб зрозуміти, чи зможу я все це дотримуватися.
ВіденьМайк

4

Гіроскоп - це проста відповідь. Я завжди чув, гіроскоп для коротких вимірювань, компас надовго. І реально чашка фільтру каллмена між двома більшістю часу. Ціна гіроскопа / аккаунта 6DOF в ці дні становить менше 20 доларів, що занадто дешево, щоб не використовувати його.

Свого часу я працював через чужий фільтр Kallman . і він працював. Фільтр Kallman насправді є скоріше підходом, а не точною реалізацією, і у випадку гіроскопа кінцевий результат не потребує використання матричної математики. Це робить набагато простішим код.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.