Tous les articles par Jean-Claude Dufourd

jcd

Module : Akka, une bibliothèque pour l’implémentation d’applications concurrentes réparties

Titre du module : Akka

Proposé par :
Sylvain Frey, sylvain.frey@telecom-paristech.fr, 01 45 81 83 09

Descriptif :
Akka est une boîte à outils / un middleware / un environnement d’exécution pour le développement d’applications distribuées. Akka propose un modèle simple et puissant, les « acteurs », pour adresser des problématiques difficiles rencontrées lors de la conception de systèmes concurrents et / ou répartis : synchronisation des activités, communications distantes, distribution du code, couplage entre composants répartis… Ces pièges récurrents de la programmation concurrente peuvent ainsi être évités sur la base des bonnes pratiques proposées par Akka.

Ressources dont le module dépend :
Le site akka.io propose le téléchargement libre des bibliothèques qui composent Akka (au format jar) ainsi qu’une documentation et des exemples de code Java très complets (en anglais). De fait, Akka propose bien plus que les besoins attendus d’un projet PACT : penser à consulter les experts avant de se lancer tête baissée! (cf. « résultats attendus »)

Exemples d’utilisation du module :
Akka est utilisé professionnellement pour de multiples projets industriels, une liste est disponible sur akka.io. À Télécom ParisTech, Akka est mis en œuvre dans la thèse de Sylvain Frey pour le développement de gestionnaires autonomiques décentralisés.
Résultats attendus :

Dans le cadre de PACT, les étudiants devraient tout d’abord s’accorder sur les besoins de leur projet adressables avec Akka, en accord avec les experts et tuteurs compétents. Ils pourront alors se familiariser avec les fonctionnalités correspondantes dans Akka, en sélectionnant les tutoriels appropriés sur le site, sur conseil des experts. Akka proposant BEAUCOUP de fonctionnalités, il va falloir faire des choix!

Dans un second temps, la phase de conception du projet pourra s’appuyer sur le modèle des acteurs proposé par Akka. Ainsi, les étudiants devraient pouvoir spécifier les acteurs mis en œuvre, s’assurant une architecture consistante, avant de les implémenter dans l’API Akka.

connaissances : modèle des acteurs
compétence : pouvoir exprimer une architecture logicielle dans le modèle des acteurs, pouvoir implémenter cette architecture en Java à l’aide de la bibliothèque
livrable : architecture applicative, implémentation

livret et mail de fin de semaine

Le livret est désormais disponible en ligne ici, et dans la rubrique dispositif/livret du site.

En particulier, dans la section 10, « Attendus », se trouve un synopsis de l’ensemble de ce qui demandé dans PACT. En particulier, merci de prêter attention à la demande concernant le « mail de fin de semaine » : à chaque fin de semaine, chacun doit,individuellement, envoyer par mail au tuteur, un court rapport de ses avancées et travaux de la semaine dans PACT. Cela tiendra en général en quelques lignes et pourra éventuellement être : « je n’ai rien fait dans PACT cette semaine » mais il est obligatoire.

Rappel : le bon respect des consignes dans PACT et l’implication dans le travail commun sont évalués (cf. la section 13 « Evaluation » du livret).

Module : Utilisation d’une télévision connectée

Module: Utilisation d’une télévision connectée
proposé par :

  • Jean-Claude Dufourd (jean-claude.dufourd_at_telecom-paristech.fr, 7733, bureau E51x)

 

Descriptif
Ce module concerne l’utilisation d’une télévision dite « connectée », c’est à dire disposant d’un navigateur internet et de la possibilité d’afficher des programmes interactifs diffusés avec les émissions des chaînes principales.Faire du web sur la TV c’est donc possible, sous réserve de prévoir que l’appareil n’a ni souris, ni clavier, ce qui pose des problèmes de conception de pages…

 

Ressources dont le module dépend

 

Exemples d’utilisation du module
  • application internet ciblant des personnes n’ayant pas d’ordinateur

 

