Inhoudsopgave:

Sonar, Lidar en Computer Vision op microcontrollers gebruiken om slechtzienden te helpen: 16 stappen
Sonar, Lidar en Computer Vision op microcontrollers gebruiken om slechtzienden te helpen: 16 stappen

Video: Sonar, Lidar en Computer Vision op microcontrollers gebruiken om slechtzienden te helpen: 16 stappen

Video: Sonar, Lidar en Computer Vision op microcontrollers gebruiken om slechtzienden te helpen: 16 stappen
Video: Gesture-Controlled Servo with Python and Arduino #electronics #arduinotraining 2024, Juli-
Anonim
Sonar, Lidar en Computer Vision op microcontrollers gebruiken om slechtzienden te helpen
Sonar, Lidar en Computer Vision op microcontrollers gebruiken om slechtzienden te helpen

Ik wil een intelligente ‘stok’ maken die mensen met een visuele beperking veel meer kan helpen dan bestaande oplossingen. De wandelstok kan de gebruiker op de hoogte stellen van objecten aan de voorkant of aan de zijkanten door een geluid te maken in de hoofdtelefoon van het surround-geluidstype. De wandelstok zal ook een kleine camera en LIDAR (Light Detection and Ranging) hebben, zodat hij objecten en mensen in de kamer kan herkennen en de gebruiker kan waarschuwen via de koptelefoon. Om veiligheidsredenen blokkeert de hoofdtelefoon niet al het geluid, omdat er een microfoon is die alle onnodige geluiden kan filteren en de autoclaxons en mensen aan het praten houdt. Ten slotte zal het systeem een GPS hebben, zodat het aanwijzingen kan geven en de gebruiker kan laten zien waar hij heen moet.

Stem alsjeblieft op mij in de Microcontroller- en Outdoor Fitness-wedstrijden!

Stap 1: Projectoverzicht

Overzicht van project
Overzicht van project
Overzicht van project
Overzicht van project
Overzicht van project
Overzicht van project

Volgens World Access for the Blind is fysieke beweging een van de grootste uitdagingen voor blinden. Reizen of gewoon door een drukke straat lopen kan erg moeilijk zijn. Traditioneel was de enige oplossing het gebruik van de algemeen bekende "witte stok", die voornamelijk wordt gebruikt om de omgeving te scannen door obstakels in de buurt van de gebruiker te raken. Een betere oplossing zou een apparaat zijn dat de ziende assistent kan vervangen door informatie te geven over de locatie van obstakels, zodat de blinde persoon in onbekende omgevingen naar buiten kan gaan en zich veilig voelt. Tijdens dit project is een klein batterijgevoed apparaat ontwikkeld dat aan deze criteria voldoet. Het apparaat kan de grootte en locatie van objecten detecteren door middel van sensoren die de positie van objecten ten opzichte van de gebruiker meten, die informatie doorgeven aan een microcontroller en deze vervolgens omzetten in audio om informatie aan de gebruiker te verstrekken. Het apparaat is gebouwd met behulp van beschikbare commerciële LIDAR (Light Detection and Ranging), SONAR (Sound Navigation and Ranging) en computer vision-technologieën gekoppeld aan microcontrollers en geprogrammeerd om de vereiste hoorbare informatie-uitvoer te leveren met behulp van oordopjes of hoofdtelefoons. De detectietechnologie was ingebed in een "witte stok" om anderen de toestand van de gebruiker aan te geven en extra veiligheid te bieden.

Stap 2: Achtergrondonderzoek

Achtergrond onderzoek
Achtergrond onderzoek
Achtergrond onderzoek
Achtergrond onderzoek
Achtergrond onderzoek
Achtergrond onderzoek
Achtergrond onderzoek
Achtergrond onderzoek

