Визначення часу польоту світла
Лідар (Light Detection and Ranging) вимірює відстань, тимлючи час повернення лазерного імпульсу до поверхні та назад. Оскільки світло подорожує приблизно зі швидкістю 3×10⁸ м/с, електроніка таймінгу потребує точності на пікосекунди для розрізнення відстаней у сантиметри – час повернення до стіни на відстані 15 метрів становить лише близько 100 наносекунд. Обертальна 2D система постійно обертає цю систему вимірювання, створюючи тисячі імпульсів за секунду під трохи різними кутами, і кожен повернутий діапазон у поєднанні з кутом запуску стає однією точкою в скануванні 360°.
distance = c · t_roundtrip / 2 c = speed of light ≈ 3×10⁸ m/s t_roundtrip = time between pulse emission and detected return
Ray marching і точковий хід
У симуляційному або програмному забезпеченні LiDAR, фізичне вимірювання часу замінюється геометрією: кожен промінь (або аналітично пересікається) віддаляється від датчика доти, поки не зустріне найближчий об'єкт, точно відтворюючи те, що повідомляє про повернення реального променя. Координата кінця кожного променя — конвертована з місцевих полярних координат (кут, дальність) датчика у декартові координати світу за допомогою положення та напрямку датчика — стає однією точкою в хмарці точок, необробленим розсипом зразків поверхні без явного зв’язку між ними.
Від точок до сітки: карта зайнятості
Одиночна хмара точок є шумною та розрідженою — справжні сенсори можуть помилятися, відбиватися від скла або фіксувати рухому перешкоду. Роботи ж накопичують скани в карту зайнятості: середовище розділене на невеликі комірки, кожна з яких містить переконання про те, чи вона вільна чи зайнята. Один промінь надає двох видів доказів одночасно — його кінець є ймовірним об’єктом зайнятості, а кожна комірка, через яку він пройшов у дорозі туди, за визначенням, була достатньо вільна для того, щоб промінь досягнув кінця, отже ці комірки є доказом вільного простору.
Лог-шанси: об’єднання доказів дешево
Об’єднання повторних, незалежних, шумливих спостережень однієї клітинки з використанням теореми Байєса прямо означає множення ймовірностей — це математично незручно та повільно. Стандартна техніка, яка використовується практично в кожній системі картографування від початкового планування Ельфа (1989), полягає у відстеженні лог-шансу кожної клітинки, оскільки оновлення Байєса в просторі лог-шансів спрощується до простого додавання:
l(клітинка) = log( p(зайнята) / (1 − p(зайнята)))
на промені, що проходить через клітинку з вільною областю: l += l_free (l_free < 0)
коли промінь закінчується (попадає) в кінцеву клітинку: l += l_hit (l_hit > 0)
відновити ймовірність будь-коли: p = 1 / (1 + e^(−l))
Кожне нове сканування просто додає невелике додатне або від’ємне значення до суми всіх клітинок, які це впливають. Клітинки, які повторно бачать вільну область, схиляються до сильно негативних лог-шансів (впевнено вільні); клітинки, які повторно потрапляють на кінцеві точки променів, стають позитивними (впевнено зайняті); клітинки, які рідко спостерігаються, залишаються близько нуля (невідомо). Оскільки це є аддитивним і зворотним, ця схема природним чином дозволяє клітинці перемикатися з зайнятої назад у вільну, якщо змінюється середовище — стіл рухається, двері відкриваються — без будь-яких спеціальних випадків логіки.
l(cell) = log( p(occupied) / (1 − p(occupied)) ) on a ray passing through a free cell: l += l_free (l_free < 0) on a ray ending (hit) at the endpoint cell: l += l_hit (l_hit > 0) recover probability any time: p = 1 / (1 + e^(−l))
Frequently asked questions
Як LiDAR фактично вимірює відстань?
Більшість обертових 2D LiDAR пристроїв використовують час польоту: вони випромінюють лазерний імпульс і вимірюють час, поки його відбиття повертається, а потім перетворюють цей час на відстань за допомогою швидкості світла: відстань = c * час / 2. Деякі короткодальності пристрої замість цього вимірюють фазовий зсув безперервно модулятованого променя, обмінюючи максимальну дальність на кращу роздільність на коротких відстанях.
Чому сітка зайнятості використовує лог-шанси замість прямих ймовірностей?
Лог-шанси перетворюють баєсівське оновлення з повторного множення ймовірностей, що є чисельно нестабільним і повільним, на просте додавання — доказ кожного нового променя просто додається до значення лог-шансів клітинки. Це також природно обробляє конфліктуючі докази з часом: клітини поступово накопичують впевненість і можуть повернутися з зайнятої на вільну, якщо достатньо нових спостережень щодо вільного простору, що точно відповідає поведінці, яку ви хочете, коли меблі в кімнаті рухаються.
Чому клітинки вздовж лазерного променя позначаються як вільні, а не лише кінцевою точкою?
Повернуте вимірювання дальності повідомляє дві речі одночасно: кінцева точка, ймовірно, зайнята, і кожна клітинка, яку проходив промінь до цієї точки кінця, повинна була бути не заблокованою, або лазер відбився раніше. Позначення всього променя, а не лише його кінчика, дозволяє кільком сканам очистити великі відкриті зони замість того, щоб вони залишалися постійно невідомими.
Спробуйте наживо
Усе, що вище, працює прямо у вашому браузері — відкрийте LiDAR Scanning і змінюйте параметри під час роботи. Нічого не встановлюється, нічого не завантажується на сервер, уся модель живе в одній вкладці.
▶ Відкрити симуляцію LiDAR Scanning