IMA3/IMA4 2018/2020 P18

De Wiki de Projets IMA
Révision datée du 23 avril 2019 à 10:15 par Cbisalli (discussion | contributions) (Semaine 6)


Présentation générale

Description

Le projet consiste à réaliser un dispositif permettant le déplacement en toute sécurité et autonomie d'une personne malvoyante. Le dispositif donne la possibilité de se déplacer sur des terrains aussi bien plats qu'accidentés sans autre aide extérieure. Placé sur son l'épaule, la personne malvoyante est en mesure de se diriger par l'intermédiaire des commandes vocales et des pressions, rappelant celles d'une main d'un accompagnateur humain, qu'elle reçoit du dispositif.

Objectifs

Le dispositif permet à la personne malvoyante une grande autonomie en étant prévenue lorsqu'un obstacle se présente à elle - qu'il soit fixe ou mobile - et lui indique comment l'éviter ou le contourner. Il s'agit d'être une alternative accessible à tous aux solutions existantes telles que les cannes ou les chiens guides, en étant aussi performante tout en apportant un aspect humain via les pressions sur l'épaule. Tout en conservant l'autonomie, la sensation sécurisante d'avoir une personne à ces côtés est présente. Cela est notamment important pour les enfants qui se sentent souvent plus rassurés avec un accompagnateur.

Analyse du projet

Positionnement par rapport à l'existant

Plusieurs dispositifs permettent de réduire l’appréhension du monde par les personnes malvoyantes. En effet, l'environnement, dans lequel on évolue, regorge d'obstacles mobiles ou non. Une rapide analyse est alors nécessaire pour augmenter la sécurité des utilisateurs. Tout d'abord, l'Homme semble être le plus adapté à évoluer dans la société, il se révèle alors être l'accompagnant le plus sécurisant. Cependant cela réduit considérablement l'autonomie de l'individu et reste coûteux si cette assistance est professionnelle. Une alternative peut être l'appel à un animal, tel que le chien, qui offre plus d'autonomie. Des alternatives technologiques existent. Par exemple, le boîtier BuzzClip qui permet de détecter les obstacles; néanmoins il détecte seulement les obstacles à la hauteur de son installation. Ou encore, l'Ultracane qui permet le signalement d'obstacles dans l'axe de la canne.

Analyse du premier concurrent

Nos premiers concurrent sont les chiens d'aveugles.

Le chien est reconnu pour sa sensibilité à l’environnement et aussi sa fidélité à son maître. Le dressage lui permet d'analyser et de réagir, tout en prévenant son maître, à une situation particulière. Cependant cette formation a un coût élevé : de 15 000 euros à 19 000 euros. L'animal demande aussi une attention supplémentairement (vétérinaire, nourriture...). De plus, l'accompagnement d'un animal peut être limité ou interdit dans certains lieux ce qui peut diminuer la liberté de l'utilisateur dans ses mouvements.

Analyse du second concurrent

Notre deuxième concurrent est l'Ultracane.

La cane est répandue pour sa facilité d'utilisation. L'Ultracane permet, de plus, de détecter les obstacles à moins de 4 mètres (environ 2 mètres au bout de la canne qui mesure 1,60 mètre) grâce à la technologie des ultrasons. Un obstacle se traduit par des vibrations dans la canne pour prévenir l'utilisateur. Cependant ces obstacles doivent se situer dans l'axe de la canne. Ceci force alors l'utilisateur à mettre en mouvement sa canne autour de lui ce qui peut diminuer la compréhension des vibrations ; mais aussi porte l'attention sur le malvoyant. Ainsi, ce dispositif permet une autonomie complète, une sécurité plus ou moins établie, néanmoins l'utilisation n'est pas discrète.

Scénario d'usage du produit ou du concept envisagé

Dans notre scénario d'usage on prend le cas d'une jeune malvoyante nommée Léa. Elle désire un moment de solitude et décide de s'aventurer dans la foret. Pour autant elle veut se sentir en sécurité face à d’éventuels obstacles ou imprévus sur son chemin. Elle active alors son "système d'aide au déplacement", le pose sur son épaule et commence sa promenade. Après une semaine particulièrement pluvieuse et venteuse, la foret est pleine d'obstacles. Dès l’entrée de Lea sur le sentier, celle-ci ressent une pression au milieu de son épaule et entend "attention obstacle en hauteur", elle comprend qu'elle doit être vigilante par rapport à un obstacle tel qu'une branche et lève donc sa main pour la repousser. En s'aventurant plus profondément, elle ressent des pressions successives sur son épaule et entends "attention obstacle mobile à gauche à 40m". Elle s’arrête alors, recule et prends la meilleure décision pour contourner l'obstacle en toute sécurité sachant que si l'obstacle représentait encore un danger, son "système d'aide au déplacement" lui aurait signalé sa présence par un nouveaux signal auditif. Elle continue donc sa promenade en suivant les pressions (gauche, droite, vers le bas) et indications de son "système d'aide au déplacement" par rapport aux différents obstacles et le type de terrain (exemple "attention obstacle en hauteur" ou "terrain en pente glissant"...). Léa a donc pu profiter d'une après midi très apaisante, en autonomie complète grâce a son "système d'aide au déplacement". Elle se relevera demain pour une nouvelle aventure en ville ou en campagne toujours guidée par son "système d'aide au déplacement".

Question(s) difficile(s)

  • Comment gérer l'autonomie du dispositif pour éviter à l'utilisateur de devoir le recharger trop régulièrement ?
  • Comment réduire l'encombrement du dispositif pour une utilisation aussi discrète que possible ?