Résultats attendus
  • connaissances : maitrise de la conception de pages pour des applications interactives HbbTV
  • compétence :  à l’issue de ce module vous aurez  conçu un petit service de télévision interactive.
  • livrable 1: minisite fonctionnant sur la TV HbbTV Samsung dont nous disposons, en surimpression avec une capture TV

 

Séquencement
Le séquencement précis de ce module par rapport aux PANs est flexible et sera négocié au début du module.

 

Module : Recalage d'images

proposé par :

  • Expert : Michel Roux (at telecom-paristech.fr, 96 84, bureau 5B60)
Descriptif
Pour beaucoup d’applications, il peut être intéressant de superposer deux images, voire plus, afin de comparer et de combiner les informations qu’elles contiennent, pixel à pixel. Il est alors nécessaire d’estimer d’une façon ou d’une autre la déformation à appliquer sur l’une des images pour la positionner précisément sur la seconde. En fonction de la nature de la scène visualisée, du type de capteur utilisé et des conditions de prises de vue, les méthodes mises en oeuvre peuvent être plus ou moins complexes.
Ressources dont le module dép
Exemples d’utilisation du module
  • La création de mosaïques d’images nécessite le recalage partiel des images les unes avec les autres.
  • La détection de changements sur la scène visualisée suppose, entre autres,  un parfait recalage entre les images.
  • L’interprétation d’images médicales provenant de différentes modalités (rayon X, IRM, tomographie, …) suppose que les images ont été recalées au préalable les unes avec les autres.
Résultats attendus
  • connaissances : points caractéristiques, appariements, transformation d’images
  • compétence : compréhension du recalage des images et de ses limites,
  • livrable 1 : un code java portant sur une sous-partie du recalage d’images,
  • livrable 2 : un jeu de test montrant les possibilités et les limitations de la méthode.

 

Module : Visualisation de données, en particulier de test

Module: Visualisation de données, en particulier de test
proposé par :

  • Jean-Claude Dufourd (dufourd_at_telecom-paris.fr, 9691, bureau 5D30)
Descriptif
Il y a plusieurs bibliothèques de dessin de courbes et de représentations de données en Java:

Ces bibliothèques permettent d’afficher à peu près n’importe quel type de données de manière très évoluée. Par exemple, vous avez un tableau de valeurs représentant un spectre, vous aimeriez bien visualiser ce spectre comme une courbe à l’écran pour voir si votre programme fonctionne.

Si vous avez un besoin ponctuel d’affichage de test pendant vos développements, inutile d’en faire un module. Si par contre vous avez des besoins variés et/ou une utilité de la visualisation dans le produit fini, alors créons un module.

jFreeChart est très complète, mais la doc est payante.

jmathplot est beaucoup plus facile à utiliser, mais plus limitée, et pour de la représentation 2D.

jzy3d fait de l’affichage 3D en perspective, c’est mieux pour certains types de données.

GraphView et MPAndroidChart sont des bonnes bibliothèques pour faire l’équivalent sous Android.

Ressources dont le module dépend
  • Bibliographie
    • voir les liens ci-dessus
Exemples d’utilisation du module
  • pour afficher des données audio, de spectre, d’histogramme, …
  • pour afficher des résultats d’enquêtes SES, d’étude de marché
  • pour afficher un tableau de bord complexe pour votre programme
Résultats attendus
  • il s’agit de déterminer les besoins de votre sujet, de créer une série de mises en oeuvre de la bibliothèque dans des situations qui seront réutilisables dans votre projet, et de tester ces mises en oeuvre sur des exemples.
Séquencement
Le séquencement précis de ce module par rapport aux PANs est flexible et sera négocié au début du module.

Module : Mise en oeuvre de la bibliothèque Apache Commons Math

Module: Mise en oeuvre de la bilbiothèque Apache Commons Math
proposé par :

  • Jean-Claude Dufourd (jean-claude.dufourd_at_telecom-paristech.fr, 7733, bureau E51x)

 

