Quantcast
Channel: Опыт пользователя и дизайн
Viewing all articles
Browse latest Browse all 360

Gestensteuerung und die nächste Welle der 3D-Kameras

$
0
0

Autor(en): Martin Förtsch und Thomas Endres, ParrotsOnJava.com

Der Artikel "Gestensteuerung und die nächste Welle der 3D-Kameras" erschien im Original in der Printausgabe der Fachzeitschrift "Java Aktuell", Jg. 2015, Heftnummer 02/2015, S. 30-34. Siehe http://www.ijug.eu/java-aktuell/das-magazin.html

Synopsis

Innerhalb der letzten fünf Jahre gab es auf dem Gebiet der Natural User Interfaces (NUI) eine regelrechte Revolution, da eine Vielzahl neuer Geräte auf den Markt kam. Sie ermöglichen dem Nutzer z.B. durch Gesten oder Sprache eine direkte Interaktion mit einer Benutzeroberfläche. Doch inwieweit ist diese Art der Steuerung sowohl intuitiv als auch komfortabel?

Einleitung

Tom Cruise im Jahr 2054. Vor einem mannshohen Display stehend bewegt er seine Hände und ordnet die dargestellten Informationen freihändig und nach seinen Vorstellungen auf dem Bildschirm an. Das war eine Schlüsselszene aus dem im Jahr 2002 erschienenen Kinofilm “Minority Report”. Um dem Film etwas mehr wissenschaftlichen Charakter zu verleihen, bildete der Regisseur Steven Spielberg eine Expertenkommission und lud 15 Spezialisten auf diesem Gebiet in ein Hotel in Santa Monica ein. Dort wurden die Grundlagen für eine Computersteuerung entworfen. Diese noch zu entwickelnde Steuerung sollte nicht nur alle üblichen Interaktionen mit der Software vor einem Display erfüllen, sondern dabei auch noch futuristisch aussehen.

Geschichte

Wer sich heutzutage mit Gestensteuerung auseinandersetzen möchte, hat eine große Auswahl an verschiedenen Systemen, welche sich unter anderem auch sehr gut per Java ansteuern lassen.

//leapmotion.com/)