Réponse à la question difficile

Bibliographie et webographie

Préparation du projet

Cahier des charges du groupe

Cahier des charges des équipes

Equipe 1

Equipe 2

Equipe 3

Choix techniques : matériel et logiciel

Equipe 1

Equipe 2

Equipe 3

Liste des tâches à effectuer

Equipe 1

Equipe 2

Equipe 3

Calendrier prévisionnel

Le calendrier prévisionnel peut se concrétiser sous la forme d'un diagramme de GANTT.

Equipe 1

Equipe 2

Equipe 3

Réalisation du Projet

Projet S6

Semaine 4

Semaine 5

Il existe différentes façon d'obtenir des informations sur notre usager:

  • Collecte : rencontrer l'usager, observations, et collecter des éléments pour préciser le scénario d'usage.
  • Persona : élaborer une fiche descriptive de l’usager à fin de construire sa réalité et ainsi en dégager ses problématiques en lien avec sa fragilité, et savoir comment il appréhende le dispositif.
  • Carte d'empathie : entendre, penser, voir, ressentir et dire les mêmes choses que notre usager,finalement se mettre à la place de ce dernier.

Après avoir mis l'usager au centre de notre réflexion, on peut établir le scénario d'usage. Ce dernier consiste en une description de notre usager, il peut être sous différentes formes : bande dessinée, Story board, texte narratif, vidéo...

Semaine 6

Réflexion sur le type de capteur que l'on pourrait utiliser :

1. capteur de distance :

  • capteur à ultrasons HC-SR04 (celui utilisé habituellement avec un arduino) : renvoie la distance d'un obstacle immobile ou mobile (on peut en déduire la vitesse)


  • capteur laser LIDAR-Lite v3 : même utilisation que le capteur à ultrason, permettrait d'avoir plus de précision

Pour que les capteur de distance prennent en compte une plus large partie de l'environnement, nous réfléchissons à placer le capteur sur un servomoteur. Ainsi le capteur pourrait pivoter de haut en bas et prendre en compte la présence d'obstacles à la hauteur de la personne et les changements de dénivelé, les trous.


2. camera :

  • détecter les formes dans le but de différencier un trou d'un rocher par exemple, éventuellement nommer les obstacles, pour que l'utilisateur se repère mieux (annonces vocales type : Attention, trou à 1m)
  • détecter les zones de couleurs (par exemple en forêt : différencier un chemin gris du vert des plantes)

En utilisant une camera, se pose les questions de consommation et de puissance de calcul pour traiter les images en temps réel.

Semaine 7

Eventuellement créer des sous-pages par équipe avec le compte-rendu des réunions de groupe sur cette page principale.

 const byte TRIGGER_PIN = 2;
 const byte ECHO_PIN = 3;
 const unsigned long MEASURE_TIMEOUT = 25000UL;
 const float SOUND_SPEED = 340.0/1000;
 int moteur1= 5 ; 
 int distmin = 300;
 void setup() {
  Serial.begin(9600);
  pinMode(TRIGGER_PIN ,OUTPUT);
  digitalWrite(TRIGGER_PIN ,LOW);
  pinMode(ECHO_PIN, INPUT);
  pinMode(moteur1, OUTPUT);
  }
 void loop() {
  digitalWrite(TRIGGER_PIN, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIGGER_PIN, LOW); 
  /* 2. Mesure le temps entre l'envoi de l'impulsion ultrasonique et son écho (si il existe) */
  long measure = pulseIn(ECHO_PIN, HIGH, MEASURE_TIMEOUT); 
  /* 3. Calcul la distance à partir du temps mesuré */
  float distance_mm = measure / 2.0 * SOUND_SPEED;
  /* Affiche les résultats en mm, cm et m */
  Serial.print(F("Distance: "));
  Serial.print(distance_mm);
  Serial.print(F("mm ("));
  Serial.print(distance_mm / 10.0, 2);
  Serial.print(F("cm, "));
  Serial.print(distance_mm / 1000.0, 2);
  Serial.println(F("m)"));
  /* Délai d'attente pour éviter d'afficher trop de résultats à la seconde */
  delay(500);
  if(distance_mm<distmin)
  {//commencer a vibrer
    digitalWrite(moteur1, HIGH);
  }
  else digitalWrite(moteur1, LOW);
  }

Sélection d'un modèle de main pour l'impression 3D.

[1]

Code mesure de distance et alimentation du moteur vibreur.

[2]

Semaine 8

code servo // Sweep // by BARRAGAN <http://barraganstudio.com> // This example code is in the public domain.


  1. include <Servo.h>

Servo myservo; // create servo object to control a servo

               // a maximum of eight servo objects can be created 

int pos = 0; // variable to store the servo position

void setup() {

 myservo.attach(9);  // attaches the servo on pin 9 to the servo object 

}


void loop() {

 /*for(pos = 0; pos < 360; pos += 1)  // goes from 0 degrees to 180 degrees 
 {                                  // in steps of 1 degree 
   myservo.write(pos);              // tell servo to go to position in variable 'pos' 
   delay(15);                       // waits 15ms for the servo to reach the position 
 } */
 for(pos = 0; pos>=-180; pos-=1)     // goes from 180 degrees to 0 degrees 
 {                                
   myservo.write(pos);              // tell servo to go to position in variable 'pos' 
   delay(15);                       // waits 15ms for the servo to reach the position 
 } 

}

Semaine 9

Semaine 10

Semaine 11

Semaine 12

Documents Rendus

Projet S7

Documents Rendus

Projet S8

Documents Rendus