Positionnement entrepôt

De Wiki d'activités IMA

Contexte

Dans le cadre de la formation d'IMA de quatrième année, nous sommes amenés à réaliser un projet d'une durée de quarante heures.

Etudiants : Soufiane HADDAOUI & Cédric DESPREZ

Encadrants : Alexandre BOE & Thomas VANTROYS

Cette page Wiki sera régulièrement mise à jour au fil des semaines afin de tenir informés les encadrants de l'état d'avancement du projet.


Présentation du projet

Le projet en question consiste à améliorer le repérage dans la pharmacie du centre hospitalier CHRU de Lille, dans le but de supprimer la perte de temps engendrée par la recherche de médicaments. Ce projet comporte deux objectifs principaux :

  • Concevoir un système infrarouge constitué d'un ensemble de LEDs permettant de donner la position approximative d'une personne lors de son passage sous la LED. Cette donnée devra être traitée par l'intermédiaire d'une tablette ou d'un smartphone.
  • Proposer à la personne un chemin optimal en fonction d'une liste de produits présents dans une base de données.


Analyse du projet

Le diagramme ci-dessous illustre les différentes problématiques nous avons d'ores et déjà repérées concernant ce projet :


Representation Mindmap


Cahier des charges

A la lumière de l'entretien que nous avons eu avec nos professeurs encadrants, nous avons pu faire apparaître les points importants du projet, à savoir ceux qui définissent le cahier des charges :


1) Réalisation d'un système de capteurs afin d'être en mesure de positionner une personne dans l'entrepôt en question.

2) Adaptation de ce système afin de localiser, cette fois, une dizaine de médicaments à travers tout l'entrepôt, le projet étant un prototype d'étude. Alexandre : L'idée première est plus simple, on veut juste avoir une base qui permet de rechercher un médicament et de donner sa localisation (code interne au CHR) approximative dans un premier temps. Ça peut par exemple être juste la travée ou si on met plus de balises (à voir en fonction de la complexité des capteurs) une position plus fine dans la travée.

3) Réalisation d'un système de codage suffisamment important pour le rajout de médicaments.

4) Réalisation d'une base de données regroupant cette dizaine de médicaments.

5) Réalisation d'une application smartphone,

  • fournissant un plan avec la position de la personne tenant le smartphone,
  • ainsi que la position des médicaments que la personne en question voudra obtenir.
  • cette application devra être accessible pour un personnel non initié en informatique. Alexandre : Effectivement, l'idéal serait d'avoir quelque chose de suffisamment simple pour qu'un non spécialiste soit à même d'apporter des modifications simples.

6) Éventuellement, implémenter un algorithme d'optimisation afin de déterminer le plus court chemin pour la personne en question.


Si les points principaux de ce cahier des charges demeureront non modifiables, nous nous gardons toutefois le droit d'adapter les étapes secondaires nécessaires au cours de ce projet.


Matériel nécessaire à la réalisation du projet

Afin de réaliser ce projet, les composants et matériels suivants vont être utilisés :

  • Emetteurs LED infrarouges, SFH4258, OSRAM
  • Pin photodiodes, PD15-21B/TR8, EVERLIGHT
  • Arduino Uno
  • ATtiny 13A


Déroulement du projet

Semaine 1

  • Rencontre des deux encadrants afin de définir les axes de réalisation du projet.
  • Réalisation de la planification du projet sous MS Project 2013.
  • Analyse du plan de l'entrepôt et identification des différentes zones (A, B, C, D...).
  • Etude des datasheet afin d'extraire les données utiles (angle d'ouverture, pic de sensibilité de la longueur d'onde).
  • Etude du système de codage pour les LEDs. Nécessité d'un identifiant et du repérage en quadrillage X,Y.
  • Étude des algorithmes de localisation dans l'espace.
  • Optimisation du nombre nécessaire et suffisant d'émetteurs IR en fonction de leur zone de couverture.
  • Étude d'un système de codage pour l'identification des médicaments avec Thierry Flamen.


