Добивки:
- Способност да се конструира логика на спојување (интегратор/Калман филтер) што комбинира податоци од IMU, енкодер и сензор за растојание со AI
- Способност да се конфигурираат и интерпретираат струи на податоци за IoT базирани на MQTT и телеметрија со помош на AI
- Способност за откривање и корекција на бучавата на сензорот, калибрацијата и синхронизацијата на времето во излезот со вештачка интелигенција
Ниту еден сензор не е совршен. Жироскопот е многу прецизен на краток рок, но се движи со текот на времето. Акцелерометарот е стабилен на долг рок, но добива бучава од вибрации. Кодерот прецизно ја мери положбата, но не е во ред кога има лизгање. GPS работи на широк простор, но е ниска фреквенција и бучен. Инженерот за мехатроника треба да произведе единствена, сигурна вистина од овие несовршени сензори; Ова е фузија на сензори. Покрај тоа, во современите системи, овие податоци не само што остануваат локални, туку се влеваат во облак и контролни центри преку IoT мрежите. Вештачката интелигенција е моќна помош и за поставување алгоритми за фузија и за конфигурирање и толкување на IoT телеметријата. Во оваа единица, го покриваме комплементарниот филтер, логиката на филтерот Калман и како да поставите проток на IoT базиран на MQTT со вештачка интелигенција и замки за шум и синхронизација.
Зошто фузија на сензори?
Секој сензор има „зона на добра фреквенција“. Целта на фузијата е да се користи секој сензор во областа каде што е силен и да се поддржи со другиот во областа каде што е слаб.
сензор
силна точка
слабост
жироскоп
Краткорочна аголна брзина, брз одговор
Лебдат со текот на времето
акцелерометар
Долгорочна референца за наклон (гравитација)
Вибрации/бучни при движење
енкодер
Локација со висока резолуција
Грешка во лизгање/повратен удар
GPS
апсолутна позиција
Ниска фреквенција, бучава, без затворен простор
Потпирањето на еден сензор ја воведува слабоста на тој сензор во системот. Фузијата, на пример, го комбинира брзиот, но движечки агол на жироскопот со бавната, но стабилна референца на акцелерометарот, давајќи агол кој е и брз и без наноси.
Дополнителен филтер
Наједноставната и најчеста фузија е комплементарниот филтер. Идејата е интуитивна: верувајте му на жироскопот на висока фреквенција (брза промена), на акцелерометарот на ниска фреквенција (бавен, стабилен). Резиме во една линија:
# Дополнителен филтер: проценка на болка (точина) # алфа ~ 0,98 : повеќе до жироскопот, помалку до акцелерометарот (степени/сек) acceleration_age : агол пресметан од акцелерометар (степени) dt : период на земање примероци (сек) """ алфа * gyro_pace + (1 - alpha) * acceleration_angle# Логика за верификација: чист жироскоп (наноси) ако алфа=1, # ако алфа=0 чист акцелерометар (шумен).
Коефициентот алфа овде ја одредува рамнотежата: ако е блиску до 1, се потпира на жироскопот (ризикот од дрифт се зголемува), ако е блиску до 0, се потпира на акцелерометарот (шумот се зголемува). Типичната вредност е 0,95-0,98. AI може да ја предложи оваа вредност, но точната алфа зависи од брзината на примерокот и карактерот на бучава на вашиот систем; се поставува експериментално.
Совет: Кога печатите интегрален филтер на AI, задолжително прашајте како се мери dt. Повеќето грешки доаѓаат од претпоставката дека dt е константна, но во реалноста времето на циклус варира. Измерете го dt real со millis()/временски печат, не пишувајте константи.
Логика за филтер Калман
Дополнителниот филтер е едноставен, но не ја моделира статистиката за бучава. Калман филтерот произведува оптимална (под одредени претпоставки) проценка со веројатностично моделирање на бучавата на сензорот и несигурноста на процесот. Работи во два чекора:
- Предвиди: Предвиди ја следната ситуација и нејзината несигурност со системскиот модел.
- Ажурирање: Измерете го новото мерење наспроти веродостојноста на мерењето (Калман засилување) и поправете ја проценката.
Kalman gain K автоматски одговара на прашањето „дали повеќе да му верувам на мерењето или на моделот“ на секој чекор. Ако мерниот шум е голем, K станува помал (доверба во моделот), ако несигурноста на процесот е голема, K станува поголема (доверба во мерењето). AI лесно запишува еднодимензионален филтер Калман; но ваша работа е правилно да ги изберете коваријансите на бучавата (`Q`, `R`) и тие доаѓаат од вистинскиот шум на системот.
Внимание: вредностите Q (процесен шум) и R (мерен шум) дадени од AI се примерок/место. Ако не ги одредите овие од реалните мерни шумови на системот (на пр. варијансата измерена кога сензорот е во мирување), филтерот ќе биде или премногу бавен или премногу бучен. Не верувајте во коваријансите дадени од ВИ како „вистинска вредност“.
Тек на податоци на IoT: MQTT и телеметрија
Чистите податоци што ги произведувате со фузија обично се транспортираат до центарот преку IoT мрежа. Најчестиот протокол во индустријата е MQTT: лесен, модел за објавување-претплати, погоден за низок пропусен опсег. AI брзо воспоставува MQTT код на издавач/претплатник и шема за телеметрија JSON.
увоз json, timeimport paho.mqtt.client as mqttclient = mqtt.Client()client.connect("broker.local", 1883, keepalive=60)def telemetry_broadcast(температура, температура, вибрации_rms): порака = { "ts": time.time condition (), # заокружена временска состојба () 2), "temperature_c": круг(температура, 1), "vibration_rms": круг (temperature_rms, 3), "един qos=1: испорачана барем еднаш. Користење qos=0 (може да се изгуби) на критични податоци.
Овде се важни две инженерски одлуки: (1) временски печат (ts) на секоја порака - различни сензори се земаат примероци во различно време, синхронизацијата е можна само со временски печат; (2) QoS ниво - критичните податоци користат најмалку qos=1 (доставено барем еднаш), qos=0 дозволува губење на пораката.
Шум, калибрација и синхронизација
Без разлика колку е добра фузијата, три проблеми со влезот го нарушуваат резултатот:
- Шум: ако необработените податоци од сензорот преминат во фузија без да се филтрираат, излезот од фузијата исто така ќе биде бучен. Може да биде потребно претходно филтрирање (средна, ниска пропустливост).
- Калибрација: Грешките за поместување и скала (на пр. нултата точка на акцелерометарот е поместена) систематски ја доведуваат во заблуда фузијата. Сензорите мора да се калибрираат пред употреба.
- Синхронизација на времето: Потребно е временско печатење и интерполација за усогласување на сензорите земени со различни стапки (на пр. GPS од 10 Hz со IMU од 1 kHz).
AI може да ги додаде овие чекори во кодот, но дали секој е потребен и неговите параметри се специфични за вашиот систем. На излезот за вештачка интелигенција "каде е калибрацијата?" и „Дали временските печати се порамнети?“ Бидете сигурни да поставувате прашања.
Слаба навестување / Силен навестување
СЛАБ: „Пресметај го аголот од податоците на IMU.“ (Кој филтер? се постапува со дрифтот? Како dt? Нејасно.) СИЛНО: „Комбинирајте ги податоците од акцелерометарот и жироскопот од MPU6050 со интегралниот филтер и проценете го аголот на чекорот. Пресметајте dt од реалниот временски печат, не претпоставувајте го константа. tane2 Филтрирајте како запишување како класа, задржете го претходниот агол, додадете опционален среден предфилтер за шум.
Мини случај
Инженерот за роботика Селин сака дополнителен филтер од вештачката интелигенција за проценка на аголот на робот за балансирање со две тркала. Вештачката интелигенција дава чист код, но роботот полека се наведнува на едната страна. Селин го проверува dt: кодот претпоставува дека dt е константен 0,01 s, додека времето на циклус варира поради Bluetooth телеметријата. Кога dt се пресметува од реалниот временски печат, дрифтот се намалува, но не исчезнува целосно. Потоа гледа во калибрацијата на акцелерометарот; Дури и кога сензорот е неподвижен, има поместување од 2°. Кога ќе го отстранам поместувањето на калибрацијата, роботот стои исправено. Конечно, забележува дека користи qos=0 кога емитува телеметрија преку MQTT и ја зголемува на qos=1 за податоци од критичниот агол. Вештачката интелигенција испорача фузија скелет за неколку минути; но верификацијата на инженерот фати три проблеми специфични за системот: променлива dt, офсет на калибрација и QoS.
Вообичаени грешки
- Претпоставувајќи дека dt е константен, додека времето на циклусот варира (фузија наноси).
- Спојување на сензори без нивно калибрирање (систематско поместување).
- Обидувајќи се да ги порамните сензорите со различни брзини без временски печат.
- Оставајќи ја вредноста на примерокот на AI без мерење на коваријансите на Kalman Q/R од реалниот шум.
- Дозволете губење на пораката со користење qos=0 на критичните податоци за IoT.
- Давање необработени бучни податоци за фузија без претходно филтрирање.
Сумирано
- Fusion го користи секој сензор во фреквентниот регион каде што е силен и компензира за неговата слабост.
- Филтерот за дополнување е едноставен; Воспоставува рамнотежа на жироскоп-акцелерометар со алфа.
- Калман филтерот веројатно го моделира шумот; Q/R доаѓа од реалниот систем.
- Во MQTT телеметријата, временскиот печат и соодветниот QoS се критични инженерски одлуки.
- Бучавата, калибрацијата и синхронизацијата на времето го одредуваат квалитетот на фузијата.
- dt се мери од реално време; калибрацијата и QoS се проверуваат без да се препуштат на вештачката интелигенција.
Задача за апликација
За IMU (вистински или симулирани податоци за жиро + акцелерометар) вештачката интелигенција нека го генерира интегралниот филтер и проверете дали dt е пресметан од реалниот временски печат. Потоа: (1) обидете се со алфа за 0,90, 0,98 и 1,0 и набљудувајте го балансот на дрифтот и бучавата, (2) додадете намерно фиксно поместување (грешка при калибрација) на сензорот и видете како се движи излезот од фузијата, (3) конвертирате ги податоците во шемата MQTT JSON и додајте временски печат и полиња за единици. Забележете која алфа вредност дава најизбалансиран резултат за вашите податоци и колку офсетот на калибрација го искривува излезот.