Spisu treści:

Korzystanie z sonaru, lidaru i wizji komputerowej na mikrokontrolerach w celu pomocy osobom niedowidzącym: 16 kroków
Korzystanie z sonaru, lidaru i wizji komputerowej na mikrokontrolerach w celu pomocy osobom niedowidzącym: 16 kroków

Wideo: Korzystanie z sonaru, lidaru i wizji komputerowej na mikrokontrolerach w celu pomocy osobom niedowidzącym: 16 kroków

Wideo: Korzystanie z sonaru, lidaru i wizji komputerowej na mikrokontrolerach w celu pomocy osobom niedowidzącym: 16 kroków
Wideo: Uczenie maszynowe dla programistów Java: przejście na stos technologii sztucznej inteligencji. 2024, Lipiec
Anonim
Korzystanie z sonaru, lidaru i wizji komputerowej na mikrokontrolerach w celu pomocy osobom niedowidzącym
Korzystanie z sonaru, lidaru i wizji komputerowej na mikrokontrolerach w celu pomocy osobom niedowidzącym

Chcę stworzyć inteligentną „laskę”, która może pomóc osobom z wadami wzroku znacznie bardziej niż istniejące rozwiązania. Laska będzie w stanie powiadomić użytkownika o obiektach z przodu lub po bokach, wydając dźwięk w słuchawkach typu surround. Laska będzie miała również małą kamerę i LIDAR (Light Detection and Ranging), dzięki czemu będzie mogła rozpoznawać przedmioty i osoby w pomieszczeniu oraz powiadamiać użytkownika za pomocą słuchawek. Ze względów bezpieczeństwa słuchawki nie będą blokować całego hałasu, ponieważ będzie mikrofon, który może odfiltrować wszystkie niepotrzebne dźwięki i sprawić, że klaksony samochodowe i ludzie będą rozmawiać. Wreszcie system będzie miał GPS, dzięki czemu będzie mógł dawać wskazówki i wskazywać użytkownikowi, gdzie się udać.

Proszę głosować na mnie w konkursach Mikrokontroler i Outdoor Fitness!

Krok 1: Przegląd projektu

Przegląd projektu
Przegląd projektu
Przegląd projektu
Przegląd projektu
Przegląd projektu
Przegląd projektu

Według World Access for the Blind ruch fizyczny jest jednym z największych wyzwań dla osób niewidomych. Podróżowanie lub po prostu chodzenie po zatłoczonej ulicy może być bardzo trudne. Tradycyjnie jedynym rozwiązaniem było użycie powszechnie znanej „białej laski”, która służy przede wszystkim do skanowania otoczenia poprzez uderzanie w przeszkody znajdujące się w pobliżu użytkownika. Lepszym rozwiązaniem byłoby urządzenie, które może zastąpić asystenta widzącego, dostarczając informacji o lokalizacji przeszkód, aby osoba niewidoma mogła wyjść w nieznane otoczenie i czuć się bezpiecznie. W ramach tego projektu opracowano małe urządzenie zasilane bateryjnie, które spełnia te kryteria. Urządzenie może wykrywać rozmiar i położenie obiektu za pomocą czujników, które mierzą położenie obiektów w stosunku do użytkownika, przekazywać te informacje do mikrokontrolera, a następnie konwertować je na dźwięk, aby dostarczyć informacje użytkownikowi. Urządzenie zostało zbudowane przy użyciu dostępnych na rynku technologii LIDAR (Light Detection and Ranging), SONAR (Sound Navigation and Ranging) oraz komputerowych technologii wizyjnych połączonych z mikrokontrolerami i zaprogramowanych tak, aby dostarczać wymagane informacje dźwiękowe za pomocą słuchawek dousznych lub dousznych. Technologia wykrywania została osadzona w „białej lasce”, aby wskazać innym stan użytkownika i zapewnić dodatkowe bezpieczeństwo.

Krok 2: Badania w tle

Badania w tle
Badania w tle
Badania w tle
Badania w tle
Badania w tle
Badania w tle
Badania w tle
Badania w tle

