Qual é a maneira mais fácil / barata de detectar uma pessoa?

15

Eu gostaria de saber se alguém teve sucesso em detectar um mamífero de corpo quente (ou seja, humano) usando sensores padrão baratos de prateleira?

Idealmente, eu gostaria de usar um sensor barato ou uma combinação de sensores para detectar uma pessoa dentro de uma sala e localizá-la. Eu gostaria que o robô entrasse em uma sala, detectasse se um (s) humano (s) está (s) presente (s) e depois vá para o humano detectado. A precisão não precisa ser 100%, pois o custo é mais um fator. Eu gostaria que os requisitos computacionais de um sensor desse tipo pudessem ser executados em um Arduino, embora, se for impossível, eu esteja disposto a utilizar algo com mais capacidade hores, como um Raspberry Pi ou um BeagleBone Black. Eu tenho alguns pensamentos; no entanto, nenhum deles é ideal:

  1. Sensor PIR - Pode detectar movimento dentro de um grande campo de visão (ou seja, geralmente 120 graus ou mais). Pode ser a coisa mais próxima de um detector "humano" que eu conheço; no entanto, requer movimento e localização / triangulação onde a pessoa está seria muito difícil (impossível?) com um campo de visão tão grande.
  2. Ultra - som - pode detectar objetos com boa precisão. Tem um campo de visão muito mais estreito; no entanto, é incapaz de diferenciar entre um objeto estático e não-vivo e um humano.
  3. Detectores de infravermelho - (ou seja, sensores de alcance nítido) Podem novamente detectar objetos com grande precisão, campo de visão muito estreito; no entanto, é novamente incapaz de diferenciar objetos.
  4. Webcam + OpenCV - Possivelmente use a detecção de rosto para detectar humanos em uma sala. Essa pode ser a melhor opção; no entanto, o OpenCV é computacionalmente caro e exigiria muito mais que um arduino para ser executado. Mesmo em um Raspberry Pi, pode ser lento.
  5. Kinect - Usando os recursos de detecção de recursos do Kinect, seria relativamente fácil identificar seres humanos em uma área; no entanto, o Kinect é muito caro e eu não consideraria uma solução "barata".

Talvez alguém esteja ciente de um "detector de calor" barato sintonizado com o calor do corpo e / ou tenha tido sucesso com alguma combinação dos itens (1-4) acima e gostaria de compartilhar seus resultados?

Yahma
fonte
É restrito a humanos ou deve reconhecer o Sr. Ed também?
ott--
Qualquer mamífero de corpo quente. Ele será usado dentro de casa, então o Sr. Ed não deveria estar lá; no entanto, se ele fosse, ele seria detectado. =)
Yahma 5/06
Fui levado a entender (quando estava procurando algo semelhante) que o Kinect não é realmente tão caro; no entanto, exige uma distância mínima para funcionar corretamente. Ainda para sua exigência, pode funcionar e tenho certeza de que há muito código disponível.
Galahad II
Com que solução você foi? Você encontrou algo com um alcance maior?
Crashalot 11/10
Na verdade eu tenho uma pergunta. Podemos detectar a taxa de pulso humano usando o sensor IR nos pinos analógicos do Audrino? Se sim, então como? por favor me ajude
sapana

Respostas:

7

Uma combinação de um detector infravermelho passivo (PIR) e um localizador de alcance do sonar (SRF) deve fazer o truque.

O que funcionou bem para mim anteriormente (não encontrando humanos, mas muito semelhante) foi ter dois PIRs do lado esquerdo e direito apontados para que eles tenham um pouco de sobreposição no meio.
Você pode descobrir se o humano está à esquerda, direita ou na frente (quando os dois estão ligados). Basicamente, você o empilha no topo da SRF, o que indica o alcance etc. É um pouco sujo e você precisa fazer algumas suposições, mas funciona bem por sua simplicidade.

O pseudo-código para os 2 PIRs pode ser algo tão simples quanto:

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

A idéia é que você vire muito para um lado (60 graus) se vir algo nessa área. Se eles não estiverem na sua frente após o turno, vire um pouco menos para o lado em que você os vê. Continue repetindo e diminuindo a quantidade de turno até que estejam na sua frente e depois para frente. Lembre-se de que você não gira tanto (redefine o ângulo) quando está na frente, porque o movimento não sai da mira tão rápido.

Fiquei genuinamente impressionado com o quão bom esse algoritmo realmente funciona (nós o usamos para brinquedos de perseguição automatizados e tivemos que desacelerá-lo / emburrecê-lo porque ele vencia / pegava um robô controlado por humanos com muita facilidade).

Ambos os sensores estão disponíveis na Pololu (sem afiliação):

Detector infravermelho passivo
Sonar Range Finder

