Chariot de prélévement intelligent : Différence entre versions

De Wiki de Projets IMA
(Journal)
(Page blanchie)
 
Ligne 1 : Ligne 1 :
= Présentation =
 
  
Contexte:
 
 
Petite vidéo montrant le cadre du projet.
 
 
https://www.youtube.com/watch?feature=player_embedded&v=dV-ZRzvoTh4
 
 
 
== Objectif : ==
 
 
Réalisation d'un chariot de prélévement "intelligent" (RFID, Android)
 
 
== Description : ==
 
 
Comment garantir le contrôle qualité pendant l'action de prélèvement en s’appuyant sur les produits Décathlon équipés de puces RFID ?
 
Ce projet devra permettre de vérifier tout au long du prélèvement que le produit déposé dans le bac (ou les bacs si plusieurs magasins sont prélevés en même temps) fait bien partie de la rafale et est bien déposé dans son magasin de destination.
 
 
 
La solution technique est l'équipement des chariots d'une Antenne RFID et le développement de fonctionnalités supplémentaires pour l'application Log'Pad existante. Armature à déposer au-dessus des bacs permettant de faire traverser un faisceau au produit et ainsi valider sa destination (BAC A/B/C/D).
 
 
Le matériel fourni:
 
Bacs de prélèvement, Application Android Log’Pad, tablette tactile, Etiquettes RFID, Dimensions du chariot de prélèvement.
 
 
Livrables attendus:
 
Nouvelles fonctionnalités pour l’application Android Log’Pad logs pour permettre de contrôler le taux d’erreur des magasiniers. Matériel permettant le contrôle (antenne RFID armature) et communication avec les nouvelles fonctionnalités de l’application Log’Pad.
 
 
Points d’attention:
 
Développer de nouvelles fonctionnalités sur l’application Android Log'Pad Permettre aux antennes RFID de se connecter à la tablette (/!\ chariot autonome) et d'intéragir avec elle.
 
 
== Cahier des charges ==
 
 
Les besoins reposent en grande partie sur le contrôle qualité sur 2 données :
 
Le fait que l'article appartient bien à la rafale en cours de prélèvement (RFID)
 
Le fait que produit à bien été déposé dans son magasin destinataire (RFID ou faisceau)
 
 
De plus, Il faudra par la suite développer un "module" android permettant de venir agir sur le programme Log'Pad déjà existant. En fonction du contrôle qualité effectué, le prélèvement sur tablette doit être "mise en pause" et l'explication du problème qualité rencontré doit être visible Si l'article est OK, le magasinier n'a plus besoin de valider son prélèvement sur la tablette. Le programme passe directement au prochain prélèvement (geste moins du magasinier). Ainsi le lecteur RFID et le dispositif de détection du bac dans lequel l’article est posé devront pouvoir se connecter et interagir avec la tablette grâce à une connectique appropriée (bluetooth, WIFI, USB, autres)
 
 
L’objectif est aussi de proposer un ensemble autonome et transportable.
 
Ce qui nous donne un cahier des charges chiffré et synthétique suivant:
 
- Une validation du produit selectionné à 100% par rfid.
 
- Une détection de l’article dans le bac qui fonctionne pour au moins 90% des articles.
 
- Une application logpad qui suit un scenario défini
 
- Un dispositif autonome en énergie et donc non relié au secteur.
 
 
= Gestion de Projet et Sources =
 
== Présentation ==
 
Afin de facilité le pilotage et le suivi du projet tout en guarantissant l'atteinte des objectifs, nous avons fait un planning sur MS Project. Il en ressort que le projet est constitué de '''8 grandes parties''':  '''Etat de l'art RFID et capteurs, Hardware, Software, Communication, Intégration et test global,Prototype de l'ensemble hard/soft, Mode d'emploi et Recettage.''' Pour des raisons de fiabilité, crédibilité et complexité du projet, nous appliquons une planification itérative(les délais de la phase suivante sont affinés vers la fin de la phase courante).
 
 
[[Fichier:Mind map projet.PNG]]
 
== Planning ==
 
[[Fichier:Planning projet.pdf]]
 
=== Etat de l'art RFID et capteurs ===
 
=== Hardware du 25/09-16/10 ===
 