W 2017 roku Światowa Organizacja Zdrowia poinformowała, że na całym świecie jest 285 milionów osób niedowidzących, z których 39 milionów jest całkowicie niewidomych. Większość ludzi nie myśli o problemach, z którymi codziennie borykają się osoby niedowidzące. Według World Access for the Blind ruch fizyczny jest jednym z największych wyzwań dla osób niewidomych. Podróżowanie lub po prostu chodzenie po zatłoczonej ulicy może być bardzo trudne. Z tego powodu wiele osób niedowidzących woli przyprowadzić widzącego przyjaciela lub członka rodziny, aby pomóc w poruszaniu się w nowych środowiskach. Tradycyjnie jedynym rozwiązaniem było użycie powszechnie znanej „białej laski”, która służy przede wszystkim do skanowania otoczenia poprzez uderzanie w przeszkody znajdujące się w pobliżu użytkownika. Lepszym rozwiązaniem byłoby urządzenie, które może zastąpić asystenta widzącego, dostarczając informacji o lokalizacji przeszkód, aby osoba niewidoma mogła wyjść w nieznane otoczenie i czuć się bezpiecznie. NavCog, współpraca między IBM i Carnegie Mellon University, podjęła próbę rozwiązania problemu, tworząc system, który wykorzystuje beacony Bluetooth i smartfony do pomocy w prowadzeniu. Rozwiązanie było jednak kłopotliwe i okazało się bardzo kosztowne w przypadku wdrożeń na dużą skalę. Moje rozwiązanie rozwiązuje ten problem, eliminując potrzebę korzystania z urządzeń zewnętrznych i używając głosu do prowadzenia użytkownika przez cały dzień (rysunek 3). Zaletą posiadania technologii wbudowanej w „białą laskę” jest to, że sygnalizuje reszcie świata stan użytkownika, który powoduje zmianę zachowania otaczających ludzi.

Krok 3: Wymagania projektowe

Wymagania projektowe
Wymagania projektowe

Po zbadaniu dostępnych technologii omówiłem możliwe rozwiązania ze specjalistami od wzroku na temat najlepszego podejścia do pomocy osobom niedowidzącym w poruszaniu się w ich środowisku. W poniższej tabeli wymieniono najważniejsze funkcje wymagane do przejścia na moje urządzenie.

Funkcja - opis:

  • Obliczenia - system musi zapewniać szybkie przetwarzanie informacji wymienianych między użytkownikiem a czujnikami. Na przykład system musi być w stanie poinformować użytkownika o przeszkodach z przodu, które są oddalone o co najmniej 2 metry.
  • Zasięg - system musi świadczyć swoje usługi w pomieszczeniach i na zewnątrz, aby poprawić jakość życia osób niedowidzących.
  • Czas - system powinien działać tak samo dobrze w porze dziennej, jak i nocnej.
  • Zasięg - zasięg to odległość między użytkownikiem a obiektem, który ma zostać wykryty przez system. Idealny zasięg minimalny to 0,5 m, natomiast maksymalny powinien być większy niż 5 m. Dalsze odległości byłyby jeszcze lepsze, ale trudniejsze do obliczenia.
  • Typ obiektu - system powinien wykrywać nagłe pojawienie się obiektów. System powinien być w stanie odróżnić obiekty ruchome od obiektów statycznych.

Krok 4: Konstrukcja inżynierska i dobór sprzętu

Konstrukcja inżynierska i dobór sprzętu
Konstrukcja inżynierska i dobór sprzętu
Konstrukcja inżynierska i dobór sprzętu
Konstrukcja inżynierska i dobór sprzętu
Konstrukcja inżynierska i dobór sprzętu
Konstrukcja inżynierska i dobór sprzętu

Po przyjrzeniu się wielu różnym komponentom zdecydowałem się na części wybrane z różnych kategorii poniżej.

