Qual è il modo più economico / semplice per rilevare una persona?


15

Mi piacerebbe sapere se qualcuno ha avuto successo nel rilevare un mammifero dal corpo caldo (es. Umano) usando sensori standard standard?

Idealmente, mi piacerebbe usare un sensore economico o una combinazione di sensori per rilevare una persona all'interno di una stanza e localizzarla. Vorrei che il robot entrasse in una stanza, rilevasse se un / i umano / i è / i presente / i e poi si muoverà verso l'uomo rilevato. L'accuratezza non deve essere del 100%, in quanto il costo è un fattore determinante. Vorrei che i requisiti computazionali di un tale sensore fossero tali da poter funzionare su un Arduino, anche se se fosse impossibile, sarei disposto a utilizzare qualcosa con più potenza, come un Raspberry Pi o un BeagleBone Black. Ho qualche pensiero; tuttavia, nessuno di questi è l'ideale:

  1. Sensore PIR - Rileva i movimenti all'interno di un ampio campo visivo (ad es. Di solito 120 gradi o più). Potrebbe essere la cosa più vicina a un rivelatore "umano" di cui sono a conoscenza; tuttavia, richiede movimento e localizzare / triangolare dove si trova una persona sarebbe molto difficile (impossibile?) con un campo visivo così ampio.
  2. Ultrasuoni : in grado di rilevare oggetti con buona precisione. Ha un campo visivo molto più ristretto; tuttavia, non è in grado di distinguere tra un oggetto statico non vivente e un essere umano.
  3. Rivelatori IR - (es. Sensori a gamma acuta) Riescono a rilevare oggetti con grande precisione, campo visivo molto stretto; tuttavia, non è nuovamente in grado di differenziare gli oggetti.
  4. Webcam + OpenCV - Eventualmente utilizzare il rilevamento del volto per rilevare le persone in una stanza. Questa potrebbe essere l'opzione migliore; tuttavia, OpenCV è costoso dal punto di vista computazionale e richiederebbe molto più di un arduino per funzionare. Anche su un Raspberry Pi, può essere lento.
  5. Kinect : utilizzando le funzionalità di rilevamento delle funzionalità di Kinect, sarebbe relativamente facile identificare gli umani in un'area; tuttavia, Kinect è troppo costoso e non lo considero una soluzione "economica".

Forse qualcuno è a conoscenza di un "rivelatore di calore" economico sintonizzato sul calore corporeo e / o ha avuto successo con una combinazione di (# 1-4) sopra e vorrebbe condividere i propri risultati?


È limitato agli umani o dovrebbe riconoscere anche il signor Ed?
ott--

Qualsiasi mammifero dal corpo caldo. Sarà usato in casa, quindi il signor Ed non dovrebbe essere lì; tuttavia, se lo fosse, verrebbe rilevato. =)
Yahma,

Sono stato portato a capire (quando stavo cercando qualcosa di simile) che il Kinect in realtà non è così costoso; tuttavia soffre di richiedere una distanza minima per funzionare correttamente. Tuttavia, per le tue esigenze potrebbe funzionare e sono sicuro che ci sia un sacco di codice là fuori per questo.
Galahad II,

Con quale soluzione sei andato? Ti è capitato di trovare qualcosa con un raggio più lungo?
Crashalot,

In realtà ho una domanda. Possiamo rilevare la frequenza cardiaca umana usando il sensore IR nei pin analogici di Audrino? se è così allora come? per favore aiutatemi
sapana

Risposte:


7

Una combinazione di un rilevatore a infrarossi passivi (PIR) e un telemetro sonar (SRF) dovrebbe fare il trucco.

Ciò che ha funzionato bene per me in precedenza (non trovando umani ma molto simili) era avere due PIR sui lati sinistro e destro puntati in modo da avere un po 'di sovrapposizione nel mezzo.
Puoi quindi capire se l'umano è a sinistra, a destra o davanti (quando entrambi sono accesi). Fondamentalmente quindi lo impilate sopra l'SRF che vi dirà intervallo ecc. È un po 'sporco e dovete fare alcune ipotesi, ma funziona bene per la sua semplicità.