Abbildung 1: Leap Motion in Aktion mit einer über das Gerät positionierten Hand (Leap Motion, http://leapmotion.com/)

Beginnen wir zunächst mit einem sehr einfachen Java-Codebeispiel für die Leap Motion. Sie ist ein kleines USB-Peripheriegerät und dafür ausgelegt, Hände und Finger zu erkennen. Wie in Abbildung 1 zu sehen wird eine Hand über dem Gerät positioniert und deren dreidimensionale Position bestimmt. Die Leap Motion arbeitet mit einer Genauigkeit von bis zu 0,01mm und kann darüber hinaus auch einzelne Finger und Knöchel, sowie deren Lage und Neigung erkennen.

public class LeapMotionListener extends Listener {
    public void onFrame(Controller controller) {
        Frame frame = controller.frame();

        if (!frame.hands().isEmpty()) {
            // Get the first hand
            Hand hand = frame.hands().get(0);

            // Get the hand's normal vector and direction
            Vector normal = hand.palmNormal();
            Vector direction = hand.direction();

            float handHeight = hand.palmPosition().getY();
            float handPitch = direction.pitch();
            float handRoll = normal.roll();
        }
    }
}

Das Listing zeigt den Zugriff auf Positions- und Lagedaten einer erkannten Hand. Im Beispiel wird das Listener-Konzept verfolgt, in welchem eine Event-Methode onFrame angeboten wird. Diese Methode erhält ein Controller-Objekt. Über dieses kann per controller.frame() auf das aktuell erfasste Frame zugegriffen werden. Mit dem Aufruf frame.hands().isEmpty() wird nun überprüft, ob die Leap Motion in diesem Frame Hände erkennt. Danach können durch einen einfachen Arrayzugriff die erkannten Handobjekte  abgefragt werden. In diesem Beispiel werden über hand.palmNormal().roll() die Daten zur seitlichen Neigung und mit hand.direction().pitch() die Vor- oder Rückwärtsneigung der Handfläche festgestellt. Daten zur Translation, also der Handposition oberhalb der Leap Motion, werden über die hand.palmPosition() ermittelt. Damit können über diverse get()-Methoden die X-, Y- und Z-Koordinaten abgefragt werden.

Technisch funktioniert das Erkennen der Hände dadurch, dass drei Infrarot emittierende Dioden von dem Gerät ausgehend ein Muster nach oben auf die Hände werfen. Zwei Infrarotkameras können dank eines durch die Parallaxe-Technik entstehenden 3D-Bildes Tiefeninformationen gewinnen. Aus diesen wird über ein mathematisches Modell die Position der Hand errechnet.

Doch so einfach wie in diesem Beispiel gestaltete sich die Implementierung von Software zur Gestensteuerung nicht immer. Wirft man einen Blick zurück in die Geschichte der Natural User Interfaces, so trifft man z.B. auf einen im Jahr 1990 in der WDR-Wissenschaftsshow vorgestellten Prototypen aus Darmstadt, der noch mit einer normalen Videokamera funktionierte. Dort ließ sich ein auf einem Bildschirm dargestellter Ball mit den Fingern frei bewegen und sogar greifen. “Man könnte meinen, dass das hier eine Spielerei ist, aber dahinter verbergen sich zumindest ganz ernste Absichten” sagte Ranga Yogeshwar damals. Hintergrund dieses Versuches war unter anderem, dass man dem Rechner viel mehr Eingabedaten übergeben musste, als es mit Tastatur oder Maus überhaupt möglich gewesen wäre.

Im Jahr 1993 kam eine für damalige Verhältnisse sehr fortschrittliche Webcam auf den Markt. Es handelt sich um die Silicon Graphics IndyCam, die im Verbund mit der Indy Workstation funktioniert. Noch heute ist sie im Deutschen Museum München als eines der wahrscheinlich ersten und wichtigsten Projekte im Bereich der Gestensteuerung zu begutachten. Zwei Jahre später benutze Siemens Software die SGI IndyCam und entwickelte eine Software, die die Drehbewegungen des Kopfes vor der Kamera erkannte und diese auf einen dargestellten menschlichen 3D-Schädel übersetzte.

 Das Exponat zur Gestensteuerung von Siemens Software im Deutschen Museum München.

Abbildung 2: Das Exponat zur Gestensteuerung von Siemens Software im Deutschen Museum München.

Dabei wurde jedoch nicht der Kopf erkannt, sondern offenbar nur die Bewegungen. Das lässt sich herausfinden, indem man seine Hand direkt vor der Kamera positioniert und nach links und rechts bewegt (siehe Abbildung 2). Der auf dem Monitor dargestellte Schädel bewegt sich korrespondierend zu den Handbewegungen. Die IndyCam ist eine reine RGB-Kamera und erkennt nur das normale Farbspektrum. Durch diverse Algorithmen und einer einfachen Bildsequenz-Technik werden Bewegungen von hautfarbenen Flächen erkannt und entsprechend interpretiert. Hintergrund dieser Herangehensweise ist, dass man aus einer einzelnen, einfachen Kamera keine echten Tiefeninformationen gewinnen kann. Nichtsdestotrotz kann man für damalige Verhältnisse von einem erstaunlichen Ergebnis sprechen.

Im Bereich der Gestensteuerung geschah in den darauffolgenden Jahren auf dem Verbrauchermarkt nicht viel. Erst mit der Entwicklung der Nintendo Wii Remote im Jahr 2006 bekam die Idee des quasi berührungslosen Steuerns neuen Auftrieb. Freilich wurde die Wii mit einen Hardware-Controller verwendet, den man in der Hand halten musste. Dennoch erschuf diese nichtstationäre Bedienung einer Spielekonsole gänzlich neue Freiheiten. Die kurz daraufhin erschienene Microsoft Kinect für die XBox ermöglichte diese Art der Bedienung sogar, ohne spezielle Hardware in der Hand halten zu müssen.

Nur wenig später (2008) implementierte eine Firma namens Oblong Industries ein Projekt namens "G-Speak". Dort gelang es, die noch im Jahr 2002 als Fiktion angesehene Szene aus "Minority Report" Realität werden zu lassen. Ein vor mehreren Displays stehender Mensch verschiebt Bilder von Display zu Display und kann dies relativ komfortabel freihändig erledigen. Dabei wird er von etlichen Kameras gefilmt und trägt spezielle, mit Sensoren ausgestattete Handschuhe.

//www.oblong.com)

Abbildung 3: G-Speak ist eine real existierende Implementierung der aus dem Film “Minority Report” bekannten Vision (Oblong Industries, http://www.oblong.com)

Man kann sich vorstellen, dass die Arme bei dieser Art der Bedienung auf Dauer müde und sehr schwer werden. Diesen Effekt nennt man "Gorilla Arm" und er umfasst die Symptome schmerzender Muskeln, Muskelkater und angeschwollener Arme. Das liegt daran, dass diese Art Bedienung der grundlegenden menschlichen Ergonomie wiederspricht.

Stand der Technik

Erst mit der Veröffentlichung des Kinect-Sensors im Jahr 2010 und dem entsprechenden PC-Pendant im Jahr 2012 kam ein System auf den Markt, welches eine echte berührungslose Steuerung ohne Verwendung von zusätzlichen Controllern zulässt. Das wird dadurch erreicht, dass neben einer RGB-Kamera eine zusätzliche Infrarotkamera integriert ist. Durch Aussenden eines durch Infrarotdioden generierten Sprenkelmusters (vgl. Speckle-Pattern) kann mit Hilfe der IR-Kamera Tiefeninformation gewonnen werden. Die neue Kinect 2 dagegen basiert auf der sogenannten “Time of Flight”-Technik. Dabei wird die Zeit berechnet, die die Lichtwellen von einem Emitter auf eine reflektierende Oberfläche und zurück benötigen (vgl. Continuous-Wave-Verfahren).

Doch nicht nur die renommierten Unternehmen spielen eine große Rolle auf dem Markt der Gestensteuerung. Es sind gerade auch die Underdogs, die sich - wie im Fall der Leap Motion - mittels Crowdfunding finanzieren und innovative Ideen auf den Markt bringen. An dieser Stelle seien beispielsweise das Thalmic Labs Armband “Myo” oder der “Fin”-Ring des indischen Startups RHLvision Technologies genannt. Bei Myo handelt es sich um ein Wearable Device, welches nicht auf der Basis von Kameratechnik funktioniert. Das Armband misst durch Muskelkontraktionen hervorgerufene elektrische Aktivität. Die daraus gewonnenen Daten können zur Gestensteuerung benutzt werden.

Es beschäftigen sich auch große Unternehmen mit dem Thema Gestensteuerung, die bis vor einiger Zeit noch nicht damit in Verbindung gebracht wurden. Mit dem Erscheinen der ersten Version des RealSense SDKs (vormals “Perceptual Computing SDK”) betrat der Prozessorhersteller Intel Neuland. Im Rahmen eines Joint Ventures mit dem Hardware-Hersteller Creative wurde eine erste Version der 3D-Kamera mit dem Codenamen “Senz3D” auf den Markt gebracht. Die Kamera basiert auf einer ähnlichen Technologie wie bei der Kinect 2. Intel entwickelte das dafür benötigte Intel RealSense SDK. Erwähnenswert ist hier, dass neben der Erkennung von Händen, Fingern und vorimplementierten Gesten auch Gesichts- und Spracherkennung möglich ist.

Intel arbeitet zurzeit an weiteren 3D-Kamera Nachfolgern. Erste Prototypen geben eindeutige Hinweise darauf, wohin sich die Technologie entwickeln wird. Während z.B. die Kinect 2 bei einer Abmessung von 24,9cm x 6,6cm x 6,7cm ein Kilogramm auf die Waage bringt, ist die neue Intel RealSense Kamera ein regelrechtes Fliegengewicht. Sie misst gerade einmal 10cm x 0,8cm x 0,38 cm. Durch die geringe Dicke von 3,8 Millimetern wird eine Integration in Laptops und Tablets möglich.

//intel.com/realsense)

Abbildung 4: Intel® RealSense™ Kameras werden so klein, dass eine Integration in Laptops und Tablets möglich wird. (Intel, http://intel.com/realsense)

Die Intel RealSense Kamera kann mit verschiedenen Sprachen programmiert werden, in der Regel kommt aber C++ zum Einsatz. In der aktuellen Beta-Version des RealSense SDKs ist eine neue JavaScript-API hinzugekommen. Auch in Java gibt es die Möglichkeit, sich die Funktionalität dieser vielseitigen 3D-Kamera zu Nutze zu machen. In einem weiteren Listing soll der Zugriff auf Positionsdaten der Hand mit Intel RealSense demonstriert werden. Intel liefert einen Java-Wrapper, der sich sehr nah an der ursprünglichen C++-API bewegt. Dies erklärt auch, warum z.B. Methodennamen nicht den üblichen Java-Standards entsprechen

// Create Sense manager and initialize it
PXCMSenseManager senseManager = PXCMSession.CreateInstance().CreateSenseManager();
senseManager.EnableHand(null);
senseManager.Init();

// Create hand configuration
PXCMHandModule handModule = senseManager.QueryHand();
PXCMHandData handData = handModule.CreateOutput();

while (true) {
  // Capture frame
  pxcmStatus status = senseManager.AcquireFrame(true);
  if (status.compareTo(pxcmStatus.PXCM_STATUS_NO_ERROR) < 0) break;

  handData.Update();

  // Get first hand data (index 0),
  PXCMHandData.IHand hand = new PXCMHandData.IHand();
  status = handData.QueryHandData(PXCMHandData.AccessOrderType.ACCESS_ORDER_NEAR_TO_FAR, 0, hand);

  if (status.compareTo(pxcmStatus.PXCM_STATUS_NO_ERROR) >= 0) {
  // Get some hand data
          PXCMPointF32 position = hand.QueryMassCenterImage();
          System.out.println(String.format("Center of mass for first hand at image position( % .2f, % .2f) ", position.x, position.y));
     }

     senseManager.ReleaseFrame();
}

Es wird zunächst ein Objekt der Klasse PXCMSenseManager erzeugt, der die Verwaltung der RealSense-API übernimmt. Mit Hilfe der Methode QueryHand() erhalten wir ein PXCMHandModule, welches benötigt wird um Hände zu erkennen. Korrespondierend existieren auch Methoden zur Erkennung von Gesichtern und Emotionen.

Wie im Codebeispiel der Leap Motion (siehe Listing 1) muss auch hier zunächst eine Methode namens AcquireFrame() ausgeführt werden. Diese Funktion wartet nun, bis Daten zum Prozessieren zur Verfügung stehen. Die weitere Ermittlung der Kameradaten wird nun unterbrochen, bis ReleaseFrame() aufgerufen wird. Es folgt das Abfragen der Handdaten durch QueryHandData(). Dort wird ein Parameter übergeben, der angibt, in welcher Sortierung die Hände indexiert werden sollen. Der Parameter wurde auf ACCESS_ORDER_NEAR_TO_FAR gesetzt. Die Hand, die sich also am nächsten zur Kamera befindet bekommt den Index 0.

Die Daten vom Typ PXCMHandData liegen daraufhin im Objekt hand vor. Nach einem zusätzlichen QueryMassCenterImage() können die erkannten Positionsdaten des Masseschwerpunktes der Hand ermittelt werden.

//intel.com/realsense)Abbildung 5: Aktuelle Intel® RealSense™ Kamera (F200) in einem Gehäuse zur Verwendung als USB-Peripheriegerät. (Intel, http://intel.com/realsense)

Doch wozu sollte man Gestensteuerung verwenden? Warum sollten sich Entwickler überhaupt mit diesem Thema beschäftigen? Zugegeben, in die Zukunft schauen kann niemand, und noch ist das Thema recht jung. Jedoch lassen die rasanten Entwicklungen in diesem Bereich in den letzten fünf Jahren mehr als aufhorchen. Klassische Anwendungsgebiete waren seit jeher in der Unterhaltungsindustrie zu finden und dort insbesondere im Bereich der Spielekonsolen. Doch jüngste Entwicklungen werden auch dazu führen, dass diese Technologien auf eine breitere Anwenderschicht treffen. Moderne SmartTVs besitzen heute die Möglichkeit, mittels spezieller Gesten Programme zu wechseln oder die Lautstärke zu ändern. Smartphones wie das Samsung Galaxy S4 lassen sich schon heute mit Air View durch Gesten bedienen.

Derzeit existieren erste Prototypen medizinischer Geräte, bei denen der Arzt berührungslos Patientendaten auf seinem Bildschirm nach seinen Vorstellungen darstellen lassen kann. Das kann für einen Chirurgen durchaus praktisch sein, da er keine Knöpfe anfassen muss und somit die Sterilität wahrt. Vor allem kann er sich Daten so anzeigen lassen, wie er es möchte und muss diese Aufgabe nicht an andere delegieren. Darüber hinaus gibt es erste universitäre Projekte, bei denen Chirurgie-Roboter per Gesten gesteuert werden. Mit der heutigen Genauigkeit der 3D-Kameras und der SDKs ist jedoch davon abzuraten, diese Techniken am lebenden Menschen auszuprobieren. Denn auf diesem Gebiet sind noch einige Jahre an Forschung nötig, um die Genauigkeit auf das nötige Maß zu erhöhen und Ausfallsicherheit zu gewährleisten. Ob diese Technologien zukünftig dann tatsächlich auch für sicherheitsrelevante Anwendungen verwendet werden, ist natürlich noch reine Spekulation.

Einsatzgebiete

Der Einsatz von Natural User Interfaces macht nur dann Sinn, wenn er sich positiv auf die Effizienz auswirkt. Gestensteuerung kann in besonderen Fällen sogar einen Sicherheitsgewinn bedeuten. So hat der Autohersteller Hyundai mit seinem HCD-14 Genesis Concept Interior Demo im Jahr 2013 ein Gestensteuerungs-System vorgestellt, mit welchem das Entertainment-System im Auto bedient werden kann. Es kann von Vorteil sein, wenn man die Karte des Navigationssystems freihändig skalieren kann, ohne explizit einen Knopf drücken zu müssen. Natürlich existieren heutzutage auch Knöpfe am Multifunktions-Lenkrad. Jedoch ist dieser Platz begrenzt, während die Anzahl der elektronischen Assistenten im Fahrzeug immer weiter ansteigt.

Stellen sie sich vor, Sie würden die Scheibenwischer Ihres Autos per Scheibenwischergeste ein- und ausschalten können. Dies wird unter Umständen zu Verwirrungen mit den anderen Verkehrsteilnehmern führen. Daher empfiehlt es sich, Gesten nur dann zu verwenden, wenn sie nicht anderweitig interpretierbar sind. Ebenso versteht es sich von selbst, dass auch die Zahl der möglichen Gesten begrenzt werden muss. Die Verwendung hunderter verschiedener Gesten würde fast zwangsläufig zu Problemen beim Erlernen und bei der Erkennung der Gesten führen.

Eine weitere interessante Frage stellt sich in Bezug auf die genutzten Gesten-Metaphern. Für die heutige Generation ist es beispielsweise absolut intuitiv, die Lautstärke eines Gerätes mit einer Drehbewegung des gebeugten Daumen und Zeigefingers durchzuführen. Der Grund dafür liegt in der Verwendung von Potentiometern seitdem es Lautstärke-Regler gibt, welche seit Jahrzehnten genau auf diese Art bedient werden. Setzt sich Gestensteuerung durch, können sich nach jahrelanger praktischer Anwendung ganz andere Standard-Metaphern entwickeln.

Fazit

Die 3D-Kameras werden immer kleiner und schon heute in Laptops und demnächst sogar in Tablets eingebaut. Hewlett Packard begann als erstes, die Leap Motion in Laptops zu integrieren. In diesem Jahr folgt Intel mit der RealSense-Kamera in Ultrabooks und Tablets. Das bedeutet, dass immer mehr Benutzer in Kontakt mit den Technologien zur Gestensteuerung kommen. Entwickler sind nun einerseits gefragt, Expertise auf diesem Gebiet aufzubauen und andererseits auch Anwendungsideen zu entwickeln. Von Vorteil sind fundierte Kenntnisse im Bereich der User Experience sowie ein Gefühl dafür, ob Steuerungsmethoden intuitiv sind oder nicht.

Ein großer Nachteil von Gestensteuerung ist das nicht vorhandene haptische Feedback. Bei dieser Art von Bedienung fehlt generell das Gefühl, eine Schaltfläche oder einen Knopf betätigt zu haben. Um dem entgegenzukommen, hat Disney Research ein Prototyp mit dem Namen Aireal entwickelt, der einem durch gezielte pulsierende Luftstöße das Gefühl vermittelt, einen Knopf gedrückt zu haben. Alternativ könnte man natürlich auch mit Handschuhen arbeiten, um haptisches Feedback zu vermitteln. Derzeit existiert jedoch noch kein Gerät für den Verbrauchermarkt.

Die Simplizität eines Knopfes bleibt daher zunächst unübertroffen. Wenn eine einfache Aktion durch einen simplen Knopfdruck regelbar ist, so scheint eine Geste nur in Ausnahmefällen sinnvoll. Beim Entwickeln neuer Ideen und Ansätze mit Gestensteuerung sollte daher die Devise “Keep it simple and stupid” gelten. Verwenden Sie also nur natürliche Gesten in Ihren Programmen und Steuerungen.

Kontakt

Dipl.-Inform. (FH) Martin FörtschDipl.-Inf. Thomas Endres
Martin FörtschThomas Endres

martin.foertsch@gmail.com

thomas-endres@gmx.de
https://twitter.com/MartinFoertschhttps://twitter.com/originalone1984
http://parrotsonjava.com/http://parrotsonjava.com/

Autoren Kurzbiografien

Martin Förtsch

Martin Förtsch ist ein Software Consultant aus München und studierte Informatik und angewandte Naturwissenschaften. Nebenberuflich beschäftigt er sich intensiv mit der Entwicklung von Gestensteuerungs-Software für verschiedene Kamerasysteme. Unter anderem steuert er die Parrot AR.Drone berührungslos und engagiert sich in Open-Source-Projekten für diesen Bereich. Hauptberuflich setzt er seine Schwerpunkte im Bereich der Softwareentwicklung (insbesondere mit Java), Datenbanken und Suchmaschinentechnologien.

Thomas Endres

Thomas Endres ist studierter Informatiker (TU München) und leidenschaftlicher Softwareentwickler aus Bayern. Er engagiert sich nebenberuflich im Bereich der Gestensteuerung und steuert dort unter anderem Drohnen und Spiele berührungslos. Er arbeitet aber auch an anderen Open-Source-Projekten in Java, C# und allen Spielarten von JavaScript. Beruflich betätigt er sich als Software Consultant und gibt Vorlesungen an der FH Landshut.

  • Intel RealSense
  • Perceptual Computing
  • F200
  • Gestensteuerung
  • Изображение значка: 

    Вложения: 

    https://software.intel.com/sites/default/files/managed/76/b5/02-2015%20-%20Java%20aktuell%20-%20Martin%20F%C3%B6rtsch%20und%20Thomas%20Endres%20-%20Gestensteuerung%20und%20die%20n%C3%A4chste%20Welle%20der%203D-Kameras.pdf
  • Образовательные учреждения
  • Инструменты для разработки
  • Разработка игр
  • Здравоохранение
  • Интернет вещей
  • Microsoft Windows* 8 Desktop
  • Мобильность
  • Открытые исходные коды
  • Сенсорные интерфейсы
  • Опыт пользователя и дизайн
  • Технология Intel® RealSense™
  • «Перцепционные» вычисления
  • .NET*
  • HTML5
  • Java*
  • JavaScript*
  • Разработка игр
  • HTML5
  • Технология Intel® RealSense™
  • Интернет вещей
  • Windows*
  • Лицевая видеокамера F200
  • Ноутбук
  • Планшетный ПК
  • Настольный ПК
  • Разработчики
  • Партнеры
  • Профессорский состав
  • Студенты
  • Microsoft Windows* (XP, Vista, 7)
  • Microsoft Windows* 8
  • Тема зоны: 

    RealSense
  • Технология Intel® RealSense™
  • Включить в RSS: 

    1
  • Начинающий
  • Средний
  • URL

  • Viewing all articles
    Browse latest Browse all 360

    Trending Articles



    <script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>