Cena wybranych części:

  • Pantera Zungle: 149,99 USD
  • LiDAR Lite V3: 149,99 USD
  • LV-MaxSonar-EZ1: 29,95 USD
  • Czujnik ultradźwiękowy - HC-SR04: 3,95 USD
  • Raspberry Pi 3: 39,95 USD
  • Arduino: 24,95 USD
  • Kinect: 32,44 USD
  • Floureon 11.1v 3s 1500mAh: 19,99 USD
  • LM2596HV: 9,64 USD

Krok 5: Wybór sprzętu: metoda interakcji

Wybór sprzętu: metoda interakcji
Wybór sprzętu: metoda interakcji
Wybór sprzętu: metoda interakcji
Wybór sprzętu: metoda interakcji

Postanowiłem użyć sterowania głosowego jako metody interakcji z urządzeniem, ponieważ posiadanie wielu przycisków na lasce może być wyzwaniem dla osoby niedowidzącej, zwłaszcza jeśli niektóre funkcje wymagają kombinacji przycisków. Dzięki sterowaniu głosowemu użytkownik może używać zaprogramowanych poleceń do komunikacji z laską, co zmniejsza potencjalne błędy.

Urządzenie: Plusy --- Minusy:

  • Przyciski: Brak błędu polecenia po naciśnięciu prawego przycisku --- Zapewnienie naciśnięcia prawidłowych przycisków może być trudne
  • Sterowanie głosowe: łatwe, ponieważ użytkownik może korzystać z gotowych poleceń --- Nieprawidłowa wymowa może powodować błędy

Krok 6: Wybór sprzętu: mikrokontroler

Wybór sprzętu: mikrokontroler
Wybór sprzętu: mikrokontroler
Wybór sprzętu: mikrokontroler
Wybór sprzętu: mikrokontroler
Wybór sprzętu: mikrokontroler
Wybór sprzętu: mikrokontroler

Urządzenie wykorzystało Raspberry Pi ze względu na jego niski koszt i wystarczającą moc obliczeniową do obliczenia mapy głębi. Intel Joule byłby preferowaną opcją, ale jego cena podwoiłaby koszt systemu, co nie byłoby idealne dla tego urządzenia, które zostało opracowane w celu zapewnienia użytkownikom tańszej opcji. Arduino zostało wykorzystane w systemie, ponieważ może łatwo pobierać informacje z czujników. BeagleBone i Intel Edison nie zostały użyte ze względu na niski stosunek ceny do wydajności, co jest niekorzystne dla tego taniego systemu.

Mikrokontroler: Plusy --- Minusy:

  • Raspberry Pi: ma wystarczającą moc obliczeniową do znajdowania przeszkód i ma zintegrowane WiFi/Bluetooth --- Niewiele opcji odbierania danych z czujników
  • Arduino: Łatwo odbieraj dane z małych czujników. tj. LIDAR, ultradźwięki, SONAR itp --- Niewystarczająca moc obliczeniowa do znajdowania przeszkód
  • Intel Edison: Potrafi szybko przezwyciężyć przeszkody dzięki szybkiemu procesorowi --- Wymaga dodatkowych elementów programisty do działania w systemie
  • Intel Joule: ma dwukrotnie większą szybkość przetwarzania niż którykolwiek z dotychczasowych mikrokontrolerów na rynku konsumenckim --- Bardzo wysoki koszt tego systemu i trudny do interakcji z GPIO w celu interakcji z czujnikami
  • BeagleBone Black: Kompaktowy i kompatybilny z czujnikami używanymi w projekcie dzięki zastosowaniu wyjścia ogólnego przeznaczenia (GPIO) --- Niewystarczająca moc przetwarzania do skutecznego znajdowania obiektów

Krok 7: Wybór sprzętu: czujniki

Wybór sprzętu: czujniki
Wybór sprzętu: czujniki
Wybór sprzętu: czujniki
Wybór sprzętu: czujniki
Wybór sprzętu: czujniki
Wybór sprzętu: czujniki

