Laserowy pomiar odległości … wprowadzenie

Laserowy pomiar odległości … wprowadzenie
Razem głosów: 4 co stanowi: 95% całości.

pointer

Jak już wiecie, bowiem pisałem już o tym, istnieje wiele sposobów pomiaru odległości jak czujniki optyczne czy ultradźwiękowe, które zresztą opisywałem już na łamach strony, ale tym razem chcę pójść krok dalej, krok który zbliży nas do innego projektu. Wracając jednak do sedna ….

Wszystkie dostępne i tanie czujniki odległości działają bardzo dobrze, i spełniają swoją rolę zarówno w robotyce jak i w wielu innych aplikacjach. Postaramy się więc stworzyć układ spełniający wiele funkcji.  Nasz tytułowy miernik odległości będzie też posiadać funkcje wizyjne, które się przydadzą choćby do identyfikacji przeszkód  i ich unikania.  W naszym przykładowym prototypowym rozwiązaniu użyjemy kamerki USB. Lepszym rozwiązaniem będzie nawet użycie 2 kamerek, umożliwiających tzw. stereo wizję co umożliwia ustalenie głębi w widzianym obrazie. Oczywiście wadą jest masa 2 kamer gdyby układ miać być mobilny…   Niemniej dla przykładu zajmiemy się jedną kamerką i jednym laserem, a uzyskany obraz w mono wizji i tak pozwoli nam uzyskać informacje o odległości.

TROCHĘ TEORII 

Popatrzmy na „schemat”, który obrazuje w jaki sposób odbywa się pomiar. Jak widać to bardzo proste. Oświetlamy obiekt laserem w polu widzenia kamerki i obliczamy odległość do obiektu.  W tej chwili nie będziemy się aż tak bardzo przejmować matematyką i szczegółami chodzi o ujęcie prostoty rozwiązania .

laser_ranger_drawing

 

Jak to działa ??

Promień lasera oświetla obiekt, który znajduje się w polu widzenia naszej kamerki. Wiązka lasera jest równoległa w stosunku do osi optycznej naszej kamerki. Nasz punkt (kropka) lasera jest widoczna w kamerce wraz z resztą otoczenia (sceną).  Wystarczy nam teraz prosty algorytm, który będzie wyszukiwał najjaśniejsze piksele w scenie. Zakładam oczywiście że punkt z lasera jest najjaśniejszym obszarem widzianego obrazu. Tak więc pozycja kropki lasera na ekranie jest już nam znana. Pozostaje nam wyliczyć odległość do obiektu.  Wydaje się to trudne, ale istnieje pewna zależność.

Mianowicie odległość obiektu na obrazie obliczamy na podstawie danych osi Y gdzie pada nasza kropka z lasera.  Można więc powiedzieć że im bliżej środka obrazu ją widzimy tym dalej jest nasz obiekt. W przypadku naszego „schematu”  odległość  „D”  może zostać obliczona z wzoru:

equation1

 

Oczywiście żeby wyliczyć odległość D musimy znać h , jest to stała która oznacza odległość między kamerą, a laserem oraz thetą :P ,   thetę  obliczamy:

 

equation2

 

Gdzie:

  • pfc – Liczba pikseli od środka płaszczyzny ogniskowej
  • rpc – radianów na piksel
  • ro – przesunięcie w radianach  (dla kompensacji odchyleń)

Teraz możemy połączyć oba równania ze sobą  i w ten sposób uzyskamy właściwe równanie z którego obliczymy odległość :

equation3

 

UFF …… podsumujmy więc ….

Liczba pikseli od środka płaszczyzny ogniskowej w której widoczna jest nasza „kropka” lasera jest do policzenia od razu. Ale co z innymi parametrami ??   No właśnie … Konieczna jest kalibracja w celu ich uzyskania :(  Aby więc tego dokonać będziemy wykonywać serie pomiarów i zbierać wyniki.  Oczywiście musimy zakładać że za każdym razem uzyskamy inny wynik jak też inny cel …  Zobaczmy więc przykładowe dane:

 

Pikseli od środka Aktualny D  (w cm)
103 29
81 45
65 58.
55 71
49. 90
45 109
41. 127
39. 159
37. 189
35. 218

 

Za pomocą dodatkowego równania możemy też obliczyć rzeczywisty kąt w oparciu o parametr h , jak również rzeczywistą odległość dla każdego punktu danych z pomiaru:

Przechwytywanie

 

Gdzie :

  •  ? act   =  rzeczywisty kąt
  • act   =  rzeczywista odległość do obiekty (mierzona)

Teraz gdy mamy   ?act  dla każdej wartości, możemy wymyślić relację  która pozwoli nam obliczyć  thetę  liczby pikseli od środka obrazu. Chodzi o liniową zależność od przesunięcia i wzmocnienia, ale nie będziemy w to wnikać specjalnie. Wydaje się że założenie uproszczone działa prawidłowo mimo, że nie bierzemy pod uwagę faktu, że płaszczyzna ogniskowania jest płaszczyzną, a nie zbiorem krzywych o stałym promieniu od środka soczewki.  Więc po mimo uproszczenia całości  z naszych przykładowych danych kalibracyjnych  obliczamy:

  • RO =  – 0,056514344 radiany
  • RPC = 0,0024259348  radianów /piksel

Korzystając z naszego wzoru :

equation3

 

Udało się też rozwiązać dla obliczonych odległości  błędów  między rzeczywistą odległości? a danymi kalibracyjnymi zresztą sami zobaczcie w tabelce poniżej:

 

Pikseli od środka Obliczone D (w cm) Aktualne D (w cm) %  błędów
103 29.84 29 2.88
81 41.46 45 -7,87
65 57.55 58. -0,78
55 75.81 71 6.77
49. 93,57 90 3.96
45 110,85 109 1.70
41. 135,94 127 7.04
39. 153,27 159 -3,60
37. 175,66 189 -7,06
35. 205,70 218 -5,64

Uff …. to na tyle teorii. W następnej części zaczniemy już budować nasz prosty układ…

Miłego liczenia i wielu przemyśleń na temat zastosowania proponowanego rozwiązania.

Ciąg dalszy…

Podziel się na:
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • Blogplay