Descriptif
La bibliothèque Apache Commons Math est plus un générateur de modules qu’un module précis. Elle contient une grande quantité de fonctions qui peuvent servir dans beaucoup de domaines. Voici une courte présentation en anglais:Commons Math is made up of a small set of math/stat utilities addressing programming problems like the ones in the list below. This list is not exhaustive, it’s just meant to give a feel for the kinds of things that Commons Math provides.

  • Computing means, variances and other summary statistics for a list of numbers
  • Fitting a line to a set of data points using linear regression
  • Finding a smooth curve that passes through a collection of points (interpolation)
  • Fitting a parametric model to a set of measurements using least-squares methods
  • Solving equations involving real-valued functions (i.e. root-finding)
  • Solving systems of linear equations
  • Solving Ordinary Differential Equations
  • Minimizing multi-dimensional functions
  • Generating random numbers with more restrictions (e.g distribution, range) than what is possible using the JDK
  • Generating random samples and/or datasets that are « like » the data in an input file
  • Performing statistical significance tests
  • Miscellaneous mathematical functions such as factorials, binomial coefficients and « special functions » (e.g. gamma, beta functions)

Si vous avez besoin d’une fonction ou d’un ensemble de fonctions qui n’est pas déjà regroupée dans un module existant (comme le module de filtrage audio), alors nous pouvons définir un module spécifique pour votre besoin.

 

Ressources dont le module dépend

 

Exemples d’utilisation du module
  • dans le module Descripteurs Audio MFCC;
  • pour la fabrication d’un banc de filtre;
  • pour des problèmes d’optimisation sous contraintes, ou de résolutions de systèmes d’équations ou d’inéquations…

 

Résultats attendus
  • à déterminer en fonction du besoin

 

Séquencement
Le séquencement précis de ce module par rapport aux PANs est flexible et sera négocié au début du module.

 

Module : Découverte et communication avec des appareils et services UPnP

Module: Découverte et communication avec des appareils et services UPnP
proposé par :

  • Jean-Claude Dufourd (jean-claude.dufourd_at_telecom-paristech.fr, 7733, bureau E51x)

 

Descriptif
UPnP est un standard de découverte et de communication entre appareils dans un réseau local (par exemple, celui de la maison). Il a été conçu pour résoudre le problème suivant: quand on ajoute un appareil dans le réseau, comment faire pour qu’il connaisse les autres appareils déjà installés, et pour que les autres appareils le connaissent, ceci sans devoir modifier la configuration de chacun des appareils pour y ajouter les informations « à la main ».Une bibliothèque Java nommée Cling permet de faire assez simplement, sur Windows, Linux et Android, des programmes qui:

  • découvrent d’autres appareils et services UPnP sur le réseau et dialoguent avec eux (mode actif);
  • créent un service UPnP et le publient sur le réseau, attendant les demandes de la part des autres appareils du réseau (mode passif).

Les modes actif et passif peuvent être utilisés séparément ou conjointement, selon le scénario d’utilisation.

 

Ressources dont le module dépend

 

Exemples d’utilisation du module
  • dans tout système mettant en jeu plusieurs appareils en collaboration, par exemple pour trouver d’autres joueurs d’un jeu particulier qui sont présents dans le même réseau local;
  • pour la simplification de la connexion de nouveaux appareils dans un réseau, par exemple pour aider des personnes peu techniques à utiliser leur nouveaux appareils;
  • pour simplifier les échanges entre appareils, par exemple, le partage de videos, de musique, de carte de visite, d’invitations à un concert, … entre mobiles.

 

Résultats attendus
  • connaissances : maitrise élémentaire de la technologie UPnP
  • compétence :  à l’issue de ce module vous aurez  écrit en Java un programme qui publie un service sur le réseau, découvre des services sur le réseau, dialogue avec ces services
  • livrable 1: programme qui découvre des services sur le réseau
  • livrable 2: programme qui échange des informations avec un service sur le réseau
  • livrable 3: programme qui expose un service sur le réseau et répond à des demandes externes (à tester avec les livrables 1 et 2)

 

Séquencement
Le séquencement précis de ce module par rapport aux PANs est flexible et sera négocié au début du module.

 

Module : LabJack

Le Labjack
proposé par Jean Marie NicolasC27, 8129, jean-marie.nicolas@telecom-paristech.fr

 

