Comment détecter une personne qui s'approche

Comment détecter une personne qui s'approche

On nous a plusieurs fois demandé quelle était la meilleure méthode pour détecter une personne qui s'approche, par exemple pour allumer automatiquement l'écran d'une borne interactive. Une solution assez intuitive consiste à utiliser un télémètre comme le Yocto-RangeFinder. Cela peut fonctionner dans la plupart des cas, mais il y a quelques pièges à éviter...



Le principe de fonctionnement habituel des télémètres est d'envoyer des impulsions, sonores ou laser, et de mesurer le temps qu'elles mettent pour retourner vers le capteur après s'être réfléchies contre un obstacle. C'est une diode laser qui est utilisée dans le Yocto-RangeFinder.

Le Yocto-RangeFinder est un minuscule télémètre basé sur une diode laser
Le Yocto-RangeFinder est un minuscule télémètre basé sur une diode laser


Le capteur utilise des impulsions bien particulières qui pourront être reconnues à la détection, même lorsque l'environnement est relativement bruité par de la lumière ambiante variable, ou par la présence de télémètres identiques à proximité immédiate.

Contrairement à ce qu'on pourrait imaginer intuitivement, le cas le plus difficile à gérer est l'absence de réflexion, lorsqu'il n'y a pas d'objet à mesurer. En effet, le système fonctionne en recherchant la meilleure correspondance entre le signal émis et tous les signaux reçus. Mais lorsqu'il n'y a pas de cible, la meilleure réponse est un faux-positif, qui peut ressembler à une faible réflexion mais qui n'en est pas vraiment une. Pour détecter l'absence d'une cible, il faut donc être capable de distinguer un maximum produit par une réflexion très faible d'un maximum produit par le bruit ambiant.

Prenons un exemple concret pour illustrer ce problème. L'application consiste à détecter une personne qui s'approche dans une pièce relativement étroite, aussi tôt que possible.

Environnement de test intérieur
Environnement de test intérieur


Intuitivement, on va configurer le Yocto-RangeFinder en mode long range, pour détecter la personne depuis le plus loin possible. Voici le résultat brut:

Mesures brutes en mode long-range
Mesures brutes en mode long-range


Ce résultat illustre bien le propos. En présence d'une cible jusqu'à 1m50, la mesure brute est très bonne. Au-delà, on a parfois une absence de mesure, et ensuite des faux positifs en l'absence de cible. La raison est simple: le mode long range est celui qui essaie de détecter les réflexions les plus faibles, pour pouvoir mesurer des cibles le plus loin possible. C'est donc aussi celui qui est le plus sensible aux fausses réflexions. Dans notre environnement relativement étroit, on a un fort risque de réflexions parasites contre les murs blancs, qui causent ces problèmes.

Il existe une parade à ce problème. Les mesures étant très rapides (> 20Hz), et dans la mesure où l'on n'a pas besoin d'une réaction à quelques centièmes de seconde près, on peut se permettre de faire une estimation statistique de la qualité de la mesure et de filtrer les fausses réflexions. Nous vous proposons d'ailleurs cette semaine un nouveau firmware pour le Yocto-RangeFinder qui intègre directement cette fonctionalité, afin que vous n'ayez pas à l'implémenter vous-même dans votre programme.

Concrètement, vous disposez avec ce nouveau firmware d'une méthode get_quality() qui permet d'évaluer le niveau de confiance de la mesure, basé sur la variance des mesures dans la fenêtre d'analyse. Et vous disposez d'une méthode set_timeFrame() qui vous permet de configurer la fenêtre d'analyse statistique, aussi utilisée pour calculer une valeur moyennée et donc plus stable de la mesure. Pour maintenir la compatibilité avec les firmwares précédents, le comportement par défaut reste une valeur instantanée. Voici ce que donne ce nouveau firmware pour la même expérience (lignes bleues et vertes ci-dessous):

Mesures brutes et filtrées en mode long-range
Mesures brutes et filtrées en mode long-range


On constate que les mesures filtrées sont désormais directement utilisables, mais au prix d'une petite latence supplémentaire, comme on s'y attendait. La mesure de qualité est bien capable de détecter les zones d'incertitudes, lorsque la cible est à la limite de la plage de détection.

Quelques tests


Profitons de l'occasion pour répéter cette expérience dans différentes conditions, afin de valider les distances de détection indiquées dans la documentation pour les différents modes de fonctionnement du Yocto-RangeFinder. Commençons par le mode standard, avec une cible claire: la personne qui s'approche est vêtue d'une chemise gris clair.

Mode standard, cible claire (à l'intérieur)
Mode standard, cible claire (à l'intérieur)


On constate que le filtrage n'est pas indispensable dans cet environnement en mode standard, même si il améliore la stabilité de la mesure. Voyons ce qui se passe avec une cible foncée, lorsque la personne qui s'approche est vêtue d'une polaire noire:

Mode standard, cible foncée (à l'intérieur)
Mode standard, cible foncée (à l'intérieur)


La bonne nouvelle est que la détection fonctionne quasiment aussi bien, jusqu'à 1m20. La différence ne se voit que sur la qualité mesurée, qui est un peu moins bonne. C'est pour cela que la documentation ne qualifie les mesures sur des cibles foncées que jusqu'à 70cm, mais en pratique si la cible n'est pas entièrement noire, des distances jusqu'à 1m20 sont encore utilisables à l'intérieur.

Le mode rapide est comme attendu un peu moins précis:

Mode rapide, cible claire (à l'intérieur)
Mode rapide, cible claire (à l'intérieur)


L'analyse statistique rattrape cette imprécision avec le moyennage, mais du coup il n'y a plus grand avantage à utiliser le mode rapide. Donc à moins que la vitesse optimale soit vraiment essentielle, utilisez plutôt le mode standard qui ne va pas beaucoup moins vite.

Et à l'extérieur ?


Comme indiqué dans la documentation, les mesures à l'extérieur sont beaucoup plus difficiles car la lumière ambiante est beaucoup plus forte, et donc la marge de contraste du détecteur optique est plus faible. Sans filtrage, la mesure est difficilement utilisable, mais le filtrage à 1 seconde permet une bonne détection jusqu'à 60cm:

Mode standard en extérieur
Mode standard en extérieur


On pourrait se demander si l'utilisation du mode "haute-précision" améliore la qualité des mesures en extérieur, ou si le mode "longue distance" permet de mesurer plus loin en extérieur aussi. Ce n'est malheureusement pas le cas, car à l'extérieur le mode haute-précision a tendance à rejeter trop de mesures, tandis que le mode longue distance est lui trop bruité pour être utilisable.


Mode haute-précision en extérieur Mode longue distance en extérieur
Les modes haute-précision et longue distance n'apportent rien à l'extérieur


Ces observations confirment donc les indications de la documentation: à l'extérieur, utilisez le mode standard et ne comptez pas sur une détection au delà de 50-60cm. Pour une détection à plus grande distance, il vous faudra recourir à un télémètre à infra-son, à une barrière lumineuse, à un moyen de détection mécanique ou sinon investir dans un télémètre laser plus puissant mais aussi beaucoup plus cher...

Commenter aucun commentaire Retour au blog












Yoctopuce, get your stuff connected.