Projekt CardboardAR
Projektplan:
Basis (getestet):
Chrome -> Kamera, Spracherkennung, Sprachausgabe
PhoneGap -> Kamera nur über Zusatzmodule, Spracherkennung, Sprachausgabe
Backend:
Um in Chrome diverse Sicherheitsmeldungen zu übergehen ist es notwendig auf
einem Computer NodeJS mit einem Webserver (Https) laufen zu lassen. In Chrome
kann man dann den Zugriff auf Audio/Video dauerhaft aktivieren.
Diverse Aktionen werden über JamesV2 vom NodeJS Webserver an die jeweiligen
Komponenten wie FHEM übertragen. Für FHEM sollte aufgrund der Heizstatistik
ebenfalls Https aktiviert werden. Die Sourcen werden demnächst auf Github veröffentlicht.
Um eine Suche mit AR zu fahren wird der Searchserver3 verwendet, welcher ebenfalls
Bestandteil des JamesV2 ist
Umbau der Brille:
Um den Tragekomfort der Brille zu verbessern wurde das Trennpolster einer Notebooktasche
mit Klettverschluss vernäht. An der Brille wurde ebenfalls ein Klettverschluss angebracht (genäht).
Das System kann auf verschiedene Kopfgrößen angepasst werden.
Das Batterypack kann auf dem Trennpolster angebracht werden.
Für die Kamera wurde im vorderen Bereich der Brille ein loch ausgeschnitten, an dem die Kamera des Handys sitzt. (Pic #3)
Funktionsweise:
Der Body wird mittels Bootstrap in 2 Teilbereiche aufgeteilt, welche
beide den Stream der Webcam enthalten.
Der rechte Bereich wird mit Zusatzinformationen versorgt.
Hierzu gehören.
- Dauerhafter Status
- Batterie
- Zeit
- Datum
- Distanz
- Information (Notizen für max. 2 Sekunden)
- Spracherkennung Resultate
- Übersetzung (DE-EN)
- Marker-ID + FHEM Heizstatistiken
- Sprachausgabetext
- Joystick, Licht, Aktionen
- GeoLayer (ThreeJS 3D-Würfel per Orientierungssensoren)
- Der Boden des Würfels besteht aus der GMaps Karte (Bild von Geodaten)
- Nord, Süd Ost und West werden an den Seiten angezeigt.
- Die Decke besteht aus Wetterinformationen (Sonne, Blitz) Bild
- Videodaten (Diverse Overlays)
- QR Marker Detection (+Debug)
- Barcode Erkennung (+Debug)
- Gesichtserkennung/Handerkennung (offen, Faust)/Emotion
- Farberkennung
- Surf-Featureerkennung
Für manche Funktionen ist ein Arduino mit Schnittstellen erforderlich:
- Externe Komponenten:
| Anzahl | Bauteil | Beschreibung |
|---|---|---|
| 2 | Arduino | Basis für Komponenten |
| 2 | BT-Seriell | Kommunikation mit dem Backend |
| 1 | Ultraschall Distanz | Distanzmessung mit Ultraschall <2m |
| 2 | Infrarot Distanz | Distanzmessung Infrarot <10cm |
| 1 | Helligkeitssensor | Helligkeit für Licht IR Messen |
| 1 | LED-Leiste | LEDs zur Beleuchtung bei Dunkelheit 5V |
| 1 | IR-LED-Leiste | Infrarot-LEDs für Nachtsicht 5V |
| 1 | Joystick | Selektion im Menü |
| 1 | Touch-Sensor | Berührungsempfindlicher Touch-Sensor |
| 1 | Laser-Rot | Blickziel im Raum bestimmen (5mw) |
Librarys und APIs:
folgende APIs können für eine AR Applikation verwendet werden:
Basics:
| Library | Beschreibung |
|---|---|
| Bootstrap | Responsive Layout |
| Jquery | Toolkit, Must-have Javascript Funktion, Basis für Erweiterungen |
| UIKit | Toolkit, Informationen anzeigen, Basis für Erweiterungen |
| ThreeJS | 3D Darstellungen, Basis für Erweiterungen im Bereich VR |
| HeadJS | Async JS Loader |
| AWEJS | POIs |
Video:
| Library | Beschreibung | Speed | Rating |
|---|---|---|---|
| ArucoJS | QR-Marker | ***** | ***** |
| JSARToolKit | QR-Marker | ***__ | **___ |
| QuaggaJS | Barcodes | ***__ | **___ |
| TrackingJS | Gesichtserkennung, Farberkennung, SURF | ****_ | ****_ |
| JSFeat | Gesichtserkennung | ***** | ***** |
| HeadTrackrJS | Gesichtserkennung | *____ | *____ |
| JSHandTracking | Handerkennung | *____ | *____ |
| CLMTrackrJS | Gesichts- und Gestenerkennung | *____ | *____ |
| VideoTrackerJS | Gesichtserkennung | *____ | *____ |
| ObjectDetectJS | Objekterkennung | *____ | *____ |
| AugmentedGestureJS | Gestenerkennung | *____ | *____ |
| OrientationCursor | Maus aus Orientierungssensoren | *____ | *____ |
| LeapMotionJS | Mit LeapController | *____ | *____ |
| BabylonJS | 3D Library | *____ | *____ |
| Leflet | Interaktive Karten | _____ | _____ |
| AugmentedGestureJS | Gestenerkennung | _____ | _____ |
Künstliche Intelligenz:
| Library | Beschreibung | Speed | Rating |
|---|---|---|---|
| ConvnetJS | Künstliche Intelligenz | *____ | *____ |
| BrainJS | Künstliche Intelligenz | *____ | *____ |
APIs:
| API | Beschreibung |
|---|---|
| WeatherAPI | Yahoo Wetter-API |
| GMaps | Google Landkarte der Geoposition |
| Translation | Übersetzung |
| Picture API | Bilder in Bildern erkennen |
| Texterkennung | Api um aus Bildern Texte zu extrahieren (OCR.JS via EMScripten zu langsam) |
Erweiterungen(Ideen):
| Idee | Beschreibung |
|---|---|
| Marker merken | Nach dem Betrachten eines Markers ist dieser noch für 5 Sec zugreifbar |
| Video recording | Aufnehmen eines Videos |
| Image recording | Aufnehmen eines Bildes |
| Audio recording | Aufnehmen eines Tracks |
| Device Orientation | Die Neuausrichtung des Geräts blocken, wenn Querformat |
| Beleuchtung | Einschalten des Lichts bei Dunkelheit |
| Nachtsicht | Einschalten des IR-Strahlers bei Dunkelheit |
| Joystickmenu | Auswahl einer Funktion per Joystick |
| SS3 abfragen | Suchen und Suchergebnisse ausgeben (Bilder, Videos, Audio, Youtube, Geburtstage) |
Schaltvarianten (Möglichkeiten):
| Möglichkeit | Beschreibung |
|---|---|
| Kopfmaus | Per Orientierungssensor wird eine Maus auf 2 Button-Overlays gesteuert. Click durch >2 Sec auf Button |
| Langes Marker ansehen | Marker ist im Zeitraum von 5 Sec min 4 Sec erkannt worden (Switch) |
| Laserselektion | der Laserpunkt befindet sich auf dem Marker >2 Sec (Switch) |
| Fingerselektion | Marker wird durch Finger (Haar) überdeckt |
| Fingerselektion2 | Durch Bewegung des Fingers (Winkel) wird ein Befehl ausgelöst (Winkelsensoren Handschuh) |
| Handselektion | Hand offen = Ein, Hand Faust = Aus (Haar) |
| Handwinkelselektion | Hand nach unten = Ein, Hand nach oben = Aus (anhand Orientierungssensoren Handschuh) |
| Handschuhselektion | Handschuh Rot = Aus, Handschuh grün = Ein |
| Joystickselektion | Joystickmenü Ein/Aus/Temp |
| Touchpoint | Tippen = Ein / Doppeltippen = Aus |
| Wischbewegung | Durch IR-Distanz unten-oben = Ein, oben-unten = Aus |
| NFC-Switch | Schalten durch erkennung eines NFC-Tags |
AR-Handschuhe:
| Ausstattung | Beschreibung |
|---|---|
| linker Handschuh grün | ein grüner Handschuh dient als Einschalter |
| rechter Handschuh rot | ein roter Handschuh dient als Ausschalter |
| Winkelsensoren | Winkelsensoren können Befehle über Fingerbewegungen steuern |
| Orientierungssensoren | Orientierung der Hand für Schaltbefehle |
| NFC Tag-Reader | Mit Handschuh NFC-Tag berühren um Code auszulesen |
| Arduino | Erforderlich für Kommunikation mit dem Handschuh |
| Bluetooth Seriell | Kommunikation mit dem Backend |
JS-Funktionen:
| Funktion | Beschreibung |
|---|---|
| Timer | Zeitliche Steuerung (Marker-Reset), Uhrzeit, Datum |
| Camera Selector | Hintere Kamera als Default auswählen und Auflösung minimieren |
| Sprachausgabe | Chrome-API |
| Spracheingabe | Chrome-API |
| Orientierung | Chrome-API |
| Geosensoren | Chrome-API |
| Batterie | Chrome-API |
Links/Quellen:
| Funktion | Beschreibung |
|---|---|
| HTML5Rocks | Diverse Codeschnipsel |
| Simpl.info | Beispiele im Bezug auf HTML5 Elemente (JS-Funktionen) |
| Searchcode | Suche nach Codeschnipseln in Projekten |
Keine Kommentare:
Kommentar veröffentlichen