==== Analyse de configuration d'un reader à l'Ircica ====
 
==== Choisir le lecteur RFID ====
 
Détermination de la plage de fréquence du lecteur
 
Détermination du débit nécessaire
 
Détermination du mode de communication
 
Détermination des distances requises RFID
 
Détermination emplacement du lecteur
 
Détermination fourchette de prix
 
Vérification de la configurabilité du reader
 
Fiche comparatives des lecteurs RFIDs et lecteur  choisi
 
Calcul de puissance consommée
 
Achat lecteur RFID
 
==== Choisir les meilleurs capteurs pour les bacs ====
 
analyser les coûts
 
analyse de la consommation
 
analyser des configurations bacs
 
fiche comparatives des capteurs et capteur choisi
 
Calcul de puissance consommé par capteur
 
Achat capteur
 
==== Choix de la batterie ====
 
Déterminer du nombre de cycle
 
Déterminer le Taux maximale de décharge
 
Déterminer la Capacité
 
Détermination la Tension
 
Calcul de puissance à fournir
 
Fiche comparatives des batteries et choix de la batterie
 
Achat du lecteur RFID et de la Batterie
 
Configuration du lecteur RFID
 
Connexion et test de l'ensemble (batterie+RFID)
 
=== Software ===
 
Détermination des actions et des boutons (fonctions) à ajouter
 
Modélisation graphique de l'interface
 
==== Codage du module ====
 
Détermination des principaux scénarios
 
Modélisation UML du module
 
structure finale du module
 
Codage et test unitaire de l'interface
 
Codage et test unitaire de l'activité
 
Récuperation de la trame
 
traitement de la trame
 
détecter un nouveau produit
 
Enregistrement des données dans le fichier log
 
 
=== Communication ===
 
=== Intégration et test global ===
 
=== prototype de l'ensemble hard/soft ===
 
 
Voici des photos du prototype sur site:       
 
[[Fichier:prototype_final.jpeg|200px]] [[Fichier:prototype_chariot.jpeg|200px]]
 
 
Nos tests sur le site de Dourges montrent les erreurs suivantes:
 
La V1 est stable et détecte à hauteur de 80%.
 
La V2 affiche environs 70% de détection.
 