W celu uzyskania wysokiej dokładności lokalizacji stosuje się kombinację kilku czujników. Kinect jest głównym czujnikiem ze względu na wielkość obszaru, który może jednocześnie skanować w poszukiwaniu przeszkód. LIDAR, co oznacza LIGHT Detection and Ranging, to metoda zdalnego wykrywania, która wykorzystuje światło w postaci impulsowego lasera do szybkiego pomiaru odległości od miejsca, w którym znajduje się czujnik, do obiektów; ten czujnik jest używany, ponieważ może śledzić obszar w odległości do 40 metrów (m), a ponieważ może skanować pod różnymi kątami, może wykryć, czy jakieś kroki pną się w górę lub w dół. Nawigacja dźwiękowa i czujniki odległości (SONAR) oraz czujniki ultradźwiękowe są używane jako zapasowe śledzenie w przypadku, gdy sensor Kinect pominie słup lub wyboj w ziemi, które mogą stanowić zagrożenie dla użytkownika. Czujnik 9 stopni swobody służy do śledzenia kierunku, w którym zwrócony jest użytkownik, dzięki czemu urządzenie może przechowywać informacje w celu uzyskania większej dokładności kierowania następnym razem, gdy osoba będzie chodzić w tym samym miejscu.

Czujniki: Plusy --- Minusy:

  • Kinect V1: może śledzić obiekty 3D za pomocą --- tylko jednej kamery do wykrywania otoczenia
  • Kinect V2: ma 3 kamery na podczerwień oraz kamerę czerwoną, zieloną, niebieską i głębię (RGB-D) do precyzyjnego wykrywania obiektów 3D --- Może się nagrzewać i może wymagać wentylatora chłodzącego, i jest większy niż inne czujniki
  • LIDAR: Wiązka, która może śledzić lokalizacje w odległości do 40 m --- Musi być ustawiona w kierunku obiektu i może patrzeć tylko w tym kierunku
  • SONAR: Wiązka, która może śledzić odległość 5 m, ale w dalekim zasięgu --- Małe przedmioty, takie jak pióra, mogą wyzwolić czujnik
  • Ultradźwiękowy: ma zasięg do 3 m i jest bardzo niedrogi --- Odległości mogą czasami być niedokładne
  • Czujnik 9 stopni swobody: dobry do wykrywania orientacji i prędkości użytkownika --- Jeśli cokolwiek zakłóca działanie czujników, obliczenia odległości mogą być nieprawidłowo obliczone

Krok 8: Wybór sprzętu: oprogramowanie

Wybór sprzętu: oprogramowanie
Wybór sprzętu: oprogramowanie
Wybór sprzętu: oprogramowanie
Wybór sprzętu: oprogramowanie
Wybór sprzętu: oprogramowanie
Wybór sprzętu: oprogramowanie

Wybranym oprogramowaniem dla kilku pierwszych prototypów zbudowanych z sensorem Kinect V1 było Freenect, ale nie było ono zbyt dokładne. Po przejściu na Kinect V2 i Freenect2 wyniki śledzenia uległy znacznej poprawie dzięki ulepszonemu śledzeniu, ponieważ V2 ma kamerę HD i 3 kamery na podczerwień, w przeciwieństwie do pojedynczej kamery w Kinect V1. Kiedy używałem OpenNi2 z Kinectem V1, funkcje były ograniczone i nie mogłem kontrolować niektórych funkcji urządzenia.

Oprogramowanie: Plusy --- Minusy:

  • Freenect: ma niższy poziom kontroli do kontrolowania wszystkiego --- obsługuje tylko Kinect V1
  • OpenNi2: Może łatwo tworzyć dane chmury punktów ze strumienia informacji z Kinect --- Obsługuje tylko Kinect V1 i nie obsługuje kontroli niskiego poziomu
  • Freenect2: ma niższy poziom kontroli nad paskiem czujnika --- Działa tylko z Kinect V2
  • ROS: System operacyjny idealny do programowania funkcji kamery --- Musi być zainstalowany na szybkiej karcie SD, aby oprogramowanie działało

Krok 9: Wybór sprzętu: inne części

Wybór sprzętu: inne części
Wybór sprzętu: inne części
Wybór sprzętu: inne części
Wybór sprzętu: inne części

