PID контроль: основний робот зворотного зв’язку
Підтримка автомобіля в смузі руху є класичною проблемою зворотного зв’язку: вимірюється помилка (наскільки автомобіль відхилений від центру смуги), і керування кермом безперервно коригується, щоб зменшити цю помилку до нуля. PID-контролер — пропорційний, інтегральний, похідний — обчислює корекцію кермового управління як зважену суму трьох членів, кожен з яких реагує на різні аспекти сигналу помилки:
помилка = відхилення від центру смуги керування = Kp * похибка // P: реагує на поточну похибку + Ki * інтегрована(похибка dt) // I: усуває постійний зміщене положення + Kd * d(похибка)/dt // D: згладжує коливання, реагує на тенденцію жива демонстрація · підтримка смуги руху PID з реактивним об’їжджанням перешкод● LIVE Якщо б автомобіль мав нульову масу та нескінченну чутливість, то термін P сам по собі був би достатнім. Однак реальне керування кермом має інерцію та затримку: чистий контролер тільки з терміном P, залишений на місці, схильний або недостатньо реагувати (підтікати, відхилятися від центру на поворотах), або коливатися, якщо його сильно натиснути. Термін D передбачає, куди рухається похибка, і гальмує корекцію перед тим, як вона перекосить. Це робить добре налаштований PID-цикл плавним, а не ривковим. Термін I менш важливий для підтримки смуги руху (зазвичай немає постійної похибки, яку потрібно усунути), але є необхідним в загальному наборі інструментів PID для таких проблем, як регулювання швидкості автомобіля під нахилом, де контролер тільки з терміном P встановлюється в постійну похибку швидкості.
error = lane_center_offset
steer = Kp * error // P: react to current error
+ Ki * integral(error dt) // I: cancel steady-state bias
+ Kd * d(error)/dt // D: damp oscillation, react to trend
Визначення центру смуги руху за допомогою променів
Для обчислення похибки центру смуги руху спочатку автомобіль створює промінь, що випроставляється з центру, і вимірює точку перетину кожного променя з межею дороги або розміткою смуги руху – такий самий метод використовується у 2D іграх для моделювання видимості та симуляції датчиків. Зазвичай достатньо одного короткого прямого променя вперед і пари нахилених променів вліво та вправо: порівняння відстаней до лівого та правого країв дає бокову зміщення безпосередньо, а порівняння кута найближчого сегменту краю з напрямком автомобіля дає член D для похибки нахилу.
Час зіткнення: коли гальмувати чи змінювати смугу руху
Самостійне утримання на смузі не зупиняє автомобіль від зіткнення з чимось у власному смузі, тому що паралельно працює реактивна шарка, яка спостерігає за переднім променем для виявлення перешкод та обчислює час до зіткнення (TTC) замість простої відстані:
TTC = відстань до перешкоди / швидкість наближення Якщо TTC, TTC є правильною величиною, ніж проста відстань, оскільки вона враховує відносну швидкість: автомобіль на відстані 40 метрів попереду, але з великою швидкістю наближення, набагато більш терміновий, ніж нерухома перешкода в 15 метрах, до якої автомобіль ледь підходить, і гальмування або рішення про зміну смуги руху, що базуються лише на відстані, або занадто рано гальмувати у повільно закриваючомуся просторі, або надто пізно у швидко закриваючомуся просторі. Реальні розширені системи допомоги водієві (попередня аварійне попередження, автоматичне екстрене гальмування) використовують TTC як основний тригер саме з цієї причини.
TTC = distance_to_obstacle / closing_speed if TTC < braking_threshold: apply brakes proportional to 1/TTC if TTC < lane_change_threshold and a gap exists: steer to change lane
Чому дві шари замість одного
Утримання смуги та запобігання зіткненням підтримуються окремими контролерами, а не об’єднані в один, оскільки вони працюють з різних часових масштабів і мають різні режими відмов: PID утримання смуги є плавним, безперервним, низькопріоритетним коригуванням, тоді як промінь виявляє неминучу зіткнення повинен негайно перекрити його та вжити рішучих заходів. Розділення шарів — така сама архітектура, що використовується в реальних автономних системах водіння, де шар планування встановлює плавний призначений курс, а швидший реактивний шар безпеки дозволяє порушити цей план, коли час до зіткнення падає нижче жорсткого порогу.
Часті запитання
Що роблять терміни P, I та D у системі керування PID?
P реагує пропорційно до поточного збігу з лінією – це основна корекційна сила. D реагує на швидкість зміни помилки, що прогнозує та гасить перекос, щоб автомобіль не коливався по лінії. I накопичує минулі помилки в часі для скасування будь-якого постійного відхилення, хоча для утримання в смузі P і D зазвичай виконують більшу частину роботи.
Що таке час до зіткнення (time-to-collision) та чому його використовують замість прямої відстані?
TTC = відстань поділена на швидкість зближення. Він відображає терміновість таким чином, як не може це зробити пряма відстань: перешкода далеко від вас, але швидко наближається, може вимагати гальмування раніше, ніж близька, але повільно наближаючася. Реальні системи попередження про зіткнення та автоматичного екстреного гальмування використовують TTC як основний тригер саме з цієї причини.
Чому поєднувати утримання в смузі PID з окремим реактивним шаром уникнення?
Бо ці дві проблеми працюють на різних часових масштабах: утримання в смузі – це плавне, безперервне, низько-термінове коригування, а уникнення зіткнень потребує здатності негайно та рішуче перекривати цей плавний контроль, коли час до зіткнення падає нижче безпечного порогу. Розкладка спокійної базової контрольної системи під швидку реактивну захисну систему відображає архітектуру реальних автономних систем водіння.
Спробуйте наживо
Усе, що вище, працює прямо у вашому браузері — відкрийте Self-Driving Car і змінюйте параметри під час роботи. Нічого не встановлюється, нічого не завантажується на сервер, уся модель живе в одній вкладці.
▶ Відкрити симуляцію Self-Driving Car