Projets:Canne a son

From wikilab
Canne a son

Prototype final.png

Informations
Description Dispositif pour détecter les obstacles, issu de Wicanne Lidar sans la partie reconnaissance des obstacle par IA
Catégorie Malvoyance
Etat d'avancement Réalisés
Techniques teensy
Durée de fabrication de 4 à 8 h
Coût matériel De 50 à 100 euros
Niveau Moyen
Licence by-sa
Date de création 2021-06-21
Équipe
Porteur de projet François Leberre
Contributeurs Ylc
Fabmanager Delphine
Référent documentation Ylc, Delphine
Nom humanlab Humanlab_MHK
Documentation
Statut de la documentation Complète
Relecture de la documentation Non vérifiée


Description du projet

Ce prototype est dérivé de la Wicanne « Lidar » sans la partie reconnaissance des obstacle par IA.

Le système se suffit donc à lui-même et les obstacles rencontrés sont matérialisés par des sons de différentes fréquences.

Il est constitué d'un Lidar TFmini Plus couplé à un microcontrôleur Teensy 4.1.

Les sons sont émis par un buzzer piezzo. L'ensemble est contenu dans un petit boîtier qui est destiné à être fixé sur un support à la convenance de l'utilisateur. (Adaptation à réaliser donc en fonction de la demande).

La mise en route se fait par un simple interrupteur situé à l'arrière de celui-ci. Le boîtier est alimenté par une source de courant de 5 volts. (soit par la prise micro-USB si on dispose d'un interrupteur sur l'alimentation, soit sur la pin VIN en passant par l'interrupteur du boîtier si on utilise une alimentation sans interrupteur).

« Canne à son »fonctionne dans un intervalle de distance de 15 cm à 5 mètres.

La détection est basée sur la variation brutale de distance lors du balayage d'un obstacle par rapport à son environnement.

La système s'adapte automatiquement à la distance à laquelle se trouve un obstacle. Le seuil de variation déclencheur est plus petit pour les obstacles proches que pour les obstacles éloignés. Ainsi, par exemple, un obstacle à 90 cm sera détecté s'il présente un variation d'au moins 5 cm alors que pour un obstacle situé à 2 ou 3 m, le seuil de variation de distance doit être de 15 cm.

A chaque détection d'une variation de distance supérieure au seuil déterminé pas la distance à l'obstacle, un bip sonore est émis avec une fréquence d'autant plus élevée que l'obstacle est proche.

Ainsi on pourra reconnaître les limites de l'obstacle lors d'un balayage de celui-ci en entendant un son aigu lorsque le faisceau arrive dessus et un son plus grave lorsque le faisceau quitte l'obstacle.

Devant une grille ou un escalier on pourra donc « ressentir » le nombre de barreau ou de marche par un balayage dans le sens approprié. (de gauche à droite ou de haut en bas).

Les fréquences utilisées ainsi que les seuils de variation pourront être adaptés aux souhaits de l'utilisateur dans la mesure où cela n'affectera pas le bon fonctionnement du système.

Il sera sans doute nécessaire d'acquérir une certaine expérience pour en faire un bon usage.

Cahier des charges

Analyse de l'existant

Equipe (Porteur de projet et contributeurs)

  • Porteurs du projet : Instructeurs de locomotion du centre Angèle Vannier
  • Concepteurs/contributeurs : Yves Le Chevalier
  • Animateur (coordinateur du projet)
  • Fabmanager référent :Delphine
  • Responsable de documentation : Yves Le Chevalier, Delphine

Matériel nécessaire

Outils nécessaires

  • fer à souder
  • Imprimante 3d

Coût

Délai estimé

Fichiers source

Documentation PDF

Télécharger les fichiers STL du boitier

Etapes de fabrication pas à pas

Schéma électronique

Schema electronique.png

Programmation de la teensy

Télécharger le code à téléverser sur la Teensy via l'IDE Arduino

// Canne_a_son_Teensy4             YLC 18/06/2021
// Sonorisation de la détection d'obstacles par mesure des variations brutales de distance
// Jusqu'à 1,10 m le seuil de variation est de 5 cm au-delà de cette distance le seuil est de 15 cm. 
// Harware : Teensy 4.1 + lidar TF mini PLus + Buzzer + alim 5v.
// A savoir : Tests sur Arduino nano => ne fonctionnent pas correctement car carte trop lente. 
//******************************************************************
#define PorSerLid Serial2       // déclaration du lidar TF mini sur port série #2 (pins 7 et 8)
#include "TFMiniPlus.h"
TFMiniPlus tfmini;

#include "EasyBuzzer.h"  

float dis = 0;                 // distance mesurée par Lidar
float dist = 0;                // distance retenue
int vardis = 0;                // écart de distance entre 2 mesures
unsigned int freqson;          // fréquence du bip sonore
const int dischangseuil = 110; // distance de changement de seuil de détection
const int seuilproch = 5;      // seuil de détection pour les obstacles proches
const int seuileloin = 15;     // seuil de détection pour les obstacles éloignés
int vardimi;                   // seuil chosi pour activer signal sonore (cm)
float dislid[2];               // tableau de stockage des mesures faite par le lidar 
bool premes = true;            // indicateur de la première mesure

//__________________________________________________________________

void mesure()  {
  if (tfmini.readData()) {         // Récupération de la mesure lidar  
    dis = tfmini.getDistance();    // distance mesurée 
    if (dis > 500)   dis = 500;    // on ne va pas a plus de 5 m
    if (dis > 15) {                // si mesure valide de plus de 15 cm
      dist = dis;                  // distance est retenue
    }
  }
}
//=========================================================

void setup() {
  EasyBuzzer.update();          // correction bug dans lib EasyBuzzer
  EasyBuzzer.setPin(14);        // pin 14 : Pin buzzer 
  PorSerLid.begin(115200);      // ouverture du port série 2 (Lidar)
  tfmini.begin(&PorSerLid);     // démarrer le lidar sur port série #2
  tfmini.setFrameRate(50);      // fixer la fréquence du Lidar (Hz)
  tfmini.saveSettings();        // enegistrer les réglages 
}
//=========================================================

void loop() { 
  mesure();                      // récupérer une distance
  if (dist > 0)  {               // si distance mesurée
    dislid[0] = dislid[1];       // décaler la mesure précédente dans premier poste
    dislid[1] = dist;            // stocker nouvelle mesure dans second poste
    if (premes) {                // si premiere mesure on ne fait rien d'autre
      premes = false;            // pour indiquer les mesures suivantes    
    }
    else {
      vardis = abs(dislid[0] - dislid[1]);  // calcul de l'écart entre 2 mesures 
      if (dislid[1] < dischangseuil) {      // si mesure "proche"
        vardimi = seuilproch;               // seuil proche activé
      }
      else vardimi = seuileloin;            // seuil éloigné activé
      if (vardis > vardimi) {               // Si écart de distance supérieur au seuil retenu
        freqson = 2500 - (dislid[1] * 4);   // calcul fréquence fonction(dernière distance mesurée)
        EasyBuzzer.singleBeep(freqson,50);  // jouer le son calculé 50 millisec.
        delay(50);                          // attendre la fin du son
        EasyBuzzer.stopBeep();              // arrêter le buzzer
      }       
    } 
  }                  
}   
//**********************fin prog******************************/


Boitier à imprimer en 3D

Télécharger et imprimer les fichiers STL du boitier|left|thumb|700px|Visualisation des STLS et instructions pour impression)

Pour le fichier STL "boitier_canne_a_son_boitier", mettre la rainure vers le haut et l'imprimer avec supports. Les deux autres fichiers sont à imprimer sans support.

Canne a son position impression.jpeg

Montage des éléments à insérer dans le boitier

Vue éclatée du boitier
Vue du boitier sans capot arrière


Alimentation du dispositif

Nous avons opté pour une batterie externe Romoss 5V qui est connectée en USB à la canne à son. Avec un cable suffisament cela permet d'avoir la batterie dans la poche et la canne à son dans la main.

Durée de fabrication du prototype final

Journal de bord

RV jeudi 17/03/2022

Présents: yves Le chevalier, François Leberre, Sophie Arhimann (instructrice de locomotion), Cécile Lechat (ergothérapeute Centre André Breton), François Pasteau (INRIA, INSA), Fabien Grzeskowiak (INRIA, INSA), Claudia et Marion (Malvoyantes porteuses de projet), Antoine (Malvoyant en fauteuil roulant ) et sa mère, Delphine.

Cahier des charges après analyse du besoin des porteurs de projets

Suite aux échanges sur les besoins des malvoyantes présentes à la réunion (Marion et Claudia) qui sont volontaires pour être impliquées sur le projet en tant que porteuses de projet et béta testeuses voici le cahier des charges qui a été élaboré.

  • Sera un complément de la canne blanche et n'est pas destiné à la remplacer
  • détecter les obstacles en hauteur de la ceinture à un peu plus haut que la tête
  • doit permettre de détecter un corridor vide sur une largeur de 70 cm environ et distance de deux à trois mètres pour se frayer un chemin
  • rester simple (mise en oeuvre et retour d'information)
  • robuste (comme la canne)
  • open source
  • être paramétrable facilement (retour d'info, seuils etc .. : doit permettre le choix du retour en vibration, ou retour sonore)
  • fixable et déclipsable de la canne
  • boîtier étanche
  • plus petit que la première version
  • autonomie: 8 heures
  • mode de recharge :brancher un câble USB facilement , recommandation : connecteur magnétique? ou port USB normal
  • avoir un bouton poussoir pour activer et désactiver le prototype à la demande

Éléments à prendre en compte :

  • L'angle de la canne par rapport au sol est toujours le même mais la taille de la canne diffère selon la taille de la personne. La longueur de la canne verticalement correspond à la hauteur du sternum de l'utilisateur
  • Le prototype actuel nécessite d'effectuer un balayage précis qui correspond au même balayage que celui de la canne (de l'ordre de 40 degrés)
  • Avoir un retour d'information exprimé par des mots a la limite d'être risqué puisque plus long à exprimer et donc potentiellement ce retour est perçu après avoir rencontré un obstacle
  • La canne détecte déjà les trottoirs, types de sol, bordure, basiquement tout se qui se trouve au sol et qui n'est pas mouvant


Les retours des usagers sur la v1 du prototype

Ils rapportaient principalement la difficulté d'interpréter le retour d'information sous forme de son oscillant de grave à aigu qui était quasiment permanent. L'objectif est donc de filtrer ce retour d'information pour avoir moins d'information (on ne veut pas forcément identifier l'obstacle, mais savoir où le passage est dégagé et sans risque)


Antoine, en fauteuil roulant, a également exprimé son besoin de détecter et d'éviter les obstacles avec son fauteuil, et il a été convenu qu'il testerait un autre prototype actuellement développé par l'INRIA Rennes qui devrait être finalisé d'ici juillet (dans la cadre du partenariat avec Sopra Steria)

Parallèlement Yves a proposé qu'Antoine teste aussi la Wi-canne, version antérieure de la canne à son qui pourrait convenir dans la mesure où le prototype serait positionné sur le fauteuil et offrirait la stabilité du positionnement, indispensable pour la fiabilité de la détection.Projet documenté ici : https://wikilab.myhumankit.org/index.php?title=Projets:Wi-canne