Pokaždé, když můj robotický vysavač opustí dobíjecí dok v kuchyni a vyrazí na průzkum bytu, otevřu ze zvědavosti mobilní aplikaci a v živém přenosu zírám, jak kopíruje a opravuje svoji vnitřní mapu celého bytu. Zatímco ještě včera byla na souřadnicích 1426:4589 kuchyňská židle, kterou musel pečlivě obkroužit, teď už ji nevidí, protože je položená na stole, a tak dočasně poupravil svůj prostorový model.
Můj vysavač toto všechno umí díky dvěma klíčovým technologiím. V malém vrchlíku na povrchu rotuje velmi rychle LiDAR a jeho data okamžitě zpracovává výkonný procesor ve složitém algoritmu SLAM.
V dnešním pokračování našeho seriálu o programování elektroniky si takový LiDAR postavíme – jeho jednodušší 180° a pomalejší verzi.
K projektu budeme potřebovat:
- Arduino Uno nebo jinou prototypovací desku s I²C a UART
- Servomotor
- TF-Luna, VL53Lx nebo jiný laserový dálkoměr
A toto bude výsledek:
V následujících odstavcích si rozebereme, co je to vlastně LiDAR, proč používá laser, jak fungují servomotory a celé to završíme naším projektem.
Light Detection And Ranging
Ale pěkně popořadě, co je to vlastně ten LiDAR? Mluví se o něm a píše celé roky zejména v souvislosti s autonomními automobily, byť jeho historie a průmyslové použití má za sebou ještě mnohem delší historii. Jak už ale napovídá jeden z mnoha anglických rozpisů zkratky, je to zařízení pro optickou – zpravidla laserovou – detekci a měření. Vlastně je to prachsprostý dálkoměr.
LiDAR vysavače změřil vzdálenosti k překážkám a SLAM tato data použil k vytvoření mapy a k lokalizačnímu systému vysavače i bez potřeby GPS
Když jsme si loni na podzim postavili jednoduchý detektor stavu garážových vrat, vzdálenost jsme měřili pomocí oblíbeného prototypovacího ultrazvukového dálkoměru HC-SR04 za pár korun.
No, a kdybychom tentýž dálkoměr připevnili na motorek, kterým budeme pomalu otáčet po přesných úhlech, změřili bychom pomocí něj vzdálenost ke všem překážkám okolo nás. A přesně to je 2D LiDAR, který po jednom celém otočení hřídele změří 360 vzdáleností pro každý celý stupeň a my tak získáme představu o překážkách v bezprostředním okolí dálkoměru.
Laserový rotační dálkoměr ve vrchlíku robotického vysavače
A teď si představte, že na hřídel motoru takových dálkoměrů HC-SR04 umístíme třeba tři, přičemž jeden bude mířit v rovině vpřed, druhý bude namířený třeba o 10° pod rovinu a konečně třetí o 10° nad rovinu. Po jednom celém otočení bychom nyní získali údaje o překážkách v mnohem širším vertikálním záběru a už bychom měli základ velmi, opravdu velmi jednoduchého 3D LiDARu s malým obrazovým rozlišením.
Ultrazvukový LiDAR není dobré řešení
Náš ultrazvukový LiDAR by ale trpěl jedním vážným neduhem. Zvuk je příliš pomalý! Ve vzduchu o běžné pokojové teplotě se jeho vlny šíří rychlostí zhruba 346 metrů za sekundu. Abychom dokázali ze stacionární pozice detekovat překážku, musí k ní zvuková vlna nejen doputovat, ale také se odrazit a stejnou dobu letět zpět k detektoru.
Oblíbené prototypovací ultrazvukové dálkoměry US-100 a HC-SR04
To znamená, že překážku ve vzdálenosti 1 metru bychom pomocí dokonalého ultrazvukového detektoru bez další režie detekovali nejdříve za 5,78 milisekund (1000/346 × 2). A teď si vezměte, že jsme zatím změřili pouze první úhel, takže motorek dostane povel, aby se pootočil o 1° a poté proběhne nové měření.
Suma sumárum, po kompletní otočce to dělá 360 × 5,78 = 2 081 milisekund. Celé dvě sekundy! A ke všemu pouze v případě, že budou okolní překážky opravdu ve vzdálenosti 1 metru. Když by to bylo 10 metrů, doba měření poskočí o řád vzhůru.
Ultrazvukový dálkoměr je typickým příkladem měření typu ToF (Time of Fight). Vzdálenost odhaduje podle doby mezi vysláním signálu a jeho přijetím po odrazu od překážky.
LiDAR musí být optický
Ultrazvukový dálkoměr se opravdu hodí jen pro pomalé měření objektů v relativně malé vzdálenosti nejvýše do několika metrů. Ostatně, kdyby byla překážka ještě dál, okolní prostor zvukové vlny utlumí takovým způsobem, že je detektor stejně nedokáže zachytit. Kužel ultrazvukového pulzu je zároveň poměrně široký, takže rovnou zapomeňte na nějaké slušné rozlišení zachycených prostorových dat.
Laserový dálkoměr je další typ ToF měření. Tentokrát nepočítáme dobu letu ultrazvukového sledu pulzů, ale laserového – zpravidla bezpečného infračerveného.
Potřebujeme něco lepšího a to něco je samozřejmě světlo. Jeho rychlost v okolním vzduchu činí zhruba 299 702 547 metrů za sekundu, 1 metr tedy urazí za nějakých 3,3 nanosekund. Jeden metrový ping k překážce a zpět by pak zabral něco málo přes 6,7 nanosekund. To je milionkrát kratší doba než v případě zvuku.
Pokračování článku patří k prémiovému obsahu
Získejte neomezený přístup a Živě bez reklam už za 41 Kč měsíčně
Programování elektroniky: Postavíme si levný 2D LiDAR za pár kaček - Živě.cz
Read More
No comments:
Post a Comment