[PYTHON] Pfeffer-Tutorial (5): Verwenden eines Tablets

Inhalt dieses Tutorials

In diesem Tutorial erklären wir, wie Sie die von der Tablet-Box-Bibliothek bereitgestellten Boxen als Methode zur Steuerung des Brusttabletts verwenden, das eine Funktion von Pepper ist.

  1. Tablet-Spezifikationen
  2. Projektinhaltsbereich
  3. Verwendung der Box: Zeigen Sie den Inhalt an
  4. Verwendung der Box: Holen Sie sich das Touch-Ereignis

Beachten Sie, dass ** virtuelle Roboter keine Tablet-Dienste unterstützen und zu einem Fehler führen **. In diesem Lernprogramm wird jedoch anhand des Inhalts der in Python geschriebenen Box analysiert, was die Tablet-bezogene Box tut. Außerdem wird erklärt, wie Sie sehen können. Wenn Sie also interessiert sind, tun Sie dies bitte.

Tablet-Spezifikationen

Die wichtigsten Spezifikationen des Pepper-Tablets lauten wie folgt.

Artikel Inhalt
Anzeige 10.1 Zoll
Auflösung 1280 x 800
Mediendateiformat AVI, WMV, ASF, MP4, MKV, MPG, DAT, TS, TP, TRP, 3GP
Video-Codec DivX, XviD, H.264, WMV 9/8/7, MPEG1
Video Auflösung Max 1920x1080
Audio-Codec MPEG1 Layer 1/2/3, WMA, OGG Vorbis, PCM, FLAC

Neben Ausgaben wie der Anzeige von Bildern und Videos können Berührungsereignisse erfasst und im Verhalten wiedergegeben werden.

Projektinhaltsbereich

Um den Inhalt auf dem Tablet anzuzeigen, muss der Inhalt, den Sie anzeigen möchten, im Voraus in das Projekt importiert werden. Zu diesem Zeitpunkt ist es notwendig, das Fenster ** Projektinhalt ** zu verstehen, daher werde ich es hier ausführlich erläutern.

project-content.png

  1. Projektdatei ... Eine im Projekt enthaltene Datei. Kann nach Verzeichnis hierarchisiert werden und Dateien können durch Ziehen verschoben werden
  2. Datei / Verzeichnis hinzufügen ... Fügen Sie der Projektdatei ein Element hinzu. Das folgende Menü wird angezeigt
  1. Löschen Sie die ausgewählte Datei / das ausgewählte Verzeichnis

Bereiten Sie für die Ausgabe von Inhalten auf einem Tablet ** ein HTML-Verzeichnis in der Projektdatei für Bilder und Videos vor ** und platzieren Sie die Dateien, die Sie anzeigen möchten, dort. Auf der Box-Seite, die auf diese Dateien verweist, wird die Datei durch den Pfad ** angegeben, der mit dem HTML-Verzeichnis ** beginnt. Die Details der Operationsmethode werden im Tutorial erklärt.

So verwenden Sie die Box: Zeigen Sie den Inhalt an

Bildausgabe

Lassen Sie uns zunächst das Bild einfach auf Peppers Tablet anzeigen. Bitte bereiten Sie eine geeignete Bilddatei in einem der Formate PNG, JPEG und GIF vor und führen Sie die Arbeit aus.

Versuchen Sie zu machen

  1. Vorbereiten der Box für die Verwendung ... Verwenden Sie die Box auf der Registerkarte "Tablet"
    • tablet > Show Image
  2. Schließen Sie die Boxen an show-image.png
  1. Erstellen Sie ein HTML-Verzeichnis für Ihr Tablet Klicken Sie im Projektinhaltsfenster auf die Schaltfläche Hinzufügen und dann auf ** Verzeichnis erstellen ... **. create-html-directory.png Wenn Sie den Namen als HTML erstellen, wird ein HTML-Verzeichnis als Projektdatei erstellt new-html-directory.png

  2. Importieren Sie das Bild ** Klicken Sie auf Datei importieren ... **, um den Dateiauswahldialog zu öffnen. Wenn Sie die Bilddatei auswählen, die Sie anzeigen möchten, wird die Bilddatei als Projektdatei registriert. add-image.png

  3. Ziehen Sie die Bilddatei und verschieben Sie sie in das HTML-Verzeichnis move-image.png Die Bilddatei kann jetzt auf Ihrem Tablet angezeigt werden.

  4. Klicken Sie auf die Parameterschaltfläche im Feld Bild anzeigen und geben Sie den Namen der Bilddatei in ImageUrl ein show-image-params.png Dieser Wert ist eine Pfaddarstellung ab dem HTML-Verzeichnis.

  5. ** [Magie] ** Verhalten aus dem Verzeichnis verschieben Ändern Sie als Zaubertrick, damit Show Image funktioniert, die Position des Verhaltens (gespeichert in der Datei behaviour_1 / behaviour.xar, nachdem Sie ein neues Projekt erstellt haben). Ziehen Sie behaviour.xar aus dem Verzeichnis behaviour_1 und verschieben Sie es wie unten gezeigt in die oberste Ebene der Projektdatei. move-behavior.png Ich werde erklären, warum es magisch ist, indem ich untersuche, wie Show Image erreicht wird.

Sie haben jetzt eine Anwendung, die Bilder auf Ihrem Tablet anzeigt.

Funktionsprüfung

Um den Vorgang zu überprüfen, stellen Sie eine Verbindung zu Pepper her und spielen Sie ihn ab.

Bei einem virtuellen Roboter wird das Feld Bild anzeigen rot angezeigt, um einen Fehler anzuzeigen, und die folgende Fehlermeldung wird in der Protokollansicht angezeigt.

[ERROR] behavior.box :_getTabletService:20 _Behavior__lastUploadedChoregrapheBehavior1798150472__root__ShowImage_13: Cannot find service 'ALTabletService' in index
[WARN ] behavior.box :onInput_onStart:58 _Behavior__lastUploadedChoregrapheBehavior1798150472__root__ShowImage_13: No ALTabletService, can't display the image.

(Ergänzung) Sehen wir uns die Implementierung der Box Image anzeigen an

Ein schneller Weg, um den magischen Grund für behaviour.xar herauszufinden, ist das Feld Bild anzeigen. Das Feld "Bild anzeigen" ist ein ** Python-Feld **. Wenn Sie also im Gegensatz zum Feld "Flussdiagramm" und "Zeitachse" doppelklicken, wird der Skripteditor geöffnet.

script-editor.png

Werfen wir einen Blick auf den Inhalt des Codes. Von diesem Code wird der folgende Code von onStart aufgerufen.

    def onInput_onStart(self):
        # We create TabletService here in order to avoid
        # problems with connections and disconnections of the tablet during the life of the application
        tabletService = self._getTabletService()
        if tabletService:
            try:
                url = self.getParameter("ImageUrl")
                if url == '':
                    self.logger.error("URL of the image is empty")
                if not url.startswith('http'):
                    url = self._getAbsoluteUrl(url)
                tabletService.showImage(url)
            except Exception as err:
                self.logger.error("Error during ShowImage : %s " % err)
                self.onStopped()
        else:
            self.logger.warning("No ALTabletService, can't display the image.")
            self.onStopped()

Im virtuellen Roboter kann der in diesem self._getTabletService () zu erfassende ALTabletService nicht gefunden werden und es tritt ein Fehler auf.

Übrigens, was mit der Magie zusammenhängt, ist dieser Teil "self._getAbsoluteUrl (url)", der den Pfad in die absolute URL konvertiert. Weiter suchen,

    def _getAppName(self):
        import os
        if self.frameManager:
            behaviorPath = os.path.normpath(self.frameManager.getBehaviorPath(self.behaviorId))
            appsFolderFragment = os.path.join("PackageManager", "apps")
            if not (appsFolderFragment in behaviorPath):
                self.logger.error("appsFolderFragment is not in behaviorPath")
            fragment = behaviorPath.split(appsFolderFragment, 1)[1]
            return fragment.lstrip("\\/")
        else:
            self.logger.warning("No ALFrameManager")

    def _getAbsoluteUrl(self, partial_url):
        import os
        subPath = os.path.join(self._getAppName(), os.path.normpath(partial_url).lstrip("\\/"))
        # We create TabletService here in order to avoid
        # problems with connections and disconnections of the tablet during the life of the application
        return "http://%s/apps/%s" %(self._getTabletService().robotIp(), subPath.replace(os.path.sep, "/"))

Beim Generieren der URL zum Anweisen des Tablets wird der Pfad des Verhaltens verwendet, zu dem das Feld "Bild anzeigen" gehört. Dieser wird von "self.frameManager.getBehaviorPath (self.behaviorId)" abgerufen. Befindet sich das Verhalten nicht oben in der Projektdatei, kann die hier angenommene URL nicht abgerufen werden und die Bildanzeige schlägt fehl.

Zusätzlich zur Neupositionierung des Verhaltens können Sie den folgenden Code in den Python-Code im Feld Bild anzeigen einfügen, um dieses Problem zu umgehen.

    def _getAppName(self):
        import os
        if self.frameManager:
            behaviorPath = os.path.normpath(self.frameManager.getBehaviorPath(self.behaviorId))
            appsFolderFragment = os.path.join("PackageManager", "apps")
            if not (appsFolderFragment in behaviorPath):
                self.logger.error("appsFolderFragment is not in behaviorPath")
            fragment = behaviorPath.split(appsFolderFragment, 1)[1]
            #Fügen Sie die folgende Zeile hinzu
            fragment = fragment.split('/')[1]
            return fragment.lstrip("\\/")
        else:
            self.logger.warning("No ALFrameManager")

Auf diese Weise können Sie den Inhalt der Python-Box überprüfen, um Ihr Verständnis der Box zu vertiefen, Protokollausgabecode hinzuzufügen und andere Änderungen vorzunehmen.

Video-Ausgang

Sie können die Videodatei auch auf die gleiche Weise wie die Bilddatei abspielen. Es unterstützt mp4 und mov.

Versuchen Sie zu machen

  1. Vorbereiten der Box für die Verwendung ... Verwenden Sie die Box auf der Registerkarte "Tablet"
    • tablet > Play Video
  2. Schließen Sie die Boxen an play-video-flow.png
  1. Erstellen Sie ein HTML-Verzeichnis und importieren Sie die Videodatei import-movie.png
  1. Legen Sie den Pfad zur Videodatei im Parameter der Box Video abspielen fest. play-video-props.png

  2. ** [Magie] ** Verhalten aus dem Verzeichnis verschieben Wie bei der Bilddatei werden wir auch die Magie ausführen

Jetzt können Sie eine Anwendung haben, die das Video abspielt und das Verhalten beendet, wenn die Wiedergabe beendet ist.

Funktionsprüfung

Stellen Sie eine Verbindung zu Pepper her und versuchen Sie zu spielen. Das Video sollte auf Ihrem Tablet abgespielt werden.

Die Box "Video abspielen" verfügt auch über Eingaben wie "onPauseVideo" (Pause) und "onResumeVideo" (Lebenslauf). So wird das Video beispielsweise nur dann wiedergegeben, wenn festgestellt wird, dass sich eine Person vor Ihnen befindet, und das Video wird gestoppt, wenn keine Personen mehr anwesend sind. Es kann interessant sein, das zu tun.

Verwendung der Box: Touch-Ereignisse abrufen

Es ist auch möglich, mit einem Touch-Ereignis für das Tablet zu verarbeiten. Sagen wir hier "Ja", wenn das Tablet berührt wird.

Versuchen Sie zu machen

  1. Vorbereitung der zu verwendenden Box
  1. Schließen Sie die Boxen an tablet-flow.png

  2. Stellen Sie die Parameter ein touch-params.png

  1. Passen Sie das Feld Sagen an touch-say.png

Jetzt können Sie das Feld "Sagen" ausführen, wenn Sie es berühren.

Funktionsprüfung

Versuchen Sie, eine Verbindung zu Pepper herzustellen, zu spielen und Ihr Tablet zu berühren. Sagen Sie "Ja" und Sie sind erfolgreich.

Die onTouched-Ausgabe enthält Informationen darüber, welche Koordinaten berührt wurden. Es könnte interessant sein, das Verhalten von Pepper mit diesen Informationen ändern zu können.

Tabletten sind ein sehr leistungsfähiges Element bei der Präsentation von Informationen von Pfeffer für Menschen. Zusätzlich zu den hier aufgeführten Bildern und Videos können Sie verschiedene Aktionen ausführen, z. B. das Anzeigen von HTML-Dateien.

Recommended Posts

Pfeffer-Tutorial (5): Verwenden eines Tablets
Pfeffer-Tutorial (7): Bilderkennung
Lernen Sie Librosa mit einem Tutorial 1
[PyTorch Tutorial ④] AUSBILDUNG EINES KLASSIFIERERS
Verwenden eines Druckers mit Debian 10
Ein Memorandum zur Verwendung von eigen3
[Tutorial] Erstellen Sie mithilfe von maschinellem Lernen in 30 Minuten einen einzigartigen Ausdrucksextraktor
[Kaggle] Ich habe mit dem Titanic-Tutorial eine Sammlung von Problemen erstellt
Generieren Sie ein Docker-Image mit Fabric
Ein Memorandum bei der Verwendung von schöner Suppe
Erstellen einer Webanwendung mit Flask ②
Ich habe einen Line-Bot mit Python gemacht!
Lerne Zundokokiyoshi mit einem einfachen RNN
Erstellen Sie mit tkinter eine Python-GUI
Machen Sie eine Tweet-Box für Pepper
Zeichnen einer Silbersteinkurve mit Python
Erstellen Sie mit TensorFlow eine Gesichtserkennung
Erstellen Sie ein verschachteltes Wörterbuch mit defaultdict
Erstellen einer einfachen Tabelle mit Stettytable
Erstellen Sie einen SlackBot-Dienst für Pepper
Erstellen einer Webanwendung mit Flask ①
Verwenden einer seriellen Konsole unter Ubuntu 20.04
Erstellen eines Lernmodells mit MNIST
Die Geschichte der Verwendung von Python reduziert
Erstellen einer Webanwendung mit Flask ③
Erstellen Sie die CRUD-API mit der Fast API
Gesichtserkennung mit einem Kaskadenklassifikator
Erstellen einer Webanwendung mit Flask ④
Verwenden einer Webkamera mit Raspberry Pi
Empfehlungs-Tutorial mit Assoziationsanalyse (Konzept)
Erstellen Sie mit Boost.Python einen C-Sprach-Wrapper