Différences entre versions de « Projets:Canne a son »
(21 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
− | [[ | + | {{Infobox projet |
− | + | |Image principale=Prototype final.png | |
+ | |Description=Dispositif pour détecter les obstacles, issu de [[Projets:Wi-canne|Wicanne Lidar]] sans la partie reconnaissance des obstacle par IA | ||
+ | |Porteur de projet=Francois LB | ||
+ | |Contributeurs=Ylc | ||
+ | |Fabmanager=Delphine | ||
+ | |Référent documentation=Delphine, Ylc | ||
+ | |Catégorie de handicap=Malvoyance | ||
+ | |Etat d'avancement=Réalisés | ||
+ | |Statut de la documentation=Complète | ||
+ | |Relecture de la documentation=Non vérifiée | ||
+ | |Techniques=teensy | ||
+ | |Durée de fabrication=de 4 à 8 h | ||
+ | |Coût matériel=De 50 à 100 euros | ||
+ | |Niveau=Moyen | ||
+ | |Licence=by-sa | ||
+ | |Projet date=2021-06-21 | ||
+ | |Nom humanlab=Humanlab_MHK | ||
+ | }} | ||
== Description du projet == | == Description du projet == | ||
Ce prototype est dérivé de la [[Projets:Wi-canne|Wicanne « Lidar »]] sans la partie reconnaissance des obstacle par IA. | Ce prototype est dérivé de la [[Projets:Wi-canne|Wicanne « Lidar »]] sans la partie reconnaissance des obstacle par IA. | ||
Ligne 45 : | Ligne 62 : | ||
== Matériel nécessaire == | == Matériel nécessaire == | ||
+ | * Lidar TF mini plus : https://www.gotronic.fr/art-capteur-de-distance-lidar-tf-mini-plus-28966.htm | ||
+ | * Teensy 4.1 | ||
+ | * Buzzer piezo | ||
+ | * Batterie Romoss 5V 10000 mA | ||
==Outils nécessaires== | ==Outils nécessaires== | ||
+ | * fer à souder | ||
+ | * Imprimante 3d | ||
==Coût== | ==Coût== | ||
Ligne 55 : | Ligne 78 : | ||
[[Media:Canne_a_son.pdf|Documentation PDF]] | [[Media:Canne_a_son.pdf|Documentation PDF]] | ||
− | [[Media:STL_Canne_a_son_boitier.zip|Télécharger | + | [[Media:STL_Canne_a_son_boitier.zip|Télécharger les fichiers STL du boitier ]] |
− | |||
− | |||
==Etapes de fabrication pas à pas== | ==Etapes de fabrication pas à pas== | ||
===Schéma électronique=== | ===Schéma électronique=== | ||
[[File:schema_electronique.png|700px]] | [[File:schema_electronique.png|700px]] | ||
+ | |||
+ | ===Programmation de la teensy=== | ||
+ | [[Media:Canne_a_son_teensy4.zip|Télécharger le code à téléverser sur la Teensy via l'IDE Arduino]] | ||
+ | |||
+ | <pre> | ||
+ | // 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******************************/ | ||
+ | |||
+ | </pre> | ||
+ | |||
+ | |||
+ | ===Boitier à imprimer en 3D=== | ||
+ | [[Media:STL_Canne_a_son_boitier.zip|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. | ||
+ | |||
+ | [[File:canne_a_son_position_impression.jpeg|700px]] | ||
+ | |||
+ | ===Montage des éléments à insérer dans le boitier=== | ||
+ | [[File:vue_eclatee_du_boitier.png|700px|thumb|left| Vue éclatée du boitier]] | ||
+ | |||
+ | [[File:vue_du_boitier_sans_capot_arriere.png|700px|thumb|left|Vue du boitier sans capot arrière]] | ||
+ | |||
+ | <br clear=all> | ||
+ | |||
+ | ===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== | ==Durée de fabrication du prototype final== | ||
==Journal de bord== | ==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 | ||
[[Category:Projets]] | [[Category:Projets]] | ||
− | [[Category: | + | [[Category:Réalisés]] |
Version actuelle datée du 27 septembre 2022 à 14:01
Canne a son | |
---|---|
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 | Francois LB |
Contributeurs | Ylc |
Fabmanager | Delphine |
Référent documentation | Delphine, Ylc |
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
- Lidar TF mini plus : https://www.gotronic.fr/art-capteur-de-distance-lidar-tf-mini-plus-28966.htm
- Teensy 4.1
- Buzzer piezo
- Batterie Romoss 5V 10000 mA
Outils nécessaires
- fer à souder
- Imprimante 3d
Coût
Délai estimé
Fichiers source
Télécharger les fichiers STL du boitier
Etapes de fabrication pas à pas
Schéma électronique
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
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.
Montage des éléments à insérer dans le boitier
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