Lo pseudo codice per i 2 PIR potrebbe essere qualcosa di così semplice come:

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'idea è che ti giri molto da una parte (60 gradi) se vedi qualcosa in quella zona. Se non sono davanti a te dopo il turno, gira un po 'meno verso il lato in cui li vedi. Continua a ripetere e restringere la quantità di turno fino a quando non sono di fronte a te, quindi in avanti. Ricorda che non giri di tanto (reimposta l'angolo) una volta che sono davanti perché non si sposteranno "fuori dalla portata" così velocemente.

Sono stato davvero sorpreso da quanto bene funzioni effettivamente questo algoritmo (lo abbiamo usato per i giocattoli di inseguimento automatizzati e abbiamo dovuto rallentarlo / smorzarlo perché avrebbe battuto / catturato un robot controllato dall'uomo troppo facilmente).

Entrambi i sensori sono disponibili presso Pololu (nessuna affiliazione):

Rilevatore di portata sonar rilevatore a infrarossi passivi


Puoi pubblicare uno pseudo codice o ulteriori dettagli su come l'utilizzo di un sensore PIR e un sonar sarebbe in grado di rilevare e localizzare una persona?
Yahma,

Quale sarebbe la gamma su questa soluzione? Potrebbe essere adattato per rintracciare le persone fino a 300 piedi di distanza? E realizzato per ospitare un campo visivo di 180 gradi senza parti mobili? Grazie per questo suggerimento!
Crashalot,

La scheda tecnica PIR non elenca un intervallo ( pololu.com/file/0J250/SE-10.pdf ), ma in base alle dimensioni del sensore, sembra che l'intervallo sia limitato e certamente non qualcosa che possa rilevare umani movimento a 100-300 piedi di distanza?
Crashalot,

Funzionava bene per le piccole distanze, forse 2-3 metri (6-9 piedi). Vorrei anche pensare che questo algoritmo non si ridimensionerebbe bene a distanze maggiori, ad esempio perché dipende dal fatto che anche un grande "errore" o fluttuazione possono essere corretti prima che il robot o il soggetto siano troppo separati.
profMamba,

1

Un tipo di sensore più recente che può essere utilizzato sono gli array di temperatura basati su MEMS di Omron (gamma D6T) o Excelitas (DigiPile). Questi, a differenza degli elementi PIR, misurano le temperature assolute e quindi consentono di distinguere tra temperature di fondo e di primo piano e rilevare il movimento e le presenze statiche delle fonti di temperatura.


Sai se questi sensori sono in grado di localizzare le persone fino a 300 piedi di distanza?
Crashalot,

Non penso che funzionerebbe. Direi massimo 5-10m. La risoluzione è piuttosto bassa, quindi una persona a questa distanza è solo un piccolo punto all'interno di un pixel.
kjyv,

Grazie per la risposta! Al di là della visione artificiale ad alta risoluzione, c'è qualcosa che funzioni per 300 piedi? Dato che il CV è così costoso dal punto di vista computazionale, potresti ridurre i costi di calcolo associando il CV ad altri sensori come PIR (o termico) per tracciare le persone a 100-300 piedi di distanza?
Crashalot,

0

un sensore capacitivo potrebbe funzionare, è davvero economico da realizzare, solo un foglio di alluminio e alcune resistenze, può rilevare la carne ma non sono sicuro che se non rilevo altro che carne, puoi usare 3 per triangolare


Eh? Quale sarebbe la gamma su questo? Millimetri?
RoboKaren,

0

Non posso dire se sia più semplice, ma è possibile che tu possa usare la libreria di ingrandimento video di Eulerian per rilevare il polso di una persona.

In tal caso, dovresti cercare una fluttuazione nel video che corrisponda all'intervallo previsto di impulsi umani. Avresti anche bisogno di un'immagine chiara di una parte del corpo che mostrava l'impulso visibile.

C'è stato anche qualche lavoro ( esempio 1 , esempio 2 ) che esplora il rilevamento di volti basato sull'hardware. Le fotocamere digitali di alcuni anni fa avevano questa capacità, che era essenzialmente una rete neurale altamente ottimizzata progettata per dire "questo quadrato contiene un volto o no" ... quindi basta scorrere su una serie di quadrati predefiniti nell'immagine catturata.


Aww, mi hai suggerito la stessa cosa che ho fatto mentre scrivevo la mia! Hai visto anche il film Screamers (1995)? = P
jzx,

Ho visto il trailer, ma mai il film ... bello sapere che potrei essere su qualcosa. Ma cosa sta facendo Yahma? :)
Ian,

0

Ho provato a utilizzare PIR ma ha problemi di gestione e ritardi. Non è una scelta efficiente per il rilevamento umano essere onesti. È possibile utilizzare la tecnica di rilevamento capacitivo in quanto è il modo più economico e più semplice per il rilevamento umano (una scelta intelligente) ed è anche meno complesso. Puoi creare un sensore per te stesso a costi molto bassi ed è ottimo per piccoli progetti. Ne ho usato uno nel mio progetto "Human Detection Robot". Puoi guardare il mio video su: rilevamento umano basato su capacità


0

Una soluzione non bare metal che probabilmente diventerà sempre più popolare nei prossimi anni sarebbe quella di scaricare il tuo pesante compito di elaborazione dei dati (ad esempio, riconoscere un essere umano in un'immagine) su un servizio Cloud. Ciò presuppone che il tuo dispositivo sia connesso a Internet. Ecco un esempio con Raspberry Pi e l'API di Google Cloud Vision: https://www.dexterindustries.com/howto/use-google-cloud-vision-on-the-raspberry-pi/ . Tieni presente che richiede un abbonamento a Google Cloud dopo un periodo di prova, ma alcune altre API di cloud vision (Amazon, Microsoft Azure, ...?) Potrebbero persino offrire i loro servizi gratuitamente se invii meno di N richieste al mese ai loro server .

Un'altra soluzione per l'elaborazione di dati pesanti su piccole piattaforme sarebbe quella di scaricare il lavoro su un dispositivo simile a una chiavetta USB sul tuo robot con un'unità processore dedicata per l'esecuzione di modelli di apprendimento automatico già addestrati (ad esempio 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 ). Funziona anche offline. Sono ancora un po 'costosi per i progetti di hobby, ma mi aspetto che il loro costo scenderà come tutto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.