Utiliser la Technologie Intel RealSense en combinaison avec la Plateforme de Développement Intel Edison

Par :
Intel IoT
lun, 19/10/2015 - 17:43
Niveau :
Avancé

Introduction

Dans un monde post-smartphones, nous observons aujourd’hui l’avènement d’appareils intelligents connectés à toutes sortes d’objets. L’«Internet des objets », ou IoT, est né. Si les appareils IoT en sont encore à leurs débuts, les applications foisonnent déjà, de la montre podomètre à la voiture connectée. L’aspect le plus intéressant des appareils IoT est qu’ils peuvent être équipés de nombreux capteurs peu onéreux qui peuvent lire la température, l’humidité, les pulsations cardiaques, et autant de choses que nos téléphones et ordinateurs ne peuvent pas faire, rendant ces informations accessibles à la lecture pour la première fois dans nos vies. Et avec la plateforme Intel® Edison et les processeurs Intel® Quark™, nous pouvons facilement construire des prototypes qui collectent les informations des capteurs pour créer des produits innovants.

Une autre innovation d’Intel est la technologie Intel® RealSense™. Avec les caméras 3D Intel RealSense et leur SDK, les applications peuvent réaliser des détections de gestes, des analyses faciles, une segmentation de l’arrière-plan, une reconnaissance vocale, une synthèse vocale, et plus encore. Une sorte de super capteur capable de détecter une infinité de choses... Combinés avec les utilisations polyvalentes permises par le kit Intel® Edison et sa sortie, nous pouvons ainsi construire une multitude d’applications créatives, à la fois utiles et ludiques.

Dans cet article, nous vous proposons deux exemples d’applications de ce type, l’une utilisant la Caméra 3D Intel RealSense comme entrée et l’autre utilisant la carte Intel® Edison comme sortie, le SDK déclenchant un voyant à LED sur la carte. Dans le deuxième exemple, qui utilise la carte Intel® Edison comme entrée et la Caméra 3D Intel RealSense comme sortie, une synthèse vocale est utilisée pour dicter les données du capteur de la carte.

Matériel

  • Carte Intel® Edison avec la carte Arduino* breakout
  • Seeed Grove* – Starter Kit Plus - Intel® IoT Edition
  • Processeur Intel® Core™ de 4e génération (ou postérieure)
  • 8 Go d’espace libre
  • USB 3.0
  • Une Caméra 3D Intel® RealSense™ F200 (intégrée au système ou version périphérique)
  • (optionnel) Intel® NUC (Next Unit Computing) avec un processeur Intel Core de 4e génération

Logiciel

Qu’est-ce que le SDK Intel® RealSense™ ?

Le SDK Intel RealSense offre une analyse faciale, un suivi des mains et doigts, une reconnaissance vocale, une synthèse vocale, un tracker d’objet en réalité augmentée, la segmentation de l’arrière-plan, la réalité augmentée et bien plus encore de fonctionnalités grâce à la combinaison de matériel, logiciel, et d’une caméra 3D. Le SDK actuel prend en charge Microsoft .NET 4.0 framework, Unity* Pro 4.1.0 ou plus, Processing* 2.2.1 ou plus, et JDK 1.7.0_11 ou plus. Dans notre exemple, nous allons utiliser .NET et C#.

Les applications qui peuvent typiquement être développées avec le SDK Intel RealSense incluent la collaboration immersive, les jeux, les interactions naturelles, la narration interactive, et l’utilisation d’Intel® Capture and Share, mais il ne s’agit que d’un aperçu de toutes les possibilités.

Pour plus d’informations à propos de la technologie Intel RealSense, reportez-vous à cette page.

Vous pouvez télécharger gratuitement le SDK depuis ce lien.

Le matériel décortiqué

La carte Intel® Edison est l’une des premières d’une série de plateforme peu onéreuse et à application générale. Elle est conçue pour permettre de concevoir rapidement et facilement des prototypes de projets IdO tout en procurant un chemin vers la commercialisation de produits finis.

La carte Intel® Edison utilise un SoC Intel® Atom™ dual-core 22 nm cadencé à 500 MHz. Elle prend en charge 40 GPIOs et inclut 1 Go de RAM LP DDR3, 4 Go EMMC pour le stockage, le Wi-Fi* double bande, et le Bluetooth*, tout cela dans des dimensions réduites.

Elle tourne sous un noyau complet Linux*, et pour obtenir les meilleures performances possibles, vous pouvez programmer en code Linux de bas niveau.

