¿Cuál es la forma más barata / fácil de detectar a una persona?


15

Me gustaría saber si alguien ha tenido éxito al detectar un mamífero de cuerpo cálido (es decir, un ser humano) utilizando sensores estándar de bajo costo.

Idealmente, me gustaría usar un sensor de bajo costo o una combinación de sensores para detectar a una persona dentro de una habitación y localizarla. Me gustaría que el robot ingrese a una habitación, detecte si hay un humano (s) y luego se mueva al humano detectado. La precisión no necesita ser del 100%, ya que el costo es más un factor. Me gustaría que los requisitos computacionales de un sensor de este tipo sean tales que puedan ejecutarse en un Arduino, aunque, si es imposible, estaría dispuesto a utilizar algo con más potencia, como un Raspberry Pi o un BeagleBone Black. Tengo algunos pensamientos; sin embargo, ninguno de ellos es ideal:

  1. Sensor PIR : puede detectar movimiento dentro de un gran campo de visión (es decir, generalmente 120 grados o más). Podría ser lo más parecido a un detector "humano" que yo sepa; sin embargo, requiere movimiento y localización / triangulación donde está una persona sería muy difícil (¿imposible?) con un campo de visión tan grande.
  2. Ultrasonido : puede detectar objetos con buena precisión. Tiene un campo de visión mucho más estrecho; sin embargo, no puede diferenciar entre un objeto no vivo estático y un humano.
  3. Detectores IR - (sensores de rango es decir Sharp.) De nuevo pueden detectar objetos con gran precisión, campo de visión muy estrecho; sin embargo, nuevamente es incapaz de diferenciar objetos.
  4. Webcam + OpenCV : posiblemente use la detección de rostros para detectar humanos en una habitación. Esta puede ser la mejor opción; sin embargo, OpenCV es computacionalmente costoso y requeriría mucho más que un arduino para ejecutarse. Incluso en una Raspberry Pi, puede ser lenta.
  5. Kinect : utilizando las capacidades de detección de características de Kinect, sería relativamente fácil identificar a los humanos en un área; sin embargo, el Kinect es demasiado costoso y no lo consideraría una solución "barata".

¿Quizás alguien conoce un "detector de calor" económico ajustado al calor corporal y / o ha tenido éxito con alguna combinación de (# 1-4) anterior y le gustaría compartir sus resultados?


¿Está restringido a los humanos o debería reconocer al Sr. Ed también?
ott--

Cualquier mamífero de cuerpo cálido. Se usará en interiores, por lo que el Sr. Ed no debería estar allí; sin embargo, si lo fuera, sería detectado. =)
Yahma

Me hicieron entender (cuando buscaba algo similar) que el Kinect no es realmente tan caro; sin embargo, sufre al requerir una distancia mínima para funcionar correctamente. Aún así, para su requerimiento, podría funcionar y estoy seguro de que hay un montón de código para ello.
Galahad II

¿Con qué solución fuiste? ¿Encontraste algo con un rango más largo?
Crashalot

En realidad tengo una pregunta. ¿Podemos detectar la frecuencia del pulso humano usando un sensor IR en pines analógicos de Audrino? Si es así, ¿cómo? por favor ayúdame
sapana

Respuestas:


7

Una combinación de un detector infrarrojo pasivo (PIR) y un buscador de rango de sonda (SRF) debería ser el truco.

Lo que funcionó bien para mí anteriormente (al no encontrar humanos pero muy similar) fue tener dos PIR en los lados izquierdo y derecho apuntados para que se superpongan un poco en el medio.
Luego puedes averiguar si el humano está a la izquierda, a la derecha o al frente (cuando ambos están encendidos). Básicamente, apila esto sobre el SRF, que le indicará el rango, etc. Está un poco sucio y tiene que hacer algunas suposiciones, pero funciona bien por su simplicidad.

El pseudocódigo para los 2 PIR podría ser algo tan simple como:

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();
}

La idea es que gire mucho hacia un lado (60 grados) si ve algo en esa área. Si no están frente a usted después del turno, gire un poco menos hacia el lado que los está viendo. Sigue repitiendo y reduciendo la cantidad de vueltas hasta que estén frente a ti, luego hacia adelante. Recuerde que no gira tanto (restablezca el ángulo) una vez que están al frente porque no se moverá 'fuera del alcance' tan rápido.

Realmente me sorprendió lo bien que funciona realmente este algoritmo (lo usamos para juguetes de persecución automatizados y tuvimos que ralentizarlo / atontarlo porque golpeaba / atrapaba a un robot controlado por humanos con demasiada facilidad).

Ambos sensores están disponibles en Pololu (sin afiliación):

Detector de infrarrojos pasivos
Sonar Range Finder


¿Puedes publicar algún pseudocódigo o más detalles sobre cómo el uso de un sensor y sonda PIR podría detectar y localizar a una persona?
Yahma

¿Cuál sería el rango de esta solución? ¿Podría adaptarse para rastrear personas a una distancia de hasta 300 pies? ¿Y hecho para acomodar un campo de visión de 180 grados sin partes móviles? Gracias por esta sugerencia!
Crashalot

