Następna wersja filtra Kalmana ma wyznaczać wysokości AGL i MSL, więc potrzebuję pomiaru wysokości względem ziemi. Szczególnie jest to potrzebne podczas lądowania, aby móc rozróżnić etap szybkiego schodzenia z wysokości od etapu delikatnego przyziemienia. Jest potrzeba wykrycia poziomu gruntu, kiedy BSP jest jeszcze w powietrzu.
Ponad rok temu wpadła mi w oko seria układów VL53 od ST, zawierająca scalony laser na podczerwień i matrycę lawinowych fotodiod mierzących czas, po jakim fotodioda wykryje odbite światło wysłane przez laser. Są układy jedno- i wielostrefowe. W ostatnich dniach pojawił się układ VL53L9CX, który działa jak kamera, generując obraz 54×42 pikseli, na którym kolor odpowiada nie jasności, jak przy zwykłej kamerze, ale odległości. Świetna sprawa do tego, by zrobić detekcję przeszkód. Rok temu kupiłem próbki układów VL53L1X oraz VL53L5CX i właśnie uruchomiłem najprostszy, jednostrefowy VL53L1X.
Przysłowie mówi, że diabeł tkwi w szczegółach. Pierwszą rzeczą, z jaką trzeba się zmierzyć, to sterownik wymieniający duże ilości danych z układem powolną magistralą I2C. Uzyskanie pomiaru sporo trwa, a biblioteka używa transmisji blokującej, więc przez cały czas pomiaru kontroler nie może zrobić nic innego, co w systemach czasu rzeczywistego, takich jak autopilot jest niedopuszczalne. Podzieliłem bibliotekę na fragmenty kończące się transmisją po to, aby transmisję zamienić z blokującej na DMA. Nie udało mi się jeszcze tego uruchomić, więc na obecnym etapie transmisja jest jeszcze blokująca, ale już jest podzielona na kilka etapów, między którymi autopilot może działać.
Druga sprawa to zasięg. VL53L1X ma deklarowany zasięg do 4 m, ale to dotyczy pomiaru w ciemności względem białego tła. Liczyłem na to, że gdyby udało się uzyskać stabilnie pracującą połowę tego, to by wystarczyło. Jednak maksimum, jakie udało się uzyskać to ok. 700 mm, a w miarę stabilnie pracuje do ok. 300 mm. Jest prawdopodobne, że układ nie jest skonfigurowany optymalnie, ale próby dobierania budżetu czasu i trybu pracy ani razu nie pozwoliły przekroczyć pułapu 0,7 m. Nie robiłem jeszcze kalibracji, jednak mając na uwadze to, że rzeczywiste powierzchnie, względem jakich będzie odbywał się pomiar są znacznie trudniejsze niż to, co ćwiczę w warunkach biurowych, nie mam większych nadziei na praktyczne zastosowanie układu.
Na wykresach po prawej stronie przedstawionych jest kilka parametrów pomiaru. Na górze jest zmierzona odległość. W początkowym etapie pomiaru, czyli na prawym brzegu wykresu, czujnik nie miał przed sobą przeszkody, a pokazywał jakąś minimalną odległość, chociaż powinien pokazać nieskończoność. Status pomiaru (różowy na drugim wykresie) wskazywał poprawny pomiar. To, że coś było nie tak, widać dopiero po odchyleniu standardowym, które było zdecydowanie wyższe niż 3σ. Dla trochę większych odległości, powyżej 0,25 m, status pomiaru wskazuje na jakiś problem, chociaż sam pomiar i odchylenie standardowe wydają się w porządku. Ostatni wykres przedstawia reflektancję celu i natężenie tła. Pomiar był robiony w porannym półmroku, w pomieszczeniu, a czujnik skierowany był w stronę białego sufitu.