Semaine 2

  • Installation de phpMyadmin sur un PC de projet.
  • Réalisation du modèle conceptuel de données après analyse des besoins et réalisation de la matrice des dépendances fonctionnelles.
  • Implantation de la base de données intitulée "Pharmacie" (tables, associations et remplissage des données).
  • Etude du montage émetteur à réaliser à l'aide d'un Arduino Uno et d'un ATtiny 13A.
  • Réalisation d'un premier montage à base d'ATtiny 13A et d'Arduino Uno utilisé comme programmeur : clignotement d'une LED.


Semaine 3

  • Mise en place des plate-formes JAVA nécessaires à la réalisation du projet : Eclipse et Netbeans associées à la dernière version du SDK Manager d'Android.
  • Abandon de la programmation de l'ATtiny 13A par l'intermédiaire d'un Arduino en ISP
    • dû au motif suivant : confrontation à une erreur de synchronisme dans le téléversement du programme dans l'Arduino Uno.
    • Test du téléversement sur l'Arduino Uno par l'IDE Arduino, ainsi que par la programmation directe en C (à l'instar du tutorat système du S7)
    • Les deux méthodes génèrent la même erreur, qui est jugée trop abstraite pour pouvoir la localiser, et la corriger.
    • Sur le conseil de notre encadrant M.Boé, nous nous sommes alors tournés vers AVR STUDIO 5.
  • Utilisation de AVR STUDIO 5 afin d'implémenter notre programme directement dans l'ATtiny 13A.
  • Recherche des méthodes d'économie d'énergie, le "Power Management", concernant la consommation du micro-contrôleur ATtiny 13A afin d'obtenir une application durable dans le temps.
  • Ajout d'une nouvelle amélioration dans le cahier des charges, dont la réalisation pourrait être appréciée : considérer l'application pour une surface quelconque (principe de généricité sur la surface à traiter).
  • Recherche dans la programmation Android pouvant notamment apporter une solution à ce problème.
  • Piste intéressante à creuser dans la Transformée de Hough.
  • Recherche en parallèle sur l'algorithme du plus court chemin, s'apparentant au problème du voyageur de commerce, ainsi qu'à la théorie des graphes.
  • Etude de l'algorithme d'optimisation "Ant System", jugé comme une piste à approfondir.


Semaine 4

  • Réalisation sur papier du schéma électronique relatif au récepteur infrarouge.
  • Réalisation d'une nouvelle librairie sous Altium Designer pour l'implantation de l'attiny13A dans la schématique.
  • Implantation de la schématique sous Altium Designer pour le récepteur infrarouge.
  • Réalisation du PCB avec mise en place d'un plan de masse.
  • Réalisation avec Java du codage de Fanno-Shannon pour le codage des différents capteurs implantés dans l'entrepôt.
  • Développement sous Androïd et premiers tests sur un HTC. L'environnement de développement intégré utilisé étant NetBeans.


MATHEMATIQUES

Cette section a pour but de regrouper toutes les considérations purement mathématiques du projet, chaque sous-section illustrant un point particulier sans forcément de lien avec les autres.

Optimisation du nombre de capteurs

Cette thématique illustre son importance par le fait qu'un de nos objectifs est de couvrir le maximum de la surface de l'entrepôt avec le minimum de capteurs-émetteurs IR nécessaires.

Rappelons que la réalisation de cette optimisation s'inscrit dans le positionnement de la personne dans l'entrepôt.

Considérons le plan de l'entrepôt comme un quadrillage (X,Y), plusieurs contraintes sont à définir. Toutefois, avant toute chose, un certain vocabulaire doit être mis en place.


Vocabulaire

  • La longueur de l'entrepôt est notée : X.
  • La largeur de l'entrepôt est notée : Y.
  • Le nombre de capteurs émetteurs à IR est noté : n_c.
  • La superficie totale de l'entrepôt est notée : A.
  • La superficie occupée (étagères, pièces, ...) de l'entrepôt est notée : B.
  • La surface utile à couvrir dans l'entrepôt est notée : U.
  • La surface couverte par un capteur émetteur IR est notée : A_{base}.
  • La hauteur de l'entrepôt est notée : h.
  • L'angle d'émission du capteur émetteur IR est notée : \alpha.
    • En l'occurrence, pour les émetteurs OSRAM, la datasheet nous apprend que \alpha=30 degrés.

Définition

Surface totale

La surface totale est quelque peu intuitif à exprimer (en nous basant sur une architecture rectangulaire et non circulaire bien entendu) :

 A=X\times Y
Surface occupée

La totalité de la surface occupée est en fait une somme de surface occupée par chaque "obstacle", donc une somme allant à n obstacles :

 B=\displaystyle\sum\limits_{i=1}^{n}b_i
Surface couverte par un capteur

En vérité, en trois dimensions, le recouvrement de surface se modéliser sous la forme d'un cône. Toutefois, comme en l'occurrence nous travaillons dans le plan (X,Y), la surface couverte se représente par l'aire du cercle C (la base du cône), r étant son rayon :

 A_{base}=\pi r^2 = \pi\left(h\times\tan\left(\dfrac{\alpha}{2}\right)\right)^2


Contraintes

Dans une approche de modélisation linéaire, plusieurs contraintes peuvent apparaître, certaines exprimables mathématiquement, d'autres non :

Première contrainte

La surface couverte par les capteurs ne doit pas dépasser la surface totale :

n_c \times A_{base}\leq A
Deuxième contrainte

La surface occupée ne peut être plus grande que la surface totale :

 B\leq A


Troisième contrainte

Celle que nous pouvons considérer comme la plus importante de toutes :

n_c\times A_{base} \leq U \Rightarrow n_c\times \pi\left(h\times\tan\left(\dfrac{\alpha}{2}\right)\right)^2 \leq X\times Y - \displaystyle\sum\limits_{i=1}^{n}b_i


Quatrième contrainte

une autre contrainte est la distance du capteur par rapport aux positions des portes de l'entrepôt, afin qu'elles soient toutes couvertes.


Cinquième contrainte

Nous pouvons aussi considérer la distance suffisante de non-perturbation de données entre plusieurs capteurs-émetteurs.

Cette distance pourra être mesurée expérimentalement lorsque le prototype du circuit contenant l'émetteur IR sera fonctionnel.


Transformée de Hough

La Transformée de Hough est une méthode de reconnaissance de formes, notamment utilisée dans le traitement des images numériques.

Elle sera utile pour la généricité d'utilisation de l'application concernant l'architecture de l'entrepôt.

Elle se base sur les équations paramétriques. En effet, dans le domaine de Hough, chaque point d'une image est modélisée sous la forme d'une droite.

Comme dans le plan (x,y), une succession de points représente une droite, dans l'espace de Hough, cette droite est repérée par l'intersection des différentes courbes paramétriques.

En effet, dans le repère  (\rho, \theta) , les courbes paramétriques sont de la forme suivante :

\rho=x\times\cos(\theta)+y\times\sin(\theta)


Par ailleurs, la transformée de Hough permet d'avoir une bonne robustesse contre les discontinuités et les elements manquants d'une structure.


INFORMATIQUE

Réalisation de la base de données

  • Définition du dictionnaire de données
  • Au cours de cette partie, il s'agit de recenser les différentes données dans un tableau.

    Representation Mindmap
  • Matrice des dépendances fonctionnelles
  • On construit maintenant la matrice des dépendances fonctionnelles en s'occupant uniquement des données élémentaires.

    Representation Mindmap
  • Simplification
  • On simplifie la matrice des dépendances fonctionnelles obtenue précédemment. On ne conserve pas dans le tableau les colonnes vides. Le tableau devient donc le suivant :

    Representation Mindmap
  • Elimination des dépendances fonctionnelles transitives
  • On élimine les dépendances fonctionnelles transitives et on obtient le nouveau tableau suivant :

    Representation Mindmap
  • Recherche des dépendances fonctionnelles composées
  • On obtient le nouveau tableau suivant :

    Representation Mindmap
  • Création des entités
  • Chaque colonne du tableau induit la création d'une entité dont la clé primaire est la tête de colonne.

    Representation Mindmap
  • Implantation de la base sous phpMyadmin
  • Création des différentes tables, remplissage des champs et création des associations.


Application Android

Comportement

Dans l'idéal, notre objectif serait qu'en premier lieu, à l'ouverture de l'application, un menu apparaisse demandant quel plan l'utilisateur voudrait choisir, puis viendrait un menu affichant les trois modes définis à la section suivante.

Modes

L'application Android nécessaire à la réalisation du projet devra être considérée sous plusieurs aspects utilitaires :

  • Un mode gestionnaire de l'entrepôt
    • Accessible uniquement par numéro de matricule ou encore statut de l'utilisateur (cf base de données)
    • Ouvrirait un onglet où le gestionnaire pourra ajouter ou enlever les stocks de médicaments suite aux arrivages (ajout de type de médicament, ...)
  • Un mode architecte
    • Ce mode permettrait d'ajouter un nouveau plan par prise de photo ou par recherche d'image JPEG dans la gallery du smartphone.
    • Traitement de la cartographie sur l'image en récupérant les lignes (par l'intermédiaire des transformées de Hough).
    • Il faudrait également prendre en compte l'ajout de la position des capteurs émetteurs dans l'application
  • Un mode purement utilitaire
    • menant directement au choix par l'utilisateur de l'image correspondant au plan
    • suivi aussitôt par une liste de médicaments à cocher (ou dans le meilleur des cas, une recherche en rentrant le nom sur clavier)
    • Le plan s'afficherait donc avec la position de la personne ainsi que des croix indiquant la position des médicaments
    • Le cas échéant, le chemin le plus court serait tracé sur le plan en question





