Quelle est la façon la moins chère / la plus simple de détecter une personne?

15

Je voudrais savoir si quelqu'un a réussi à détecter un mammifère à corps chaud (c.-à-d. Un humain) à l'aide de capteurs standard et peu coûteux?

Idéalement, j'aimerais utiliser un capteur peu coûteux ou une combinaison de capteurs pour détecter une personne dans une pièce et localiser cette personne. Je voudrais que le robot entre dans une pièce, détecte si un ou des humains sont présents, puis se déplace vers l'humain détecté. La précision n'a pas besoin d'être de 100%, car le coût est plus un facteur. J'aimerais que les exigences de calcul d'un tel capteur soient telles qu'il puisse fonctionner sur un Arduino, bien que si cela est impossible, je serais prêt à utiliser quelque chose avec plus de puissance, comme un Raspberry Pi ou un BeagleBone Black. J'ai quelques réflexions; cependant, aucun d'entre eux n'est idéal:

  1. Capteur PIR - Peut détecter un mouvement dans un grand champ de vision (c.-à-d. Habituellement 120 degrés ou plus). Pourrait être la chose la plus proche d'un détecteur "humain" que je sache; cependant, cela nécessite un mouvement et localiser / trianguler où se trouve une personne serait très difficile (impossible?) avec un si grand champ de vision.
  2. Échographie - Peut détecter des objets avec une bonne précision. A un champ de vision beaucoup plus étroit; cependant, est incapable de faire la différence entre un objet statique non vivant et un humain.
  3. Détecteurs IR - (c.-à-d. Capteurs à portée nette) Peut à nouveau détecter des objets avec une grande précision, un champ de vision très étroit; cependant, il est de nouveau incapable de différencier les objets.
  4. Webcam + OpenCV - Utilisez éventuellement la détection des visages pour détecter des humains dans une pièce. Cela peut être la meilleure option; cependant, OpenCV est coûteux en calcul et nécessiterait bien plus qu'un Arduino pour fonctionner. Même sur un Raspberry Pi, cela peut être lent.
  5. Kinect - En utilisant les capacités de détection des fonctionnalités de Kinect, il serait relativement facile d'identifier les humains dans une zone; cependant, le Kinect est trop cher et je ne le considérerais pas comme une solution "bon marché".