In 2017 meldde de Wereldgezondheidsorganisatie dat er wereldwijd 285 miljoen slechtzienden waren, van wie 39 miljoen volledig blind. De meeste mensen denken niet na over de problemen waarmee visueel gehandicapte mensen elke dag worden geconfronteerd. Volgens World Access for the Blind is fysieke beweging een van de grootste uitdagingen voor blinden. Reizen of gewoon door een drukke straat lopen kan erg moeilijk zijn. Daarom geven veel mensen met een visuele beperking er de voorkeur aan een ziende vriend of familielid mee te nemen om te helpen bij het navigeren door nieuwe omgevingen. Traditioneel was de enige oplossing het gebruik van de algemeen bekende "witte stok", die voornamelijk wordt gebruikt om de omgeving te scannen door obstakels in de buurt van de gebruiker te raken. Een betere oplossing zou een apparaat zijn dat de ziende assistent kan vervangen door informatie te geven over de locatie van obstakels, zodat de blinde persoon in onbekende omgevingen naar buiten kan gaan en zich veilig voelt. NavCog, een samenwerking tussen IBM en Carnegie Mellon University, heeft geprobeerd het probleem op te lossen door een systeem te creëren dat Bluetooth-bakens en smartphones gebruikt om te helpen. De oplossing was echter omslachtig en bleek zeer kostbaar te zijn voor grootschalige implementaties. Mijn oplossing lost dit op door de noodzaak voor externe apparaten te elimineren en door een stem te gebruiken om de gebruiker de hele dag door te begeleiden (Afbeelding 3). Het voordeel van het hebben van de technologie ingebed in een "witte stok" is dat het de rest van de wereld signaleert van de toestand van de gebruiker die verandering in het gedrag van de omringende mensen veroorzaakt.

Stap 3: Ontwerpvereisten

Ontwerp voorwaarden
Ontwerp voorwaarden

Nadat ik de beschikbare technologieën had onderzocht, besprak ik mogelijke oplossingen met vision-professionals over de beste aanpak om slechtzienden te helpen bij het navigeren door hun omgeving. In de onderstaande tabel staan de belangrijkste functies die iemand nodig heeft om over te schakelen naar mijn apparaat.

Functie - Beschrijving:

  • Berekening - Het systeem moet zorgen voor een snelle verwerking van de uitgewisselde informatie tussen de gebruiker en sensoren. Het systeem moet de gebruiker bijvoorbeeld kunnen informeren over obstakels vooraan die zich op minstens 2 meter afstand bevinden.
  • Dekking - Het systeem moet zijn diensten binnen en buiten leveren om de kwaliteit van het leven van mensen met een visuele beperking te verbeteren.
  • Tijd - Het systeem moet zowel overdag als 's nachts presteren.
  • Bereik - Het bereik is de afstand tussen de gebruiker en het door het systeem te detecteren object. Het ideale minimale bereik is 0,5 m, terwijl het maximale bereik meer dan 5 m moet zijn. Verdere afstanden zouden nog beter zijn, maar moeilijker te berekenen.
  • Objecttype - Het systeem moet het plotseling verschijnen van objecten detecteren. Het systeem moet het verschil kunnen zien tussen bewegende objecten en statische objecten.

Stap 4: Engineering Design en Equipment Selection

Technisch ontwerp en apparatuurselectie
Technisch ontwerp en apparatuurselectie
Technisch ontwerp en apparatuurselectie
Technisch ontwerp en apparatuurselectie
Technisch ontwerp en apparatuurselectie
Technisch ontwerp en apparatuurselectie

Na veel verschillende componenten te hebben bekeken, besloot ik onderdelen uit de verschillende categorieën hieronder te selecteren.

Prijs van geselecteerde onderdelen:

  • Zungle Panther: $ 149,99
  • LiDAR Lite V3: $ 149,99
  • LV-MaxSonar-EZ1: $29,95
  • Ultrasone sensor - HC-SR04: $ 3,95
  • Raspberry Pi 3: $39,95
  • Arduino: $ 24,95
  • Kinect: $ 32,44
  • Floureon 11.1v 3s 1500mAh: $ 19,99
  • LM2596HV: $9,64