Les fausses présences détections sont absentes (détection alors qu'aucun objet n'est lancé) et les non détections sont aussi absentes (pas de détection alors que l'objet est lancé
 
 
=== Mode d'emploi ===
 
Mode d'emploi Log'Pad
 
Mode d'emploi matériel RFID
 
Mode d'emploi batterie
 
 
=== Recettage ===
 
 
= Matériel utilisé =
 
 
Photo des bacs pour chariot:
 
 
[[Fichier:chariot1.jpg|200px]]
 
 
[[Fichier:ultrason_parallax.png]] [[Fichier:ultrason_SRF10.jpg|250px]] [[Fichier:ultrason_EZ0.jpg|130px]]
 
 
Fichier .ino associé pour utilisation double capteur en 1er essai:
 
 
Elements du prototype final:
 
 
[[Fichier:Douchette_rfid.png|200px]] [[Fichier:PCduino.jpeg]] [[Fichier:Batterie.jpeg|200px]]
 
[[Fichier:camera_oxylane.jpeg|200px]] [[Fichier:Nexus7.jpeg|200px]]
 
 
= essais réalisés et résultats =
 
 
Voici un document résumant le principe des essais de détection des bacs par caméra:
 
 
[[Fichier:essai_cam.odt]]
 
 
Et voici les taux de détection de cette solution en fonction de plusieurs objets.
 
Ceci est un simple test qualitatif en vue d'améliorer la solution et de voir les premiers résultats.
 
 
 
[[Fichier:result.odt]]
 
 
= Journal =
 
 
'''Semaine 37:'''
 
 
Etude détaillée du sujet, préparation réunion avec responsable Oxylan Cyril neveu.
 
Envoie d'un document synthétisant la compréhension du sujet et les principales interrogations.
 
 
'''semaine 38-39:'''
 
 
Etat de l'art RFID. Décomposition du projet en grands axes et taches. Rédaction du planning.
 
 
Rédaction du planning. Fin de la première ébauche. Préparation à la réunion avec Cyril Neveu (questions, déroulements etc...)
 
Réunion l'après midi.
 
Compte rendu de réunion et veille.
 
 
 
'''semaine 41+42:'''
 
 
- analyse des problématiques des diverses solutions. Points forts points faibles.
 
 
- réalisation d'un document récapitulatif
 
 
- prise de décision sur les solutions à mettre en place
 
 
'''semaine 43:'''
 
 
- sélection et achat matériel capteurs sonores, à savoir, recherches des modèles existants, recherche des fournisseurs, devis etc...
 
 
- sélection matériel RFID
 
 
Comparaison des datasheets et schéma de cablage:
 
 
[[Fichier:datasheet.jpg|200px]]  [[Fichier:cablage_SRF.png|200px]]
 
 
 
'''semaine 45:'''
 
 
- analyse du code logpad
 
 
- réflexion sur le scénario
 
 
''' semaine 46:'''
 
 
- test capteurs sonores
 
 
- écriture des programmes de communications, gestion des problèmes etc...
 
 
'''semaine 47:'''
 
 
- test CMUCAM3 + résultats (intégration sous windows, linux, test serial port minicom, test GUI etc... )
 
 
- Recherche sur OpenCV (librairies et fonctions pertinentes, installation des librairies etc... )
 
- Recherche communication arduino android
 
 
 
'''semaine 48:'''
 
 
- codage et premiers essais OpenCV, detection 4 bacs
 
Explication de l'algorithme
 
+ Quelques resultats
 
 
Voici comment fonctionne l'algorithme.
 
Nous prenons dabord 1 image de référence. Ensuite nous entrons dans une boucle infinie réalisant ceci:
 
Nous capturons une autre image qui fait officie de référence 1. Puis nous capturons une autre image après un certain délai (qui va conditionner les FPS). Ces deux images sont en niveau de gris.
 
Nous comparons alors les deux images et seuillons à une certaine valeur pour obtenir les modifications en rouge. Ensuite nous filtrons les perturbations.
 
Si aucun point rouge n'est détecté après passage dans les filtres, alors il n'y a pas eu de mouvements et l'on continue la boucle.
 
Dans le cas contraire on enclenche un flag indiquant qu'il ya mouvement jusqu'à ce qu'on ne détecte plus de variations entre deux images.
 
Nous savons alors à ce moment que l'on doit comparer l'image initiale et l'image avec mouvement final.
 
 
[[Fichier:foo2.png|200px]] [[Fichier:Foo3.png|200px]]
 
 
[[Fichier:colorerode.png|200px]] [[Fichier:colorerode2.png|200px]]
 
 
 
'''semaine 49:'''
 
- connexion douchette rfid usb-arduino
 
 
- Recherche algorithme detection contours des bacs
 
 
'''semaine 50:'''
 
- réalisation d'un prototype complet ultrason
 
 
- réalisation d'un prototype caméra
 
 
- gestion des communications rfid -> arduino <-> PC
 
 
Voici quelques photos des prototypes mis en place. Pour cette fin de période, la solution caméra fonctionne et le prototype ultrason est presque terminé.
 
 
[[Fichier:capteurs+bac.jpg|200px]] [[Fichier:Capteuronly.jpg|200px]]
 
 
'''semaine 2'''
 
 
'''semaine 3'''
 
- Rencontre avec le responsable de projet. Recadrage des objectifs pour la fin du projet.
 
 
'''semaine 4'''
 
- Achat du matériel supplémentaire
 
- Mise en place de l'ensemble
 
 
'''semaine 5:'''
 
- Connexion du PCduino à internet pour le téléchargement des librairies (Opencv etc) nécessaire pour le traitement d'image.
 
- Amélioration du code de détection de contour
 
- Amélioration de la Communication série PC<->arduino<->douchette RFID<->capteurs ultrasons
 
 
'''semaine 6:'''
 
- Lancement automatique du code sur pcduino au démarrage
 
 
'''semaine 7:'''
 
- Développement application android
 
Voici un extrait du code à utiliser pour faire passer la tablette en accessory mode:
 
 
bool AndroidAccessory::switchDevice(byte addr)
 
{
 
    int protocol = getProtocol(addr);
 
    if (protocol >= 1) {
 
        Serial.print("device supports protocol 1 or higher\n");
 
    } else {
 
        Serial.print("could not read device protocol version\n");
 
        return false;
 
    }
 
    sendString(addr, ACCESSORY_STRING_MANUFACTURER, manufacturer);
 
    sendString(addr, ACCESSORY_STRING_MODEL, model);
 
    sendString(addr, ACCESSORY_STRING_DESCRIPTION, description);
 
    sendString(addr, ACCESSORY_STRING_VERSION, version);
 
    sendString(addr, ACCESSORY_STRING_URI, uri);
 
    sendString(addr, ACCESSORY_STRING_SERIAL, serial);
 
    usb.ctrlReq(addr, 0, USB_SETUP_HOST_TO_DEVICE | USB_SETUP_TYPE_VENDOR |
 
                USB_SETUP_RECIPIENT_DEVICE, ACCESSORY_START, 0, 0, 0, 0, NULL);
 
    return true;
 
}
 
 
Ce code permet de connaitre la version du protocle supporté par le device et établit la connexion entre la tablette et le device.
 
 
Une autre partie du protocole interessante:
 
 
"In AOA 1.0, there are only two USB product IDs:
 
 
    0x2D00 - accessory
 
    0x2D01 - accessory + adb"
 
 
AOA 2.0 ajoute simplement une partie accessory+audio. Nous n'en avons pas besoin et avons do nc utilisé la valeur 0x2D00
 
 
"accessory - An interface providing 2 bulk endpoints for communicating with an Android application."
 
 
Nous passons donc par des endpoints pour la communication en bulk_tranfer
 
 
 
- Communication USB PCduino<->tablette
 
 
'''semaine 8:'''
 
- Suite du développement de l'application androïde et de la communication pcduino<->tablette
 
- Mise en place du scénario de prélèvement
 
- Interconnexion de l'ensemble et premiers tests
 
- Amélioration du code de détection de contour (renommé en détection des zones "bac" plus approprié)
 
 
Quelques tests effectués pour déterminer le centre des 4 bacs:
 
[[Fichier:Test_centre.png|200px]]
 
 
 
- Test du prototype complet en mode automatique
 
 
 
'''semaine 9:'''
 
- tests sur site oxylan
 
- rédaction de documentation
 
- amélioration par rapport aux retours des tests.
 
 
= livrables =
 
 
 
 
 
 
 
= Bibliographie =
 
 
Bibliographie:
 
 
Traitement d’images
 
 
Documentation opencv
 
 
http://opencv.org/
 
 
Filtre:
 
 
http://fr.wikipedia.org/wiki/Filtre_de_Sobel
 
 
http://fr.wikipedia.org/wiki/Filtre_de_Canny
 
 
Méthode de haar
 
 
http://fr.wikipedia.org/wiki/Caract%C3%A9ristiques_pseudo-Haar
 
 
http://note.sonots.com/SciSoftware/haartraining.html
 
 
 
Android communication
 
 
Doc android, fonctions de communication.
 
 
https://developer.android.com/guide/topics/connectivity/usb/accessory.html
 
 
Protocole de communication
 
 
http://source.android.com/accessories/aoa2.html
 
 
 
Matériel:
 
 
Datasheet capteurs sonores
 
 
http://www.robot-electronics.co.uk/htm/srf10tech.htm  (rf10)
 
 
http://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CCoQFjAA&url=http%3A%2F%2Fwww.maxbotix.com%2Fdocuments%2FMB1000_Datasheet.pdf&ei=B-cMU-aAGo2U0QWQyYHQBQ&usg=AFQjCNEzWvUCQDbrnp3H6mXXtFQjYr4csQ&sig2=iHcrANmtOoURHQ6-Ii1-Sw&bvm=bv.61725948,d.d2k
 
 
 
Achat de la batterie
 
 
http://www.amazon.fr/15000mAh-Batterie-Smartphones-Tablettes-Tablette/dp/B00D5T3QK4/ref=pd_cp_computers_0
 
 
 
Achat de mini pc embarqué (autre que pcduino)
 
https://www.olimex.com/wiki/A10-OLinuXino-LIME
 

Version actuelle datée du 5 janvier 2015 à 13:41