Peut-être que quelqu'un est au courant d'un «détecteur de chaleur» bon marché réglé sur la chaleur corporelle et / ou a réussi avec une combinaison de (# 1-4) ci-dessus et aimerait partager ses résultats?

Yahma
la source
Est-il limité aux humains ou devrait-il également reconnaître M. Ed?
ott--
Tout mammifère à corps chaud. Il sera utilisé à l'intérieur, donc M. Ed ne devrait pas être là; cependant, s'il l'était, il serait détecté. =)
Yahma
J'ai été amené à comprendre (quand je cherchais quelque chose de similaire) que le Kinect n'est en fait pas si cher; cependant, il souffre de la nécessité d'une distance minimale pour fonctionner correctement. Toujours pour vos besoins, cela pourrait fonctionner et je suis sûr qu'il y a beaucoup de code pour cela.
Galahad II du
Avec quelle solution êtes-vous allé? Avez-vous trouvé quelque chose avec une portée plus longue?
Crashalot
En fait, j'ai une question. Peut-on détecter le pouls humain en utilisant un capteur IR dans les broches analogiques d'Audrino? si oui, comment? s'il vous plaît, aidez-moi
sapana

Réponses:

7

Une combinaison d'un détecteur infrarouge passif (PIR) et d'un télémètre sonar (SRF) devrait faire l'affaire.

Ce qui a bien fonctionné pour moi auparavant (ne trouvant pas d'humains mais très similaire) était d'avoir deux PIR sur les côtés gauche et droit pointés afin qu'ils aient un peu de chevauchement au milieu.
Vous pouvez alors déterminer si l'humain est à gauche, à droite ou devant (lorsque les deux sont allumés). En gros, vous empilez ensuite cela au-dessus du SRF qui vous indiquera la portée, etc. C'est un peu sale et vous devez faire quelques hypothèses, mais cela fonctionne bien pour sa simplicité.

Le pseudo-code pour les 2 PIR pourrait être quelque chose d'aussi simple que:

amount = 60; //degrees
while (notCloseEnough)
{
  if (bothActive)
    forward;
  else 
  {
    if (leftActive)  
      turnLeftByAmount(amount);
    else
      turnRightByAmount(amount);
    amount = amount - 5;

    //recalibrate
    if (amount <= 0)
      amount = 60;
  }

  checkIfCloseEnough();
}

L'idée est que vous vous tournez beaucoup d'un côté (60 degrés) si vous voyez quelque chose dans cette zone. S'ils ne sont pas devant vous après le virage, tournez un peu moins du côté où vous les voyez. Continuez à répéter et à réduire le nombre de tours jusqu'à ce qu'ils soient devant vous, puis vers l'avant. N'oubliez pas que vous ne tournez pas autant (réinitialisez l'angle) une fois qu'ils sont devant, car ils ne se déplaceront pas «hors de portée» aussi rapidement.

J'ai été vraiment étonné de la qualité de cet algorithme (nous l'avons utilisé pour les jouets de poursuite automatisés et avons dû le ralentir / le rendre muet car il battrait / attraperait un robot contrôlé par l'homme trop facilement).

Les deux capteurs sont disponibles auprès de Pololu (sans affiliation):

Télémètre passif de sonar de détecteur infrarouge

profMamba
la source
Pouvez-vous publier un pseudo-code ou d'autres détails sur la façon dont l'utilisation d'un capteur PIR et d'un sonar pourrait détecter et localiser une personne?
Yahma
Quelle serait la portée de cette solution? Pourrait-il être adapté pour suivre des personnes jusqu'à 300 pieds de distance? Et conçu pour s'adapter à un champ de vision de 180 degrés sans pièces mobiles? Merci pour cette suggestion!
Crashalot
La fiche technique PIR ne répertorie pas une plage ( pololu.com/file/0J250/SE-10.pdf ), mais en fonction de la taille du capteur, il semble que la plage soit limitée, et certainement pas quelque chose qui peut détecter l'homme mouvement à 100-300 pieds?
Crashalot
Cela a bien fonctionné sur de petites distances, peut-être 2 à 3 mètres (6 à 9 pieds). Je pense également que cet algorithme ne s'adapterait pas bien à de plus grandes distances, par exemple car il dépend vraiment du fait que même une grosse `` erreur '' ou une fluctuation peut être corrigée avant que le robot ou le sujet ne soit trop séparé.
profMamba
1

Les capteurs de température basés sur MEMS d'Omron (gamme D6T) ou Excelitas (DigiPile) sont un type de capteur plus récent qui peut être utilisé. Ceux-ci, contrairement aux éléments PIR, mesurent les températures absolues et permettent ainsi de distinguer les températures de fond et de premier plan et de détecter les mouvements et les présences statiques des sources de température.

kjyv
la source
Savez-vous si ces capteurs pourraient suivre des personnes jusqu'à 300 pieds de distance?
Crashalot
Je ne pense pas que cela fonctionnerait. Je dirais 5-10 m maximum. La résolution est assez faible, donc une personne à cette distance n'est qu'un petit point à l'intérieur d'un pixel.
kjyv
Merci pour la réponse! Au-delà de la vision par ordinateur haute résolution, y a-t-il quelque chose qui pourrait fonctionner sur 300 pieds? Étant donné que le CV est si coûteux en calcul, pourriez-vous réduire les coûts de calcul en couplant le CV à d'autres capteurs comme le PIR (ou thermique) pour suivre les personnes à 100-300 pieds de distance?
Crashalot
0

un capteur capacitif pourrait fonctionner, c'est vraiment pas cher à fabriquer, juste du papier d'aluminium et quelques résistances, il peut détecter la chair mais je ne sais pas si iy ne détecte rien d'autre que la chair, vous pouvez utiliser 3 pour trianguler

user1477
la source
Hein? Quelle serait la portée à ce sujet? Millimètres?
RoboKaren
0

Je ne peux pas dire si c'est le plus simple, mais en théorie, vous pouvez utiliser la bibliothèque de grossissement vidéo eulérienne pour détecter le pouls d'une personne.

Dans ce cas, vous recherchez une fluctuation dans la vidéo qui correspond à la plage attendue des impulsions humaines. Vous auriez également besoin d'une image claire d'une partie du corps présentant le pouls visible.

Il y a également eu un certain travail ( exemple 1 , exemple 2 ) pour explorer la détection de visage basée sur le matériel. Les caméras numériques d'il y a quelques années avaient cette capacité, qui était essentiellement un réseau de neurones hautement optimisé conçu pour dire `` ce carré contient-il un visage ou non '' ... alors vous venez d'itérer sur un ensemble de carrés prédéfinis dans l'image capturée.

Ian
la source
Aww, tu as suggéré la même chose que j'ai faite pendant que j'écrivais la mienne! Vous avez aussi vu le film Screamers (1995)? = P
jzx
J'ai vu la bande-annonce, mais jamais le film ... bon de savoir que je pourrais être sur quelque chose. Mais que fait Yahma? :)
Ian
0

J'ai essayé d'utiliser PIR mais il a des problèmes de manipulation et des retards. Ce n'est pas un choix efficace pour que la détection humaine soit honnête. Vous pouvez utiliser la technique de détection capacitive car c'est la méthode la moins chère et la plus simple pour la détection humaine (un choix intelligent) et elle est aussi moins complexe. Vous pouvez fabriquer un capteur pour vous-même à très faible coût et il est bon pour les petits projets. J'en ai utilisé un dans mon projet "Robot de détection humaine". Vous pouvez regarder ma vidéo sur: Détection Humaine Capacitive

Muhammad Yamman
la source
0

Une solution non-bare-metal qui deviendra probablement de plus en plus populaire au cours des prochaines années serait de décharger votre lourde tâche de traitement de données (par exemple reconnaître un humain dans une image) vers un service Cloud. Cela suppose que votre appareil est connecté à Internet. Voici un exemple avec le Raspberry Pi et l'API Google Cloud Vision: https://www.dexterindustries.com/howto/use-google-cloud-vision-on-the-raspberry-pi/ . Notez qu'il nécessite un abonnement à Google Cloud après une période d'essai, mais certaines autres API de vision cloud (Amazon, Microsoft Azure, ...?) Peuvent même offrir leurs services gratuitement si vous soumettez moins de N demandes par mois à leurs serveurs .

Une autre solution pour le traitement intensif de données sur de petites plates-formes serait de décharger le travail sur un dispositif semblable à une clé USB sur votre robot avec une unité de processeur dédiée pour exécuter des modèles d'apprentissage automatique déjà formés (par exemple Movidius Neural Compute Stick avec le Raspberry PI: https : //medium.com/deep-learning-turkey/a-brief-guide-to-intel-movidius-neural-compute-stick-with-raspberry-pi-3-f60bf7683d40 ). Cela fonctionne également hors ligne. Ils sont toujours un peu chers pour les projets de loisirs, mais je m'attends à ce que leur coût diminue comme tout.

al-dev
la source