Code Monkey home page Code Monkey logo

the_arbitre's Introduction

The_arbitre

Cahier des charges et journal de bord

  • Serveur :

    • Se connecte à interval régulier à la caméra de l'arbitre
      • Arbitre la partie (Baliser le terrain pour pouvoir situer les robots sur celui-ci; QrCode sur les robots avec id du robot; Détection des QrCode, récup des id et stockage id-pos dans la BD), OpenCV
    • Arbitrage :
      • Vérifier qu'ils respectent les règles et appliquer les malus
        • Ne pas quitter la ligne
        • Ne pas rentrer en collision avec un obstacle
        • Amener les victimes dans le bon hopital
        • Compter les points du robot
      • Donner les renseignements qu'ils demandent (Bluetooth : Robot-arbitre puis arbitre-serveur)
  • Application :

    • Prend des photos à intervalles réguliers, et envoie ces photos au serveur
    • Envoie au serveur le signal de début et de fin de partie
    • Récupère les requêtes des robots et les envoie au serveur, puis renvoie la réponse du serveur au robot)
  • Objectifs :

    1. Faire application qui prend des photos à interval régulier
      • 12/04 : Fonctionnel & interface (Antoine)
    2. Faire en sorte que l'application envoie les photos au serveur et que celui-ci les recoit
      • 11/04 : Serveur python qui peut recevoir plusieurs images à la suite à partir d'un client python (Mika)
      • 13/04 : Difficultés à faire communiquer 2 programmes python autrement qu'en localhost (Mika)
      • 16/04 : Classes modèle (Mika)
      • 16/04-22/04 : Travail sur protocole TCP pour faire communiquer l'application et le serveur, des difficultés. (Antoine)
      • 22/04 : Des messages textes peuvent êtres transmis, seulement l'application plante après envoi. Les adresses utilisés sont des adresses locales. (Antoine)
    3. Lire un QrCode sur une image (1 robot)
      1. Détecter un QrCode à l'aide du classificateur de Haar avec OpenCV (Kevin)
      2. Détecter, lire et localiser un QRCode avec PyZbar (Kevin)
        • Erreur possible en cas de rotation de l'image (Kevin)
    4. Lire plusieurs QrCode sur une image
      • Généraliser la technique de détection d'un QRCode à toute l'image (Kevin)
    5. Trouver la position d'1 robot
      • Calculer le centre du QRCode détecté à partir des coordonnées des sommets (Kevin)
    6. Trouver la position de plusieurs robots
      • Appliquer le point 5 à tous les QRCodes détectés (Kevin)
    7. Identifier un robot sur le terrain et le rentrer dans la BD
    8. Identifier un robot qui quitte la ligne
      1. Transformer une image RGB en grayscale
        • 17/04 : Fonctionnel (Mika)
      2. Binariser une image grayscale
        • 18/04 : Ecriture d'une fonction de binarisation (Mika)
          • Problème de type de variable
          • Problème de temps d'exécution de la binarisation (~15 secondes) -> non viable
        • 19/04-20/04 : Travail sur une mise en place de thread pour réduire le temps d'exécution (Mika)
          • Peu de gain et toujours le problème de type de variable
        • 23/04 : Binarisation par API (Mika)
          • Traitement instantané
    9. Identifier un robot qui récupère une victime
    10. Identifier un robot qui s'arrête sur un hôpital
    11. Différencier les types de victime et tester si celui-ci correspond avec celui de l'hôpital
    12. Identifier la collision de 2 robots
    13. Etapes 4, 5, 6, 7 et 8 avec plusieurs robots
    14. Communiquer le terrain aux robot (par ondes sonores si bluetooth non disponible)
  • Données :

    • Robot :
      • int : id
      • (float, float) : position
      • (int, int) : (score enfants transportés, score adultes transportés)
      • (int, int) : (score enfants sauvés, score adultes sauvés)
      • (int, int) : (malus sortie ligne, malus collision)
      • Lorsqu'un robot arrive un un hopital, le score x transportés correspondant est additionné au score x sauvés et reset

        Par exemple : Un robot transporte 1 enfant et 2 adultes, le score transporté est (1 x 10, 2 x 10) et le score sauvé (0, 0). Il passe par un hopital pour enfant, le score transporté passe à (0, 20) et le score sauvé à (10, 0). Puis lorsque le robot passe sur un hopital général, le score transporté passe à (0, 0) et le score sauvé à (10, 20). Pour calculer le score final du robot, il suffit d'additionner les 2 composantes du score sauvé et de soustraires les 2 composantes du malus. Ici, supposons que le robot soit sorti 2 fois de la ligne et qu'il est percuté un robot, son malus serait (4, 8). Son score final serait donc : 10 + 20 - 4 - 8 = 18.

    • Victime :
      • int : type (0 : enfant, 1 : adulte par exemple)
      • (float, float) : position
    • Hopital
      • int : type (0 : enfant, 1 : adulte par exemple)
      • (float, float) : position

Infos supplémentaires

Ceci est le repository du serveur du projet, voici le lien du repository de l'application mobile : https://github.com/Ravelator/Arbiter_Android

the_arbitre's People

Contributors

f0urchette avatar ravelator avatar keuh20 avatar

Watchers

James Cloos avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.