Donnerstag, 19. November 2015

Augmented Cardboard


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