Descriptif
C’est un interface très simple à utiliser permettant de faire un lien entre un ordinateur (par USB) et le monde des « courants faibles ». En d’autres termes, c’est un convertisseur analogique/numérique, raccordé par un cable USB à l’ordinateur et présentant des borniers pour les connexions électriques, et dont le fonctionnement s’apparente par sa facilité d’utilisation à un couteau suisse :

  • un bornier peut être une entrée ou une sortie
  • le signal peut être analogique ou numérique

Le choix des modalités de fonctionnement s’effectue par programmation logicielle (en Java/Jni/C : c’est, à l’usage, très facile à utiliser). La fréquence des acquisitions (ou des sorties) est aussi programmable.

Le composant U3 est disponible dans le cadre de PACT. Il a 8 entrées (numériques ou analogiques) /sorties (numériques) et 2 sorties analogiques (entre 0 et 5V). La cadence d’échange entre le PC et le Labjack est, au maximum, de l’ordre du KHz.

Le composant U6 pourra aussi être utilisé. Sa cadence d’échange peut atteindre les 40 KHz.

Ressources dont le module dépend
  • http://labjack.com/
  • bibliothèques JAVA à mettre en oeuvre : JNI facile à utiliser, un exemple est disponible

 

Exemples d’utilisation du module
Un projet de recherche est actuellement mené avec ce composant pour mesurer le déplacement du glacier d’Argentière : le Labjack reçoit une tension entre 0 et 5V fournie par une roue actionnée par le déplacement du glacier et convertit cette valeur en grandeur binaire lisible sur le port USB et traité par un code informatique sur le PC.

 

Résultats attendus
  • connaissances : interfaçage PC/analogique, échantillonnage
  • compétence : à l’issu de ce module, vous aurez maîtrisé un outil faisant communiquer le monde extérieur avec votre PC sur des informations simples et courantes (mesure d’une tension, échantillonnage de données d’entrée, …).
  • livrable : code Java permettant d’interfacer le Labjack facilement (pour permettre une mise en oeuvre facile, on vous fournira la partie en C sur des exemples –metacode proposé par LabJack– ainsi qu’un exemple de JNI ).
  • livrable : exemple de fonctionnement illustré par une sortie LabJack sur un premier PC attaquant un autre LabJack en entrée sur un autre PC.

 

 

Module : Descripteurs audio MFCC

Module: descripteurs audio MFCC
proposé par :

  • Geoffroy Peeters (geoffroy.peeters_at_telecom-paristech.fr)
  • Roland Badeau (roland.badeau_at_telecom-paristech.fr)
Descriptif
Le Cepstre d’un signal audio est une représentation qui permet de caractériser le timbredu son associé. Il s’obtient comme la transformée de Fourier inverse du logarithme du spectre d’amplitude du signal.Dans la plupart des systèmes de classification audio (cf rubrique classification), on exploite des caractéristiques calculées à partir du Cepstre : les MFCC (Mel Frequency Cepstral Coefficients). Il s’agit d’une variante de coefficients cepstraux qui exploite un modèle simple d’audition humaine et qui s’avère très efficace dans la plupart des problèmes de classification.
Ressources dont le module dépend
Exemples d’utilisation du module
  • dans un système de reconnaissance des instruments de musique,
  • de classification de musique en genres (classique, jazz, pop, etc.) ou en humeurs, (joyeux, triste, etc.),
  • de classification de sons en catégories générales (parole, musique, silence, sons environnementaux).
Résultats attendus
  • connaissances : calcul du Cepstre réel, fréquences Mel, calcul des MFCC
  • compétence :  à l’issue de ce module vous aurez  écrit en Java un programme qui charge des signaux audio et retourne une séquence de vecteurs MFCC (extraits sur des fenêtres d’analyse à court terme)
  • livrable 1: pseudo-code
  • livrable 2: code java + test de comparaison des MFCC obtenus par le programme développé à ceux calculés avec un autre programme (Matlab) de référence.
Volume
  • 4TH programmées pour un binôme