ELECTRONIQUE

Réalisation du montage côté émetteur infrarouge

  • Mise en place des librairies permettant de programmer l'ATtiny13.
  • La librairie est placée dans un dossier hardware du sketchbook.

  • Réalisation du câblage à l'aide d'une LED, de l'Arduino Uno, de l'ATtiny13 et d'une capacité de 10uF.
  • Representation Mindmap
  • Programmation de l'ATtiny 13 en utilisant l'arduino Uno (ISP).
  • Utilisation du programme "Blink" fourni par l'IDE. => Test : La LED s'allume mais ne clignote pas.

Réalisation de la carte de l'émetteur infrarouge

  • Réalisation de la schématique sous Altium Designer
  • Ce schéma est constitué de l'attiny13A réalisé à partir d'une nouvelle librairie. On retrouve une LED permettant d'indiquer le fonctionnement du circuit, cette LED est relié à une broche "digital pin" de l'attiny au travers d'une résistance. On retrouve également une LED IR qui est reliée au +VCC par l'intermédiaire d'une résiatnce, l'ensemble étant relié à une broche digital pin de l'attiny13A. L'alimentation est réalisé par un Header 2 et cette alimentation sera réalisé par l'intermédiaire de deux piles. Les différentes broches de l'attiny13A non utilisées ont été reliées à un header 2 et à un jitter afin de permettre une utilisation future. La schématique réalisée est la suivante :


Objectifs futurs

  • Réalisation complète de l'ensemble émetteur / récepteur utile pour la détection d'une personne dans l'entrepôt et tests associés.
  • Adaptation du modèle de codage sur récepteur/émetteur infrarouge.
  • Réalisation du plan de l'entrepôt en Java.
  • Détermination la position des différents capteurs au sein de l'entrepôt.
  • Etablissement de la distance minimale entre deux capteurs.
  • Réalisation du protocole de transfert de données entre le brassard et le smartphone (Wifi envisagé).
  • Réalisation de l'algorithme permettant d'obtenir le chemin optimal.