De plus, la version de Linux de la carte Intel® Edison contient une implémentation Arduino en tant que programme Linux. En d’autres termes, cela signifie que vous pouvez écrire des sketches Arduino habituels et les lancer sur la carte. Et c’est exactement ce que nous allons faire.

Apprenez-en plus sur la carte Intel® Edison ici

Carte Arduino* Breakout

La carte Arduino breakout sert deux objectifs. D’abord, elle procure une plateforme plus grande pour réaliser des prototypes, avec un accès facilité aux ports d’entrée et de sortie. Ensuite, elle procure une plateforme matérielle compatible avec Arduino, ce qui signifie qu’il est possible d’utiliser des shields standard Arduino avec la carte Intel® Edison. La Figure 1 montre la carte montée sur la carte Arduino breakout.


Figure 1. La carte Intel® Edison montée sur la carte Arduino* breakout

Grove Starter Kit Plus

Le nom complet du kit est « Grove Starter Kit Plus - Intel® IoT Edition », et il a été originellement conçu pour la carte Intel Galileo de 2e génération. Heureusement, il est parfaitement compatible avec la carte Intel® Edison via la carte Arduino breakout.

Le kit (montré dans la Figure 2) est conçu pour simplifier le travail et la réalisation de prototypes avec des capteurs, actionneurs, et shields. Il contient un shield compatible avec Arduino avec quatre (4) connecteurs à broches. Ces connecteurs alimentent les ports d’entrée et de sortie qui se connectent avec les câbles inclus qui s’attachent facilement aux capteurs et contrôleurs dans le kit. Cela signifie que vous pouvez construire des projets sans avoir besoin de vous encombrer de petits câbles et de résistance de rappel et de tirage, ou de vous inquiéter de la polarité.

Apprenez-en plus et achetez le kit ici .

Le créateur du Grove Kit, Seeed Studios, propose de nombreuses ressources utiles en ligne.

Je vous conseille de copier ou de télécharger le repo Sketchbook Starter ici .

Et marquez la page du Grove Wiki ici .


Figure 2. Grove Starter Kit Plus - Intel® IoT Edition

Une Caméra 3D Intel® RealSense™ F200

En version intégrée au système ou en périphérique, la caméra 3D Intel RealSense est fabriquée pour les interactions ludiques, le divertissement, la photographie, et la création de contenus. La caméra 3D est un capteur complexe qui, d’une certaine façon, fait partie de l’Internet des objets (après tout, son nom est RealSense). Les exigences minimales de la caméra sont un port USB 3.0, un processeur Intel® Core™ de 4e génération, et 8 Go d’espace disque.

La caméra (montrée sur la Figure 3) dispose d’un objectif couleur HD 1080 et d’un capteur de profondeur, donnant au PC une vision en 3D et une expérience immersive.

Vous pouvez acheter le kit développeur complet, qui inclut la caméra, sur cette page.


Figure 3. Caméra 3D Intel® RealSense™ F200

Intel® Next Unit Computing (Intel® NUC) équipé de Processeurs Intel® Core™ de 4e génération ou postérieure

L’Intel NUC est un appareil optionnel qui peut être utilisé comme concentrateur central pour la Caméra 3D Intel RealSense et le module Intel® Edison, ainsi qu’effectuer des fonctions additionnelles comme stocker et retrouver des données vers et depuis le cloud, et réaliser des analyses plus poussées. Elle n’est pas requise pour le développement puisque vous pouvez connecter la caméra et le kit de la carte Intel® Edison breakout grâce au port USB. Cependant, en utilisation, les informations reçues depuis la caméra peuvent être traitées et envoyées à la carte pour activer des sorties telles que des alarmes, moteurs, voyants lumineux, etc. Les informations reçues depuis les capteurs de la carte peuvent être envoyées à l’Intel NUC pour activer la synthèse vocale en utilisant le SDK Intel RealSense.

Puisque la caméra nécessite un port USB 3.0, 8 Go de RAM, et un Intel Core processor de 4e génération (ou plus), l’Intel NUC (montré en Figure 4) satisfait facilement ces exigences. Un autre avantage est son interface utilisateur, avec un port HDMI, le rendant facilement utilisable comme ordinateur si nécessaire. Si vous n’avez pas de PC avec les logiciels nécessaires, un Intel NUC peut être une option relativement peu coûteuse pour en posséder un.

Pour plus de détails sur l’Intel NUC, rendez-vous sur la page Intel.


Figure 4. Intel® NUC équipé d’un processeur Intel® Core™ de 4e génération

Installer le logiciel et commencer à programmer

Nous utiliserons deux exemples de codes :

  1. Capture de gestes depuis la Caméra 3D Intel RealSense pour contrôler les voyants LED sur la carte Intel® Edison.
  2. Utiliser des données depuis le capteur de température de la carte Intel® Edison pour activer la synthèse vocale du SDK Intel RealSense.

IDE Arduino pour plateformes IdO Intel®

Vous devez télécharger la version spécifique à l’IDE Arduino pour déployer des Sketches sur votre carte. La version actuelle est la version 1.6.0, et elle est disponible ici :

Intel (ENG) ou Programmez (FR)

Pilotes de la carte Intel® Edison

Vous devez également télécharger et installer les pilotes de la carte Intel® Edison depuis la page associée.

Ce devrait être le dernier lien sur la page nommée « Driver Software. » La version actuelle est 1.2.1.

Pour les instructions suivantes, reportez-vous au Guide de démarrage.

Visual Studio

Le Visual Studio est une collection complète d’outils et de services de développement pour vous aider à créer des applications pour de multiples plateformes. Le SDK Intel RealSense nécessite Visual Studio et Windows 8.1 comme équipement logiciel minimal. Visual Studio prend en charge C, C++, VB.NET, C#, F#, M, Python*, Ruby, JavaScript* et de nombreux autres langages. Ce guide spécifique utilise C#.

Vous pouvez télécharger gratuitement Visual Studio Express Edition. La version commerciale de Visual Studio peut être obtenue gratuitement par le biais de programmes tels que DreamSpark* pour les étudiants, et BizSpark* pour les startups.

Vous pouvez trouver plus d’informations à propos de Visual Studio sur le site officiel et à propos de C# sur le MSDN

SDK Intel® RealSense™

Le SDK Intel RealSense permet aux développeurs de tirer profit des capacités 3D avec les fonctionnalités décrites plus tôt. La version actuelle est 4.0.0.112526 (ou distribution Gold R2) et est disponible ici.

Tester la carte Intel® Edison

Avant de commencer le guide ci-dessous, veuillez vous assurer que vous êtes en mesure de faire tourner le sketch d’exemple Clignotement. Il est inclus dans le pack de téléchargement de l’IDE Arduino dans « examples -> 01. Basics -> Blink folder ».

Intel (ENG) ou Programmez (FR)

Installer Visual Studio* et le SDK Intel® RealSense™

Installer Visual Studio ne devrait pas poser de difficulté, le SDK Intel RealSense nécessite toutefois qu’une Caméra 3D soit connectée dans un port USB 3.0 pour l’installation. Vous saurez que l’installation a été correctement effectuée lorsque vous verrez le Dossier d’exemples du SDK Intel RealSense (Figure 5) sur votre bureau, dans lequel vous pouvez parcourir des exemples en C++ et en C#. Des exemples spécifiques pour la Caméra sont également disponibles : nous utiliserons l’exemple Hand Viewer.

Le Gestionnaire de Caméra en Profondeur F200 (Depth Camera Manager) doit être téléchargé séparément après l’installation du SDK. Il est situé à cette adresse.

Sans le gestionnaire de caméra, les exemples de codes ne s’initialiseront pas correctement.


Figure 5. Dossier d’exemples d’Intel® RealSense™

Exemple #1, Envoyer des signaux de la Caméra 3D Intel® RealSense™ à la carte Intel® Edison

Pour le premier exemple, nous allons faire une application simple qui utilise les gestes de la main pour envoyer des signaux depuis la caméra pour contrôler les voyants à LED sur la carte.

Code pour la carte Intel® Edison

Nous devrons d’abord construire le côté de réception du code. Nous allons connecter le Grove kit à la carte Arduino breakout et prendre le LED socket kit v 1.3 et le connecter au D2 comme montré dans la Figure 6.

 
Figure 6. Le LED socket kit v 1.3 connecté au Grove Kit D2 sur la carte d’extension Arduino*.

Connectez le port USB à votre PC ou Intel NUC, utilisez le Gestionnaire de Périphériques de Windows* pour trouver quel port utilise la carte Intel® Edison. Sur la Figure 7, nous pouvons voir qu’il s’agit de « COM16 » dans notre cas. Windows détecte automatiquement la carte et assigne le port lorsque nous connectons la carte à notre PC.


Figure 7. Gestionnaire de Périphériques de Windows* avec le port COM virtuel de la carte Intel® Edison

Dans le menu Outils de l’IDE Arduino, nous allons sélectionner « Intel® Edison » comme carte et « COM16 » comme Port comme montré Figures 8 et 9.


Figure 8. Sélection de la carte dans l’IDE Arduino*


Figure 9. Sélection du port dans l’IDE Arduino*

Finalement, nous allons pouvoir faire un peu de programmation. Puisque la carte est utilisée comme périphérique de sortie, les quelques lignes de code qui suivent vont contrôler le port série, pour lequel 1 allume le voyant et 0 éteint le voyant.

01 const int ledPin = 2;     // the number of the pushbutton pin
02 void setup() {
03   // initialize the LED pin as an output:
04   pinMode(ledPin, OUTPUT);
05   Serial.begin(9600);
06 }
07  
08 void loop() {
09   if (Serial.available()>0)
10   /* read the most recent byte */
11   {
12     int tmp = Serial.parseInt();
13     if(tmp == 0)
14     {
15       // turn LED off:
16       digitalWrite(ledPin, LOW);
17     }
18     else if (tmp == 1)
19     {
20         // turn LED on:
21         digitalWrite(ledPin, HIGH);
22     }
23   }
24 }

Nous en avons maintenant terminé avec le code exemple de la carte Intel® Edison.

Code pour l’application Intel® RealSense™

Dans les Exemples F200 C#, se trouve l’application Hand Viewer. Cliquez sur la source à droite et ouvrez le dossier RSSDK/FF_HandsViewer.cs. Copiez entièrement ce dossier sur le bureau afin que nous puissions modifier ce projet.

Le geste spécifique que nous allons utiliser est celui des doigts écartés (spread fingers). Vous pouvez toujours passer à un autre geste si vous le souhaitez. La Figure 10 montre la sélection du geste spreadfingers pour cet exemple.


Figure 10. Utiliser Hand Viewer pour détecter le geste des doigts écartés

Dans MainForm.cs, modifiez et ajoutez le code qui suit. Le programme est relativement simple, puisque nous déclarons simplement le port série et détectons le dernier geste. Lorsque le geste n’est pas identique, nous changeons le fanion de la LED. UpdateInfo est l’endroit où le code exemple existant met à jour le geste de l’utilisateur. Nous pouvons utiliser le statut de la variable pour surveiller si le geste des doigts écartés est envoyé. Lorsque c’est le cas, nous attribuons la valeur 1 au fanion du port série, et allumons le voyant à LED. Lorsque le geste est terminé, nous envoyons un 0 au fanion pour éteindre le voyant à LED.

01 using System.IO.Ports;
02 
03 public partial class MainForm : Form
04 {
05     private SerialPort _serialPort;
06 private int _lastGesture;
07     
08 public MainForm(PXCMSession session)
09 {
10     
11     _serialPort = new SerialPort();
12 _serialPort.PortName = "COM16"; //Serial port Edison is connected to
13             _serialPort.BaudRate = 9600;
14             _serialPort.ReadTimeout = 500;
15             _serialPort.WriteTimeout = 500;
16 }
17 
18 private void WriteToSerialPort(int value)
19 {
20             if (_lastGesture != write)
21             {
22                  Console.WriteLine(write.ToString());
23                 _serialPort.Write(write.ToString());
24             }
25             _lastGesture = write;
26 }
27 
28 public void UpdateInfo(string status,Color color)
29 {
30 
31  
32             if (status.Contains("spreadfingers") || status.Contains("spreadfingers"))
33             {
34                 WriteToSerialPort(1);
35             }
36             else
37             {
38                 WriteToSerialPort(0);
39             }         
40  }
41 
42         private void Start_Click(object sender, EventArgs e)
43         {
44             
45             _serialPort.Open();
46         }
47 
48        private void Stop_Click(object sender, EventArgs e)
49         {
50             
51             _serialPort.Close();
52         }

Si tout fonctionne correctement, cliquez sur le bouton start, et placez la détection sur le geste doigts écartés. Ensuite, lorsque vous ouvrez les doigts, le voyant à LED devrait s’allumer comme montré sur la Figure 11.


Figure 11. Utiliser le geste des doigts écartés pour allumer le voyant à LED avec la carte Intel® Edison

Exemple #2, Lire des données depuis la carte Intel® Edison en utilisant une application Intel® RealSense™ pour la sortie

Dans cet exemple, nous utilisons le capteur de température connecté à la carte Intel® Edison comme entrée et synthèse vocale dans une application Intel RealSense pour rendre plus humaines les données du capteur.

Code pour la carte Intel® Edison

Le capteur de température Grove* v 1.1 est un capteur analogique que nous pouvons connecter à A0 sur la carte par le Grove kit. Le code Arduino qui suit, lit la température en Celsius. Le code a un délai de 15 secondes pour que la partie qui convertit le texte en voix par les haut-parleurs ait le temps de se terminer. Vous pouvez ajuster ce délai selon vos besoins. Vous pouvez également écrire des instructions logiques supplémentaires pour envoyer des avertissements lorsque la température est trop élevée ou trop faible.

01 #include <math.h>
02 int a;
03 float temperature;
04 int B=3975;                  //B value of the thermistor
05 float resistance;
06 
07 void setup()
08 {
09   Serial.begin(9600); 
10 }
11 
12 void loop()
13 {
14   a=analogRead(0);
15   resistance=(float)(1023-a)*10000/a; //get the resistance of the sensor;
16   temperature=1/(log(resistance/10000)/B+1/298.15)-273.15;//convert to temperature via datasheet ;
17   Serial.print("Current temperature is ");
18   Serial.print(temperature);
19   Serial.println(" celcius");
20 
21   delay(15000);
22 }

L’application Intel® RealSense™

Dans les Exemples Généraux (« Common Samples »), vous trouverez la Synthèse Vocale. Copiez le dossier de la source « ambitious, persistence, resilient risk taker » comme nous l’avons fait dans l’exemple Hand Viewer précédent. L’interface ne devrait pas changer, mais le but est d’utiliser la synthèse vocale pour lire les données du capteur depuis la carte. Nous utilisons toujours « COM16 ».

Changez le fichier MainForm.cs comme suit :

01 using System.IO.Ports;
02 
03 public partial class MainForm : Form
04 {
05         private SerialPort _serialPort;
06         private static bool _continue;
07         protected static string curr_module_name;
08         protected static uint curr_language;
09         protected static int curr_volume;
10         protected static int curr_pitch;
11         protected static int curr_speech_rate;
12 
13         Thread readThread = new Thread(Read);
14 
15         static public void Read()
16         {
17             while (_continue)
18             {
19                 try
20                 {
21                     string message = _serialPort.ReadLine();
22                     Console.WriteLine(message);
23                     VoiceSynthesis.Speak(curr_module_name, (int)curr_language, message, curr_volume, curr_pitch, curr_speech_rate);
24                 }
25                 catch (TimeoutException) { }
26             }
27         }
28 
29         public MainForm(PXCMSession session)
30         {
31             
32             _serialPort = new SerialPort();
33             _serialPort.PortName = "COM16"; //Serial port Edison is connected to
34             _serialPort.BaudRate = 9600;
35             _serialPort.ReadTimeout = 500;
36             _serialPort.WriteTimeout = 500;
37     
38             _serialPort.Open();
39             _continue = true;
40             readThread.Start();
41         }
42         private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
43         {
44             _continue = false;
45             readThread.Join();
46             _serialPort.Close();
47         }
48         …  
49 }

Si tout se passe correctement, le programme lira les données du capteur de température toutes les 15 secondes. N’hésitez pas à modifier le programme selon vos besoins personnels, par exemple en changeant l’interface ou en copiant tout simplement VoiceSynthesis.cs et VoiceOut.cs dans votre propre projet.

Aller plus loin

J’espère que ces deux exemples pourront aider des développeurs et des entrepreneurs à étendre leur réflexion, et à trouver encore plus d’exemples pour utiliser les possibilités offertes par ces deux technologies. Un prototype que j’ai réalisé était Anti-Snoozer, où la Caméra 3D Intel RealSense 3D détecte lorsque le conducteur commence à somnoler, et envoie des alarmes par la carte Intel Edison pour envoyer des alertes supplémentaires afin de réveiller le conducteur. Des milliers de combinaisons des pouvoirs des deux technologies sont possibles. Alors, qu’est-ce que vous allez faire ?

Pour davantage de ressources, visitez la page Ressources développeur Intel® Edison ainsi que la zone des développeurs Intel IoT

Ressources

Edison Software Downloads

À propos de l’auteur

Peter Ma a plus de 14 ans d’expérience dans le développement d’applications pour le web, les plateformes mobiles, et pour l’Internet des objets. Il a travaillé auparavant dans cinq entreprises start-up, et il est spécialisé dans les bases de données, le web (back-end et front-end), les technologies mobiles (Android* et iOS*), et le développement de solutions en Internet des objets. Il est innovateur logiciel Intel®, et a construit de nombreuses démonstrations en utilisant les technologies Intel®.

Peter vit actuellement à San Francisco et travaille comme Spécialiste en Prototype Rapide. Il est également consultant pour les grandes entreprises et les start-up. Il participe à de nombreux hackathons sur son temps libre… et gagne souvent ! Son entourage le décrit comme ambitieux, persistant, résilient et aventureux.

Article est offert par la zone des développeurs Intel 

Article original