La hoja de datos PIR no enumera un rango ( pololu.com/file/0J250/SE-10.pdf ), pero según el tamaño del sensor, parece que el rango sería limitado, y ciertamente no es algo que pueda detectar humanos movimiento a 100-300 pies de distancia?
Crashalot

Esto funcionó bien para distancias pequeñas, tal vez 2 - 3 metros (6 - 9 pies). También pensaría que este algoritmo no se escalaría bien a distancias más grandes, por ejemplo, ya que realmente depende del hecho de que incluso un gran 'error' o fluctuación se puede corregir antes de que el robot o el sujeto se separen demasiado.
profMamba

1

Un tipo de sensor más reciente que se puede utilizar son las matrices de temperatura basadas en MEMS de Omron (rango D6T) o Excelitas (DigiPile). Estos, a diferencia de los elementos PIR, miden temperaturas absolutas y, por lo tanto, permiten distinguir entre las temperaturas de fondo y de primer plano y detectar el movimiento y la presencia estática de las fuentes de temperatura.


¿Sabes si estos sensores podrían rastrear personas a una distancia de hasta 300 pies?
Crashalot

No creo que eso funcione. Yo diría que máximo 5-10m. La resolución es bastante baja, por lo que una persona a esta distancia es solo un pequeño punto dentro de un píxel.
kjyv

¡Gracias por la respuesta! Más allá de la visión por computadora de alta resolución, ¿hay algo que funcione para 300 pies? Dado que el CV es tan costoso desde el punto de vista computacional, ¿podría reducir los costos computacionales al acoplar el CV con otros sensores como PIR (o térmico) para rastrear a las personas a 100-300 pies de distancia?
Crashalot

0

un sensor capacitivo podría funcionar, es realmente barato de fabricar, solo papel de aluminio y algunas resistencias, puede detectar carne, pero no estoy seguro de si no detecta nada más que carne, puede usar 3 para triangular


¿Eh? ¿Cuál sería el rango en esto? Milimetros?
RoboKaren

0

No puedo decir si esto es más fácil, pero posiblemente podría usar la biblioteca Eulerian Video Magnification para detectar el pulso de una persona.

En ese caso, estaría buscando una fluctuación en el video que coincidiera con el rango esperado de pulsos humanos. También necesitaría una imagen clara de una parte del cuerpo que exhibiera el pulso visible.

También ha habido algo de trabajo ( ejemplo 1 , ejemplo 2 ) explorando la detección de rostros basada en hardware. Las cámaras digitales de hace unos años tenían esta capacidad, que era esencialmente una red neuronal altamente optimizada diseñada para decir "si este cuadrado contiene una cara o no" ... luego simplemente itera sobre un conjunto de cuadrados predefinidos en la imagen capturada.


¡Aww, sugirió lo mismo que hice mientras escribía el mío! ¿Viste también la película Screamers (1995)? = P
jzx

He visto el trailer, pero nunca la película ... es bueno saber que podría estar haciendo algo. Pero, ¿qué está haciendo Yahma? :)
Ian

0

Intenté usar PIR pero tiene problemas de manejo y demoras. No es una opción eficiente para la detección humana para ser honesto. Puede usar la técnica de detección capacitiva, ya que es la forma más barata y fácil de detección humana (una opción inteligente) y también es menos compleja. Puede hacer un sensor para usted a un costo muy bajo y es bueno para proyectos pequeños. He usado uno en mi proyecto "Robot de detección humana". Puedes ver mi video en: Detección Humana Basada en Capacitación


0

Una solución sin metal que probablemente se volverá cada vez más popular en los próximos años sería descargar su tarea de procesamiento de datos pesados ​​(por ejemplo, reconocer a un humano en una imagen) a un servicio en la nube. Eso supone que su dispositivo está conectado a Internet. Aquí hay un ejemplo con la Raspberry Pi y la API de Google Cloud Vision: https://www.dexterindustries.com/howto/use-google-cloud-vision-on-the-raspberry-pi/ . Tenga en cuenta que requiere una suscripción a Google Cloud después de un período de prueba, pero algunas otras API de visión en la nube (Amazon, Microsoft Azure, ...) pueden incluso ofrecer sus servicios de forma gratuita si envía menos de N solicitudes por mes a sus servidores .

Otra solución para el procesamiento de datos pesados ​​en plataformas pequeñas sería descargar el trabajo a un dispositivo similar a una unidad de memoria en su robot con una unidad de procesador dedicada para ejecutar modelos de aprendizaje automático ya entrenados (por ejemplo, Movidius Neural Compute Stick con Raspberry PI: https : //medium.com/deep-learning-turkey/a-brief-guide-to-intel-movidius-neural-compute-stick-with-raspberry-pi-3-f60bf7683d40 ). Esto también funciona sin conexión. Todavía son un poco caros para proyectos de hobby, pero espero que su costo baje como todo.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.