Stap 5: Apparatuurselectie: interactiemethode

Apparatuurselectie: Interactiemethode
Apparatuurselectie: Interactiemethode
Apparatuurselectie: Interactiemethode
Apparatuurselectie: Interactiemethode

Ik besloot stembesturing te gebruiken als methode om met het apparaat te communiceren, omdat het hebben van meerdere knoppen op een stok een uitdaging kan zijn voor een slechtziende, vooral als voor sommige functies een combinatie van knoppen nodig is. Met spraakbesturing kan de gebruiker vooraf ingestelde commando's gebruiken om met de wandelstok te communiceren, wat mogelijke fouten vermindert.

Apparaat: Voordelen --- Nadelen:

  • Knoppen: geen opdrachtfout wanneer de rechterknop wordt ingedrukt --- Het kan een uitdaging zijn om ervoor te zorgen dat de juiste knoppen worden ingedrukt
  • Spraakbesturing: gemakkelijk omdat de gebruiker vooraf ingestelde commando's kan gebruiken --- Onjuiste uitspraak kan fouten veroorzaken

Stap 6: Apparatuurselectie: microcontroller

Apparatuurselectie: Microcontroller
Apparatuurselectie: Microcontroller
Apparatuurselectie: Microcontroller
Apparatuurselectie: Microcontroller
Apparatuurselectie: Microcontroller
Apparatuurselectie: Microcontroller

Het apparaat gebruikte de Raspberry Pi vanwege de lage kosten en voldoende rekenkracht om de dieptekaart te berekenen. De Intel Joule zou de voorkeursoptie zijn geweest, maar de prijs zou de kosten van het systeem hebben verdubbeld, wat niet ideaal zou zijn voor dit apparaat, dat is ontwikkeld om gebruikers een goedkopere optie te bieden. De Arduino werd in het systeem gebruikt omdat het gemakkelijk informatie van sensoren kan krijgen. De BeagleBone en Intel Edison werden niet gebruikt vanwege de lage prijs-prestatieverhouding, wat slecht is voor dit goedkope systeem.

Microcontroller: Voordelen --- Nadelen:

  • Raspberry Pi: heeft voldoende rekenkracht om obstakels te vinden en heeft WiFi/Bluetooth geïntegreerd --- Niet veel opties voor het ontvangen van gegevens van sensoren
  • Arduino: Eenvoudig gegevens ontvangen van kleine sensoren. d.w.z. LIDAR, Ultrasoon, SONAR, enz --- Niet genoeg verwerkingskracht om obstakels te vinden
  • Intel Edison: kan obstakels snel verwerken met een snelle processor --- Vereist extra ontwikkelstukken om het systeem te laten functioneren
  • Intel Joule: heeft tot nu toe de dubbele verwerkingssnelheid van alle microcontrollers op de consumentenmarkt --- Zeer hoge kosten voor dit systeem en moeilijk te communiceren met GPIO voor sensorinteractie
  • BeagleBone Black: compact en compatibel met sensoren die in projecten worden gebruikt door gebruik te maken van de General Purpose Input Output (GPIO) --- Niet genoeg verwerkingskracht om objecten effectief te vinden

Stap 7: Apparatuurselectie: sensoren

Apparatuurselectie: Sensoren
Apparatuurselectie: Sensoren
Apparatuurselectie: Sensoren
Apparatuurselectie: Sensoren
Apparatuurselectie: Sensoren
Apparatuurselectie: Sensoren

Een combinatie van meerdere sensoren wordt gebruikt om een hoge locatienauwkeurigheid te verkrijgen. De Kinect is de belangrijkste sensor vanwege de hoeveelheid gebied die hij in één keer op obstakels kan scannen. LIDAR, wat staat voor LIght Detection and Ranging, is een teledetectiemethode die licht in de vorm van een gepulseerde laser gebruikt om snel afstanden te meten van waar de sensor zich bevindt tot objecten; die sensor wordt gebruikt omdat hij een gebied tot 40 meter (m) afstand kan volgen en omdat hij onder verschillende hoeken kan scannen, kan hij detecteren of er stappen omhoog of omlaag gaan. De Sound Navigation And Ranging (SONAR) en ultrasone sensoren worden gebruikt als back-up tracking in het geval dat de Kinect een paal of hobbel in de grond mist die een gevaar zou kunnen vormen voor de gebruiker. De 9 Degrees of Freedom Sensor wordt gebruikt om bij te houden in welke richting de gebruiker kijkt, zodat het apparaat de informatie kan opslaan voor een hogere nauwkeurigheid bij de volgende keer dat de persoon op dezelfde plaats loopt.

Sensoren: Voordelen --- Nadelen:

  • Kinect V1: kan 3D-objecten volgen met --- Slechts één camera om de omgeving te detecteren
  • Kinect V2: heeft 3 infraroodcamera's en een rode, groene, blauwe, dieptecamera (RGB-D) voor zeer nauwkeurige 3D-objectdetectie --- Kan opwarmen en heeft mogelijk een koelventilator nodig, en is groter dan andere sensoren
  • LIDAR: straal die locaties tot op 40 m afstand kan volgen --- Moet in de richting van een object worden geplaatst en kan alleen in die richting kijken
  • SONAR: straal die op 5 m afstand kan volgen, maar in een ver bereik --- Kleine objecten zoals veren kunnen de sensor activeren
  • Ultrasoon: heeft een bereik tot 3 m en is erg goedkoop --- Afstanden kunnen soms onnauwkeurig zijn
  • 9 vrijheidsgradensensor: goed voor het detecteren van oriëntatie en snelheid van de gebruiker --- Als iets de sensoren verstoort, kunnen de afstandsberekeningen onjuist worden berekend

Stap 8: Apparatuurselectie: Software

Apparatuurselectie: Software
Apparatuurselectie: Software
Apparatuurselectie: Software
Apparatuurselectie: Software
Apparatuurselectie: Software
Apparatuurselectie: Software

De geselecteerde software voor de eerste paar prototypes gebouwd met de Kinect V1-sensor was Freenect, maar het was niet erg nauwkeurig. Bij het overschakelen naar Kinect V2 en Freenect2 waren de trackingresultaten aanzienlijk verbeterd dankzij verbeterde tracking, aangezien de V2 een HD-camera en 3 infraroodcamera's heeft in plaats van een enkele camera op de Kinect V1. Toen ik OpenNi2 met de Kinect V1 gebruikte, waren de functies beperkt en kon ik sommige functies van het apparaat niet bedienen.

Software: Voordelen --- Nadelen:

  • Freenect: heeft een lager controleniveau om alles te regelen --- ondersteunt alleen de Kinect V1
  • OpenNi2: kan eenvoudig de puntenwolkgegevens maken uit de informatiestroom van de Kinect --- ondersteunt alleen de Kinect V1 en heeft geen ondersteuning voor besturing op laag niveau
  • Freenect2: heeft een lager controleniveau voor de sensorbalk --- Werkt alleen voor de Kinect V2
  • ROS: Besturingssysteem ideaal voor het programmeren van camerafuncties --- Moet op een snelle SD-kaart worden geïnstalleerd zodat de software werkt

Stap 9: Apparatuurselectie: andere onderdelen

Apparatuurselectie: andere onderdelen
Apparatuurselectie: andere onderdelen
Apparatuurselectie: andere onderdelen
Apparatuurselectie: andere onderdelen

Er is gekozen voor lithium-ionbatterijen omdat ze licht zijn, een hoog vermogen hebben en oplaadbaar zijn. De 18650-variant van de lithium-ionbatterij heeft een cilindrische vorm en past perfect in het rietprototype. Het 1e prototype riet is gemaakt van PVC-buis omdat het hol is en het gewicht van het riet vermindert.