profMamba
fonte
Você pode postar algum pseudo-código ou mais detalhes de como o uso de um sensor e sonar PIR seria capaz de detectar e localizar uma pessoa?
Yahma
Qual seria o alcance dessa solução? Poderia ser adaptado para rastrear pessoas a até 300 pés de distância? E feito para acomodar um campo de visão de 180 graus sem partes móveis? Obrigado por esta sugestão!
Crashalot 11/10
A folha de dados do PIR não lista um intervalo ( pololu.com/file/0J250/SE-10.pdf ), mas com base no tamanho do sensor, parece que o intervalo seria limitado e certamente não é algo que pode detectar humanos movimento 100-300 pés de distância?
Crashalot 11/10
Isso funcionou bem em pequenas distâncias, talvez 2 a 3 metros (6 a 9 pés). Eu também pensaria que esse algoritmo não escalaria bem a distâncias maiores, por exemplo, porque realmente depende do fato de que mesmo um grande 'erro' ou flutuação pode ser corrigido antes que o robô ou o sujeito se separem demais.
ProfMamba # 11/16
1

Um tipo de sensor mais recente que pode ser usado são matrizes de temperatura baseadas em MEMS da Omron (faixa D6T) ou Excelitas (DigiPile). Estes, ao contrário dos elementos PIR, medem as temperaturas absolutas e, assim, permitem distinguir entre as temperaturas de fundo e de primeiro plano e detectar movimento e presença estática das fontes de temperatura.

kjyv
fonte
Você sabe se esses sensores podem rastrear pessoas a até 300 pés de distância?
Crashalot # 11/16
Eu não acho que isso funcionaria. Eu diria no máximo 5-10m. A resolução é bastante baixa; portanto, uma pessoa a essa distância é apenas um pequeno ponto em um pixel.
kjyv
Obrigado pela resposta! Além da visão computacional de alta resolução, existe algo que funcione a 300 pés? Como o CV é tão caro em termos computacionais, você poderia reduzir os custos computacionais acoplando o CV a outros sensores como o PIR (ou térmico) para rastrear pessoas a 100 a 300 pés de distância?
Crashalot # 12/16
0

um sensor capacitivo pode funcionar, é muito barato de fabricar, apenas folha de alumínio e alguns resistores, ele pode detectar carne, mas não tenho certeza se ele não detecta nada além de carne, você pode usar 3 para triangular

user1477
fonte
Hã? Qual seria o alcance disso? Milímetros?
RoboKaren
0

Não sei dizer se isso é mais fácil, mas é possível que você possa usar a biblioteca Eulerian Video Magnification para detectar o pulso de uma pessoa.

Nesse caso, você procuraria uma flutuação no vídeo que correspondesse ao intervalo esperado de pulsos humanos. Você também precisaria de uma imagem clara de uma parte do corpo que exibisse o pulso visível.

Também houve algum trabalho ( exemplo 1 , exemplo 2 ) explorando a detecção de faces com base em hardware. As câmeras digitais de alguns anos atrás possuíam esse recurso, que era essencialmente uma rede neural altamente otimizada, projetada para dizer "esse quadrado contém uma face ou não" ... então você apenas itera sobre um conjunto de quadrados predefinidos na imagem capturada.

Ian
fonte
Ah, você sugeriu a mesma coisa que eu fiz enquanto escrevia a minha! Você também viu o filme Screamers (1995)? = P
jzx 14/02
Eu já vi o trailer, mas nunca o filme ... bom saber que posso estar em alguma coisa. Mas o que Yahma está fazendo? :)
Ian
0

Tentei usar o PIR, mas há problemas com o manuseio e atrasos. Não é uma escolha eficiente para a detecção humana ser honesto. Você pode usar a Técnica de detecção capacitiva, pois é a maneira mais barata e fácil de detectar seres humanos (uma escolha inteligente) e também menos complexa. Você pode criar um sensor para si mesmo a um custo muito baixo e isso é bom para pequenos projetos. Eu usei um no meu projeto "Human Detection Robot". Você pode assistir ao meu vídeo em: Detecção humana baseada em capacitiva

Muhammad Yamman
fonte
0

Uma solução não-bare-metal que provavelmente se tornará cada vez mais popular nos próximos anos seria descarregar sua tarefa pesada de processamento de dados (por exemplo, reconhecer um humano em uma imagem) para um serviço em nuvem. Isso pressupõe que seu dispositivo esteja conectado à Internet. Aqui está um exemplo com o Raspberry Pi e a API do Google Cloud Vision: https://www.dexterindustries.com/howto/use-google-cloud-vision-on-the-raspberry-pi/ . Observe que ele requer uma assinatura do Google Cloud após um período de teste, mas algumas outras APIs de visão em nuvem (Amazon, Microsoft Azure, ...?) Podem até oferecer seus serviços gratuitamente se você enviar menos de N solicitações por mês aos seus servidores .

Outra solução para o processamento pesado de dados em pequenas plataformas seria descarregar o trabalho em um dispositivo do tipo pen drive no seu robô com uma unidade de processador dedicada para executar modelos de aprendizado de máquina já treinados (por exemplo, Movidius Neural Compute Stick com o Raspberry PI: https : //medium.com/deep-learning-turkey/a-brief-guide-to-intel-movidius-neural-compute-stick-with-raspberry-pi-3-f60bf7683d40 ). Isso funciona offline também. Eles ainda são um pouco caros para projetos de hobby, mas espero que o custo deles caia como tudo.

al-dev
fonte