Wybrano baterie litowo-jonowe ze względu na ich lekkość, dużą pojemność i możliwość wielokrotnego ładowania. Wariant 18650 baterii litowo-jonowej ma cylindryczny kształt i idealnie pasuje do prototypu trzciny. Pierwszy prototyp laski jest wykonany z rury PVC, ponieważ jest pusta i zmniejsza wagę laski.

Krok 10: Rozwój systemu: tworzenie sprzętu Część 1

Rozwój systemu: tworzenie sprzętu, część 1
Rozwój systemu: tworzenie sprzętu, część 1
Rozwój systemu: tworzenie sprzętu, część 1
Rozwój systemu: tworzenie sprzętu, część 1
Rozwój systemu: tworzenie sprzętu, część 1
Rozwój systemu: tworzenie sprzętu, część 1

Najpierw musimy zdemontować Kinect, aby był lżejszy i pasował do laski. Zacząłem od usunięcia całej zewnętrznej obudowy z Kinect, ponieważ użyty plastik waży DUŻO. Następnie musiałem przeciąć kabel, aby można było zdjąć podstawę. Wziąłem przewody ze złącza pokazanego na zdjęciu i przylutowałem je do kabla usb z przewodami sygnałowymi a pozostałe dwa połączenia były dla zasilania wejściowego 12V. Ponieważ chciałem, aby wentylator wewnątrz laski pracował z pełną mocą, aby schłodzić wszystkie inne komponenty, odciąłem złącze od wentylatora od Kinect i podłączyłem 5 V do Raspberry Pi. Zrobiłem również mały adapter do przewodu LiDAR, dzięki czemu można go podłączyć bezpośrednio do Raspberry Pi bez żadnych innych systemów pomiędzy.

Biały przewód przez przypadek przylutowałem do czarnego więc nie patrz na zdjęcia schematów elektrycznych

Krok 11: Rozwój systemu: tworzenie sprzętu, część 2

Rozwój systemu: tworzenie sprzętu, część 2
Rozwój systemu: tworzenie sprzętu, część 2
Rozwój systemu: tworzenie sprzętu, część 2
Rozwój systemu: tworzenie sprzętu, część 2
Rozwój systemu: tworzenie sprzętu, część 2
Rozwój systemu: tworzenie sprzętu, część 2
Rozwój systemu: tworzenie sprzętu, część 2
Rozwój systemu: tworzenie sprzętu, część 2

Stworzyłem element regulatora, aby zapewnić zasilanie wszystkim urządzeniom wymagającym 5 V, takim jak Raspberry Pi. Dostroiłem regulator wkładając miernik na wyjście i ustawiając rezystor tak, aby regulator dostarczał 5,05V. Postawiłem go trochę wyżej niż 5V bo z biegiem czasu napięcie akumulatora spada i nieznacznie wpływa na napięcie wyjściowe. Zrobiłem też przejściówkę, która pozwala zasilić do 5 urządzeń wymagających 12V z akumulatora.

Krok 12: Rozwój systemu: programowanie systemu, część 1

Rozwój systemu: programowanie systemu, część 1
Rozwój systemu: programowanie systemu, część 1
Rozwój systemu: programowanie systemu, część 1
Rozwój systemu: programowanie systemu, część 1
Rozwój systemu: programowanie systemu, część 1
Rozwój systemu: programowanie systemu, część 1

Jedną z najtrudniejszych części tego systemu jest programowanie. Kiedy po raz pierwszy zacząłem się nim bawić, zainstalowałem program o nazwie RTAB Map, który pobiera strumień danych z Kinect i konwertuje go na chmurę punktów. Dzięki chmurze punktów utworzył obraz 3D, który można obracać, aby zobaczyć głębokość, w której znajdują się wszystkie obiekty. Po zabawie z nim przez chwilę i dostosowaniu wszystkich ustawień, zdecydowałem się zainstalować oprogramowanie na Raspberry Pi, aby umożliwić mi oglądanie strumienia danych z Kinect. Ostatnie dwa powyższe obrazy pokazują, co Raspberry Pi może wyprodukować z prędkością około 15-20 klatek na sekundę.

Zalecana: