Verwenden einer Intel RealSense 3D-Kamera mit einem Intel Edison Board

Ursprünglicher Autor: Peter Ma
  • Übersetzung
  • Tutorial
In diesem Artikel erfahren Sie, wie Sie das Intel Edison-Board mit der RealSense-3D-Kamera gemeinsam nutzen können. Wir werden zwei Anwendungen erstellen, von denen eine eine Intel RealSense 3D-Kamera für die Gestenanalyse und eine Intel Edison-Platine zum Schalten der LEDs auf der Platine verwendet. Die zweite Anwendung verwendet die Intel Edison-Platine zum Empfangen von Daten von Temperatursensoren und Intel RealSense zum Synthetisieren von Sprache zum Lesen von Temperaturinformationen.


Jetzt, in der Welt, die die Ära der Mobiltelefone ablöst, sehen wir das Aufkommen intelligenter Geräte, die mit Dingen verbunden sind, die wir uns nicht einmal vorstellen können. Eine Welt namens Internet der Dinge entsteht, oder kurz IoT (Internet der Dinge). IoT-Geräte stecken noch in den Kinderschuhen. Sie beginnen mit einer Schrittzähleruhr und enden mit einem Auto, das über das Telefon eingeschaltet wird. Ein interessantes Merkmal von IoT-Geräten ist, dass sie mit einer Vielzahl billiger Sensoren ausgestattet werden können, die Temperatur, Luftfeuchtigkeit, Herzfrequenz usw. messen können. Da Ihr Telefon und Ihr Computer keine derartigen Sensoren hatten, sind diese Daten nun zum ersten Mal seit jeher verfügbar.

Mit der Intel Edison-Plattform und dem Intel Quark-Prozessor können Sie problemlos einen Prototyp erstellen, der Informationen von Sensoren sammelt und letztendlich ein innovatives Produkt schafft.

Eine weitere Innovation von Intel ist die Intel RealSense-Technologie. Mit der RealSense 3D-Kamera und dem SDK können Anwendungen Gestenerkennung, Gesichtsanalyse, Hintergrundtrennung, Spracherkennung, Sprachsynthese und mehr durchführen. Es ist, als hätten wir eine Art Supersensor, der viele verschiedene Daten empfangen kann. Mit dieser Technologie können wir zusammen mit dem Intel Edison Board viele kreative Anwendungen erstellen, die sowohl nützlich als auch interessant sind.

Notwendige Ausrüstung:

  • Intel Edison-Modul mit Arduino-Adapter
  • Seeed Grove * - Starterkit Plus - Intel IoT Edition
  • Computer der 4. Generation (Haswell oder neuer) mit Intel Core
  • Microsoft Windows 8.1 (64-Bit)
  • 8 GB freier Festplattenspeicher
  • USB 3.0
  • Intel RealSense 3D F200 Kamera (intern oder extern)
  • (Optional) Intel NUC (Next Unit Computing) Minicomputer mit Intel Core Prozessor der 4. Generation

Software:


Was ist das Intel RealSense SDK?


Das Intel RealSense SDK bietet Gesichtsanalyse, Hand- und Fingerverfolgung, Spracherkennung, Sprachsynthese, Objektverfolgung für Augmented Reality, Hintergrundsegmentierung, Augmented Reality und viele andere Funktionen durch eine Kombination aus Hardware, Software und einer 3D-Kamera. Die aktuelle Version des SDK unterstützt Microsoft .NET Framework, Unity Pro 4.1.0 und höher, Processing 2.2.1 oder höher und JDK 1.7.0_11 oder höher. In unserem Beispiel verwenden wir .NET und C #.

Eine typische Anwendung, die mit RealSense entwickelt werden kann, umfasst präsenzbasierte Kommunikation, Spiele, natürliche Interaktion, interaktive Handlung und Intel Capture and Share-Technologie. Dies ist jedoch nur ein kleiner Teil aller Funktionen.
Weitere Informationen zur Intel RealSense-Technologie finden Sie in der Technologieübersicht von Intel .

Und laden Sie das kostenlose SDK herunter .

Ein genauer Blick auf die Hardware


Intel Edison ist eine der ersten in einer Reihe kostengünstiger Allzweck-Computerplattformen. Es wurde entwickelt, um schnell und einfach IoT-Geräte zu prototypisieren und die Möglichkeit einer späteren kommerziellen Entwicklung zu bieten.

Intel Edison basiert auf dem Dual-Core-Intel-Atom-SoC-Chip, der in 22-nm-Technologie hergestellt und mit einer Frequenz von 500 MHz betrieben wird. Es unterstützt 40 GPIOs (Allzweck-Ein- / Ausgänge) und umfasst 1 GB LPDDR3-RAM, 4 GB EMMC-Flash-Speicher, Dual-Band-WLAN, Bluetooth und all dies mit einer geringen Größe.

Es läuft der volle Linux-Kernel. Und wenn Sie eine bessere Leistung erzielen möchten, können Sie auf der Hardware-Ebene von Linux schreiben.

Die Linux-Version enthält auch eine Implementierung von Arduino als reguläres Linux-Programm. Einfach ausgedrückt, können Sie normale Arduino-Skizzen schreiben und an die Tafel schreiben. Und genau das werden wir tun.

Erfahren Sie mehr auf der Intel Edison Board kann hier .

Arduino-Adapter


Der Arduino-Adapter wird für zwei Zwecke benötigt. Erstens können Sie die Prototyping-Plattform vergrößern, wodurch der Zugriff auf E / A-Pins vereinfacht wird. Zweitens macht es die Plattform mit Arduino kompatibel. Dies bedeutet, dass wir Arduino-kompatible Abschirmungen auf dem Intel Edison-Board verwenden können. In der folgenden Abbildung ist das Intel Edison-Modul im Arduino-Adapter installiert.



Grove Starter Kit Plus


Der vollständige Name des Kits lautet „Grove Starter Kit Plus - Intel IoT Edition“. Es wurde ursprünglich für das Intel Galileo Gen 2 Board entwickelt und ist dank des Arduino Adapters zum Glück vollständig mit dem Intel Edison Board kompatibel.

Das Kit soll die Arbeit und das Prototyping von Geräten mit Sensoren, Aktoren und Abschirmungen vereinfachen. Es enthält eine Arduino-kompatible Abschirmung mit Standard-Vierdrahtsteckern. Diese Anschlüsse werden an E / A-Ports angeschlossen, die mit den mitgelieferten Kabeln einfach an die Sensoren und Aktoren aus dem Satz angeschlossen werden können. Dies bedeutet, dass Sie Ihr Projekt ohne ein Bündel von Drähten und Pull-up-Widerständen erstellen können und sich nicht einmal um die Polarität der Verbindung kümmern müssen.

Hier finden Sie eine detailliertere Beschreibung des Kits.

Die Seeed Studios, die das Grove Kit erstellt haben, verfügen über viele nützliche Dokumentationen. Ich empfehle, Sketchbook Starter herunterzuladen . Sie können auch die Wiki-Seite mit einem Lesezeichen versehen :



Intel RealSense 3D F200 Kamera


Die Intel RealSense 3D-Kamera ist entweder extern oder intern. Beide Modifikationen sind für Spiele, Unterhaltung, Fotografie und die Erstellung von Inhalten vorgesehen. Eine 3D-Kamera ist ein hoch entwickelter Sensor, der eigentlich Teil des IoT ist (nicht umsonst ist das Wort Sense in seinem Namen). Für den Betrieb der Kamera sind USB 3.0 und der Intel Core Prozessor der 4. Generation (Haswell) sowie 8 GB freier Speicherplatz erforderlich.

Die Kamera verfügt über einen 1080p HD-Farbsensor und einen Tiefensensor, der dem Computer 3D-Sicht und multidirektionale Wahrnehmung bietet. Sie können auch ein Entwickler-Kit kaufen .

Mini PC - Intel NUC basierend auf Intel Core Prozessor der 4. Generation


Der Intel NUC-Minicomputer (Next Unit Computing) ist ein optionales Gerät, das als zentrale Steuereinheit für die RealSense-3D-Kamera und das Intel Edison-Modul verwendet werden kann. Es kann zusätzliche Funktionen ausführen, z. B. das Empfangen und Speichern von Daten aus der Cloud mit ihrer anschließenden Analyse. Für die Entwicklung ist dies natürlich nicht erforderlich, da eine herkömmliche Kamera (nicht Intel RealSense 3D) über ein USB-Kabel direkt an das Intel Edison-Board angeschlossen werden kann. Wenn Sie es jedoch verwenden, können die von der Kamera empfangenen Informationen verarbeitet und an die Intel Edison-Platine gesendet werden, um das Signal zu reproduzieren, die LEDs, Motoren usw. einzuschalten. Informationen, die von den Sensoren auf dem Intel Edison-Board empfangen werden, können an den Intel NUC Mini-PC gesendet werden.

Da RealSense-Kameras USB 3.0, 8 GB Speicher und einen Intel Core-Prozessor der 4. Generation benötigen, ist die Wahl von Intel NUC die einfachste Lösung. Ein weiterer Vorteil ist die Benutzeroberfläche, da Sie den HDMI-Anschluss wie einen normalen Computer verwenden können. Wenn Sie keinen Computer mit der richtigen Software haben, ist Intel NUC möglicherweise eine erschwingliche Gelegenheit, einen zu haben.

Weitere Informationen zum Intel NUC finden Sie im Test .

Softwareinstallation und Codierungsvorbereitung


Wir werden mit zwei Beispielen arbeiten:

  1. Gestenerfassung von der Intel RealSense 3D-Kamera zur Steuerung der LEDs auf dem Intel Edison-Board.
  2. Verwenden von Daten, die von einem Temperatursensor stammen, der an eine Intel Edison-Platine angeschlossen ist, um die Sprachsynthese mit dem Intel RealSense SDK zu ermöglichen.

Arduino IDE für Intel IoT Platform


Sie müssen eine spezielle Version der Arduino IDE herunterladen, um Skizzen auf Ihr Board herunterzuladen. Die aktuelle Version 1.6.0 finden Sie hier .

Treiber für Intel Edison Board


Es müssen noch Treiber für das Intel Edison Board heruntergeladen und installiert werden. Dies sollte der letzte Link auf der Seite unter der Überschrift „Treibersoftware“ (aktuelle Version 1.2.1) sein. Weitere Anweisungen finden Sie im Handbuch Erste Schritte :

Visuelles Studio


Visual Studio ist eine großartige Sammlung von Entwicklertools und -diensten, mit denen Sie Anwendungen für viele Plattformen erstellen können. Intel RealSense SDK erfordert mindestens Visual Studio und Windows 8.1. Visual Studio unterstützt C, C ++, VB.NET, C #, F #, M, Python *, Ruby, JavaScript * und viele andere Sprachen. Wir werden C # verwenden.

Sie können Visual Studio Express Edition oder Visual Studio Community kostenlos herunterladen. Die kommerzielle Version von Visual Studio kann kostenlos über das DreamSpark-Programm für Studenten und BizSpark für Startups bezogen werden.

Weitere Informationen zu Visual Studio finden Sie hier . Und für C # hier .

Intel RealSense SDK


Mit dem Intel RealSense SDK können Entwickler die 3D-Funktionen der zuvor beschriebenen Funktionen nutzen. Die aktuelle Version 4.0.0.112526 (oder Gold R2 Release) finden Sie hier .

Intel Edison Board testen


Bevor wir mit den unten beschriebenen Schritten beginnen, stellen wir sicher, dass wir das Beispiel der Blink-Skizze ausführen können. Es befindet sich in der heruntergeladenen Arduino IDE im Ordner examples -> 01.Basics -> Blink.

Installieren Sie Visual Studio und Intel RealSense SDK


Die Installation von Visual Studio sollte einfach genug sein. Um das Intel RealSense SDK zu installieren, benötigen Sie eine angeschlossene 3D-Kamera für USB 3.0. Wenn alles korrekt installiert ist, sehen Sie Beispiele im Intel RealSense SDK-Beispielbrowser auf Ihrem Desktop, in denen Sie Beispiele in C ++ und C # sehen können. Kamerabeispiele sind ebenfalls verfügbar. Wir werden das Beispiel „Hand Viewer“ verwenden.
Nach der Installation des SDK muss der „F200 Depth Camera Manager“ geladen werden. Er ist hier . In Abwesenheit eines Kameramanagers werden Beispielprogramme nicht ordnungsgemäß initialisiert.



Beispiel 1. Senden von Signalen von einer RealSense 3D-Kamera an ein Intel Edison-Board


Im ersten Beispiel erstellen wir eine einfache Anwendung, die mithilfe von Handgesten Signale von der Kamera an die Platine sendet, um die LEDs zu steuern.

Code für das Intel Edison Board


Zuerst werden wir den letzten Teil des Programms erstellen. Wir verbinden das Grove-Kit mit dem Arduino-Adapter, nehmen die LED (LED-Sockel-Kit v1.3) und verbinden sie mit dem D2-Anschluss.



Verbinden Sie das Intel Edison-Board mit einem USB-Kabel mit dem Intel NUC-Computer oder dem Mini-Getriebe. Verwenden Sie den Geräte-Manager von Windows Device Manager, um herauszufinden, welchen seriellen Anschluss das Intel Edison-Board verwendet. Auf dem nächsten Bild sehen Sie, dass es in unserem Fall „COM16“ ist. Windows erkennt die Karte automatisch und weist einen Port zu, wenn die Karte an den Computer angeschlossen wird.



In der Arduino IDE-Entwicklungsumgebung wählen wir im Menü Tools-> Board das Intel Edison-Board aus.



Und in Tools -> Port wählen Sie "COM16".



Und zum Schluss noch ein bisschen Programmierung. Da unsere Karte als Ausgabegerät verwendet wird, funktionieren die nächsten Codezeilen mit der seriellen Schnittstelle, an der 1 die LED einschaltet und 0 ausschaltet.

const int ledPin = 2;     // the number of the pushbutton pin
void setup() {
  // initialize the LED pin as an output:
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);
}
void loop() {
  if (Serial.available()>0) 
  /* read the most recent byte */
  {
    int tmp = Serial.parseInt();
    if(tmp == 0)
    {
      // turn LED off:
      digitalWrite(ledPin, LOW);
    }
    else if (tmp == 1)
    {
        // turn LED on:
        digitalWrite(ledPin, HIGH);
    }
  }
}

Damit ist unser Beispielcode für das Intel Edison Board abgeschlossen.

Anwendungscode für Intel RealSense


In C # F200-Beispielen gibt es eine „Hand Viewer“ -Anwendung. Wählen Sie rechts den Quellcode aus und öffnen Sie den Ordner RSSDK / FF_HandsViewer.cs. Kopieren Sie den gesamten Ordner auf Ihren Desktop, damit Sie Änderungen am Projekt vornehmen können.

Als besondere Geste werden wir Spreadfinger verwenden. Wenn Sie möchten, können Sie jederzeit zu einer anderen Geste wechseln.



Ändern Sie in der MainForm.cs-Datei den folgenden Code, und fügen Sie hinzu. Das Programm ist relativ einfach, wir kündigen nur die serielle Schnittstelle an und verfolgen die letzte Geste. Wenn sich die Geste geändert hat, ändern wir das Flag für die LED. Die UpdateInfo-Funktion enthält Beispielcode, der die Geste des Benutzers aktualisiert. Wir können die Statusvariable verwenden, um zu verfolgen, wann die Geste „Spreadfingers“ angezeigt wird. In diesem Fall wechseln wir zum seriellen Port 1 und schalten die LED ein. Wenn die Geste beendet ist, senden wir 0, um die LED auszuschalten.

using System.IO.Ports;
…
public partial class MainForm : Form 
{
	private SerialPort _serialPort;
private int _lastGesture;
	…
public MainForm(PXCMSession session) 
{
	…
	_serialPort = new SerialPort();
_serialPort.PortName = "COM16"; //Serial port Edison is connected to
            _serialPort.BaudRate = 9600;
            _serialPort.ReadTimeout = 500;
            _serialPort.WriteTimeout = 500;
}
private void WriteToSerialPort(int value)
{
            if (_lastGesture != write)
            {
                Console.WriteLine(write.ToString());
                _serialPort.Write(write.ToString());
            }
            _lastGesture = write;
}
public void UpdateInfo(string status,Color color)
{
…
            if (status.Contains("spreadfingers") || status.Contains("spreadfingers"))
            {
                WriteToSerialPort(1);
            }
            else
            {
                WriteToSerialPort(0);
            }          
 }
private void Start_Click(object sender, EventArgs e)
{
    …
    _serialPort.Open();
}
private void Stop_Click(object sender, EventArgs e)
 {
     …
     _serialPort.Close();
 }

Wenn alles richtig funktioniert, drücken Sie die Starttaste und legen Sie Ihre Handfläche vor die Kamera. Wenn die Finger offen sind, sollte die LED aufleuchten.



Beispiel 2. Daten von einem Intel Edison-Board lesen und Intel RealSense für die Ausgabe verwenden


In diesem Beispiel verwenden wir einen an der Intel Edison-Platine angebrachten Temperatursensor für die Dateneingabe und Sprachsynthese von Intel RealSense, um das Lesen der Sensordaten zu vereinfachen.

Code für das Intel Edison Board


Temperatursensor Der Temperatursensor v1.1 aus dem Grove-Kit ist ein analoger Sensor, den wir an den A0-Anschluss auf der Platine anschließen können. Der folgende Arduino-Code liest die Temperatur in Grad Celsius. Das Programm hat eine Verzögerung von 15 Sekunden, sodass das Sprachwiedergabemodul Zeit hat, den gesamten erforderlichen Text auszusprechen. Sie können die Dauer dieser Verzögerung bei Bedarf ändern. Sie können zusätzliche Logik schreiben, um Warnungen anzuzeigen, wenn die Temperatur zu hoch oder zu niedrig ist.

#include 
int a;
float temperature;
int B=3975;                  //B value of the thermistor
float resistance;
void setup()
{
  Serial.begin(9600);  
}
void loop()
{
  a=analogRead(0);
  resistance=(float)(1023-a)*10000/a; //get the resistance of the sensor;
  temperature=1/(log(resistance/10000)/B+1/298.15)-273.15;//convert to temperature via datasheet ;
  Serial.print("Current temperature is ");
  Serial.print(temperature);
  Serial.println(" celcius");
  delay(15000);
}

Intel RealSense App


Im Abschnitt Common Samples sehen Sie ein Beispiel für die Sprachsynthese. Kopieren Sie den Quellordner wie im vorherigen Beispiel „Hand Viewer“. Die Benutzeroberfläche wird sich nicht ändern, aber jetzt ist es unser Ziel, Sprachsynthese zum Sprechen von Sensordaten zu verwenden. Und wir verwenden immer noch COM16.
Ändern Sie die MainForm.cs-Datei wie folgt.

using System.IO.Ports;
…
public partial class MainForm : Form 
{
        private SerialPort _serialPort;
        private static bool _continue;
        protected static string curr_module_name;
        protected static uint curr_language;
        protected static int curr_volume;
        protected static int curr_pitch;
        protected static int curr_speech_rate;
        Thread readThread = new Thread(Read);
        static public void Read()
        {
            while (_continue)
            {
                try
                {
                    string message = _serialPort.ReadLine();
                    Console.WriteLine(message);
                    VoiceSynthesis.Speak(curr_module_name, (int)curr_language, message, curr_volume, curr_pitch, curr_speech_rate);
                }
                catch (TimeoutException) { }
            }
        }
        public MainForm(PXCMSession session)
        {
            …
            _serialPort = new SerialPort();
            _serialPort.PortName = "COM16"; //Serial port Edison is connected to
            _serialPort.BaudRate = 9600;
            _serialPort.ReadTimeout = 500;
            _serialPort.WriteTimeout = 500;
            _serialPort.Open();
            _continue = true;
            readThread.Start();
        }
        private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
        {
            _continue = false;
            readThread.Join();
            _serialPort.Close();
        }
        …	
}

Wenn alles korrekt funktioniert, liest das Programm alle 15 Sekunden Daten vom Temperatursensor. Haben Sie keine Angst, das Programm nach Ihren Wünschen zu ändern, z. B. die Oberfläche zu ändern. Oder Sie kopieren einfach die Dateien VoiceSynthesis.cs und VoiceOut.cs in Ihr Projekt.

Mach weiter


Ich hoffe, dass diese beiden Beispiele Entwicklern und Anfängern helfen werden, ihren Horizont zu erweitern und mehr Ideen für den Einsatz dieser beiden Technologien zu erhalten. Ein Prototyp, den ich mir ausgedacht habe, ist AntiSnoozer. Darin erkennt die Intel RealSense 3D-Kamera, wenn der Treiber schläfrig wird, und sendet einen Befehl an das Intel Edison-Board, um zusätzliche Signale abzuspielen, die den Treiber wecken. Es sind Tausende von Kombinationen möglich, um die Leistungsfähigkeit dieser beiden Technologien zu nutzen. Also, was wirst du tun?

Jetzt auch beliebt: