Jak fungují laserové dálkoměry a jak kreslí mapu? Dnes si ho postavíme s pomocí servomotoru a TF-Luna. Aplikace na PC bude kreslit mapu místnosti.

Jak fungují laserové dálkoměry a jak kreslí mapu? Dnes si ho postavíme s pomocí servomotoru a TF-Luna. Aplikace na PC bude kreslit mapu místnosti.

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

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

Laserový rotační dálkoměr ve vrchlíku robotického vysavače

Laserový rotační dálkoměr ve vrchlíku robotického vysavače

Oblíbené prototypovací ultrazvukové dálkoměry US-100 a HC-SR04

Oblíbené prototypovací ultrazvukové dálkoměry US-100 a HC-SR04

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.

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.

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.

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.

Klasický bodový mrak, tedy vizuální interpretace 3D modelu okolí pomocí změřených vzdáleností z automobilového LiDARu. 

Klasický bodový mrak, tedy vizuální interpretace 3D modelu okolí pomocí změřených vzdáleností z automobilového LiDARu. 

Prototypovací modul dálkoměru VL53Lx. Samotný čip je pouze ta drobná krychlička uprostřed velikosti malého zrnka rýže.

Prototypovací modul dálkoměru VL53Lx. Samotný čip je pouze ta drobná krychlička uprostřed velikosti malého zrnka rýže.

LIDAR-Lite V3 od Garminu najdete i na marsovském dronu Ingenuity

LIDAR-Lite V3 od Garminu najdete i na marsovském dronu Ingenuity

Čínský dálkoměr TF-Luna komunikuje skrze I²C a UART

Čínský dálkoměr TF-Luna komunikuje skrze I²C a UART

Čínský dálkoměr TF-Luna komunikuje skrze I²C a UART

Čínský dálkoměr TF-Luna komunikuje skrze I²C a UART

Čínský dálkoměr TF-Luna komunikuje skrze I²C a UART

Čínský dálkoměr TF-Luna komunikuje skrze I²C a UART

Základní specifikace dálkoměru TF-Luna

Základní specifikace dálkoměru TF-Luna

Mávám dlaní nad dálkoměrem směrem dolů a nahoru a vzdálenosti vynáším na plotr

Mávám dlaní nad dálkoměrem směrem dolů a nahoru a vzdálenosti vynáším na plotr

Laciné analogové mikroservo „9g“ z Aliexpressu. V podstatě to je běžný DC motorek s řídící logikou, která otáčí motorkem podle PWM signálu na řídícím vodiči.

Laciné analogové mikroservo „9g“ z Aliexpressu. V podstatě to je běžný DC motorek s řídící logikou, která otáčí motorkem podle PWM signálu na řídícím vodiči.

Dokumentace jednoho z malých servomotorků SG90 9g. Hodnoty šířek pulzů je ale třeba brát s rezervou. Laciná analogová serva z Aliexpressu nejsou prakticky nikdy takto přesně kalibrovaná a hodnoty dorazů si musíme otestovat sami. 

Dokumentace jednoho z malých servomotorků SG90 9g. Hodnoty šířek pulzů je ale třeba brát s rezervou. Laciná analogová serva z Aliexpressu nejsou prakticky nikdy takto přesně kalibrovaná a hodnoty dorazů si musíme otestovat sami. 

Skutečný záznam PWM v logickém analyzátoru  Logic  na signálním pinu motoru pro natočení 0°. Všimněte si, že logický analyzátor potvrzuje pulzy o šířce zhruba 500 mikrosekund při frekvenci 50 Hz.

Skutečný záznam PWM v logickém analyzátoru Logic na signálním pinu motoru pro natočení 0°. Všimněte si, že logický analyzátor potvrzuje pulzy o šířce zhruba 500 mikrosekund při frekvenci 50 Hz.

Skutečný záznam PWM v logickém analyzátoru  Logic  na signálním pinu motoru pro natočení 0°. Všimněte si, že logický analyzátor potvrzuje pulzy o šířce zhruba 500 mikrosekund při frekvenci 50 Hz.

Skutečný záznam PWM v logickém analyzátoru Logic na signálním pinu motoru pro natočení 0°. Všimněte si, že logický analyzátor potvrzuje pulzy o šířce zhruba 500 mikrosekund při frekvenci 50 Hz.

Nyní při 50 Hz generujeme pulzy o šířce 2 000 mikrosekund a hřídel motorku se proto otočila k opačnému dorazu (180°). Vzhledem k opačné orientaci motoru v naší instalaci počítáme natočení proti směru hodinových ručiček.

Nyní při 50 Hz generujeme pulzy o šířce 2 000 mikrosekund a hřídel motorku se proto otočila k opačnému dorazu (180°). Vzhledem k opačné orientaci motoru v naší instalaci počítáme natočení proti směru hodinových ručiček.

Nyní při 50 Hz generujeme pulzy o šířce 2 000 mikrosekund a hřídel motorku se proto otočila k opačnému dorazu (180°). Vzhledem k opačné orientaci motoru v naší instalaci počítáme natočení proti směru hodinových ručiček.

Nyní při 50 Hz generujeme pulzy o šířce 2 000 mikrosekund a hřídel motorku se proto otočila k opačnému dorazu (180°). Vzhledem k opačné orientaci motoru v naší instalaci počítáme natočení proti směru hodinových ručiček.

Schéma zapojení dálkoměru, serva a základní desky Arduino Uno. Uno pracuje s 5V logikou, zatímco TF-Luna používá 3V komunikační signály, linky SDA a I²C jsme proto propojil skrze převodník logického napětí 5V↔3V.

Schéma zapojení dálkoměru, serva a základní desky Arduino Uno. Uno pracuje s 5V logikou, zatímco TF-Luna používá 3V komunikační signály, linky SDA a I²C jsme proto propojil skrze převodník logického napětí 5V↔3V.

Výpis aktuálního úhlu a vzdálenosti ze sériové linky do plotru. Modře se nám tedy vykresluje postupné otáčení 0-180° a červeně adekvátní vzdálenost k nejbližší překážce v daném úhlu.

Výpis aktuálního úhlu a vzdálenosti ze sériové linky do plotru. Modře se nám tedy vykresluje postupné otáčení 0-180° a červeně adekvátní vzdálenost k nejbližší překážce v daném úhlu.

Skutečný pokoj a pro srovnání jeho 2D model podle dat z našeho rotačního dálkoměru

Skutečný pokoj a pro srovnání jeho 2D model podle dat z našeho rotačního dálkoměru

Skutečný pokoj a pro srovnání jeho 2D model podle dat z našeho rotačního dálkoměru

Skutečný pokoj a pro srovnání jeho 2D model podle dat z našeho rotačního dálkoměru

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
Laserový rotační dálkoměr ve vrchlíku robotického vysavače
Oblíbené prototypovací ultrazvukové dálkoměry US-100 a HC-SR04
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.
24
Fotogalerie

Programování elektroniky: Postavíme si levný 2D LiDAR za pár kaček

  • Jak fungují laserové dálkoměry a jak kreslí mapu
  • Dnes si ho postavíme s pomocí servomotoru a TF-Luna
  • Aplikace na PC bude kreslit mapu místnosti

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:

Projekt si můžete stáhnout také z GitHubu

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.

a8c8c447-1510-4395-bc02-f570af0595e2
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.

d3dc2ac6-c6ea-4b36-9946-324074bdfc8c
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.

72ae0362-b398-4fe5-ad5e-f3fab7855e5e
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.

95021e81-6f9a-4125-b452-c7640c7d0c1d
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.

07ab2a01-0958-44b6-b6a9-656b50f23f72
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 pro předplatitele

Chci Premium a Živě.cz bez reklam Od 41 Kč měsíčně

Určitě si přečtěte

Články odjinud