Pojďme programovat elektroniku | Laser

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ě
Váš názor Další článek: Máme dovézt horniny z Marsu? Někteří vědci v tom vidí zbytečný hazard

Témata článku: , , , , , , , , , , , , , , , , , , ,