Stap 10: Systeemontwikkeling: het hardwareonderdeel maken 1

Systeemontwikkeling: de hardware maken deel 1
Systeemontwikkeling: de hardware maken deel 1
Systeemontwikkeling: de hardware maken deel 1
Systeemontwikkeling: de hardware maken deel 1
Systeemontwikkeling: de hardware maken deel 1
Systeemontwikkeling: de hardware maken deel 1

Eerst moeten we de Kinect demonteren om hem lichter te maken en zodat hij in de stok past. Ik begon met het verwijderen van alle buitenbehuizing van de Kinect omdat het gebruikte plastic VEEL weegt. Toen moest ik de kabel doorknippen zodat de basis kon worden verwijderd. Ik nam de draden van de connector die op de afbeelding wordt getoond en soldeerde ze aan een usb-kabel met signaaldraden en de andere twee aansluitingen waren voor de 12V-ingangsstroom. Omdat ik wilde dat de ventilator in de stok op vol vermogen zou draaien om alle andere componenten te koelen, heb ik de connector van de ventilator van de Kinect afgesneden en 5V van de Raspberry Pi aangesloten. Ik heb ook een kleine adapter gemaakt voor de LiDAR-draad, zodat deze rechtstreeks op de Raspberry Pi kan worden aangesloten zonder andere tussenliggende systemen.

Ik heb per ongeluk de witte draad aan de zwarte gesoldeerd, dus kijk niet naar de afbeeldingen voor bedradingsschema's

Stap 11: Systeemontwikkeling: de hardware maken deel 2

Systeemontwikkeling: de hardware maken deel 2
Systeemontwikkeling: de hardware maken deel 2
Systeemontwikkeling: de hardware maken deel 2
Systeemontwikkeling: de hardware maken deel 2
Systeemontwikkeling: de hardware maken deel 2
Systeemontwikkeling: de hardware maken deel 2
Systeemontwikkeling: de hardware maken deel 2
Systeemontwikkeling: de hardware maken deel 2

Ik heb een regeleenheid gemaakt om stroom te leveren aan alle apparaten die 5V nodig hebben, zoals de Raspberry Pi. Ik heb de regelaar afgesteld door een meter op de uitgang te zetten en de weerstand zo af te stellen dat de regelaar 5.05V zou leveren. Ik zet het iets hoger dan 5V omdat na verloop van tijd de batterijspanning daalt en de uitgangsspanning enigszins beïnvloedt. Ik heb ook een adapter gemaakt waarmee ik tot 5 apparaten van stroom kan voorzien die de 12V van de batterij nodig hebben.

Stap 12: Systeemontwikkeling: het systeem programmeren Deel 1

Systeemontwikkeling: het systeem programmeren Deel 1
Systeemontwikkeling: het systeem programmeren Deel 1
Systeemontwikkeling: het systeem programmeren Deel 1
Systeemontwikkeling: het systeem programmeren Deel 1
Systeemontwikkeling: het systeem programmeren Deel 1
Systeemontwikkeling: het systeem programmeren Deel 1

Een van de meest uitdagende onderdelen van dit systeem is de programmering. Toen ik de Kinect er voor het eerst mee had laten spelen, installeerde ik een programma met de naam RTAB Map dat de gegevensstroom van de Kinect overneemt en omzet in een puntenwolk. Met de puntenwolk creëerde het een 3D-beeld dat kan worden gedraaid, zodat je de diepte kunt zien van waar alle objecten zich bevinden. Nadat ik er een tijdje mee had gespeeld en alle instellingen had aangepast, besloot ik wat software op de Raspberry Pi te installeren zodat ik de gegevensstroom van de Kinect kon zien. De laatste twee afbeeldingen hierboven laten zien wat de Raspberry Pi kan produceren met ongeveer 15-20 frames per seconde.

Aanbevolen: