Ich möchte wissen, ob jemand erfolgreich einen Säuger mit warmem Körper (dh einen Menschen) mit handelsüblichen, kostengünstigen Sensoren entdeckt hat.
Idealerweise möchte ich einen kostengünstigen Sensor oder eine Kombination von Sensoren verwenden, um eine Person in einem Raum zu erkennen und diese Person zu lokalisieren. Ich möchte, dass der Roboter einen Raum betritt, erkennt, ob ein oder mehrere Menschen anwesend sind, und sich dann zu dem erkannten Menschen bewegt. Die Genauigkeit muss nicht 100% betragen, da die Kosten eine größere Rolle spielen. Ich möchte, dass die Rechenanforderungen für einen solchen Sensor so sind, dass er auf einem Arduino ausgeführt werden kann. Wenn dies jedoch nicht möglich ist, wäre ich bereit, etwas mit mehr Pferdestärke zu verwenden, z. B. einen Raspberry Pi oder einen BeagleBone Black. Ich habe ein paar Gedanken; Keiner von ihnen ist jedoch ideal:
- PIR-Sensor - Kann Bewegungen innerhalb eines großen Sichtfelds (dh normalerweise 120 Grad oder mehr) erfassen. Könnte die nächste Sache zu einem "menschlichen" Detektor sein, der mir bewusst ist; es erfordert jedoch Bewegung und das Lokalisieren / Triangulieren, wo sich eine Person befindet, was mit einem so großen Sichtfeld sehr schwierig (unmöglich?) wäre.
- Ultraschall - Kann Objekte mit guter Präzision erfassen. Hat ein viel engeres Sichtfeld; ist jedoch nicht in der Lage, zwischen einem statischen nicht lebenden Objekt und einem Menschen zu unterscheiden.
- IR-Detektoren - (dh Sensoren für scharfe Entfernungen) Können wieder Objekte mit hoher Präzision und sehr engem Sichtfeld erfassen. Es ist jedoch wieder nicht möglich, Objekte zu unterscheiden.
- Webcam + OpenCV - Verwenden Sie möglicherweise die Gesichtserkennung, um Personen in einem Raum zu erkennen. Dies ist möglicherweise die beste Option. OpenCV ist jedoch rechenintensiv und erfordert viel mehr als ein Arduino. Sogar auf einem Raspberry Pi kann es langsam sein.
- Kinect - Mit den Funktionen zur Funktionserkennung von Kinect ist es relativ einfach, Menschen in einem Gebiet zu identifizieren. Allerdings ist der Kinect zu teuer und ich würde ihn nicht als "billige" Lösung betrachten.
Vielleicht ist jemandem ein kostengünstiger "Wärmemelder" bekannt, der auf Körperwärme abgestimmt ist, und / oder er hat mit einer der oben genannten Kombinationen von (Nr. 1-4) Erfolg gehabt und möchte seine Ergebnisse mitteilen?
Antworten:
Eine Kombination aus einem Passiv-Infrarot-Detektor (PIR) und einem Sonar-Entfernungsmesser (SRF) sollte dies tun.
Was bisher für mich gut funktioniert hat (Menschen nicht zu finden, aber sehr ähnlich), war, dass zwei PIRs auf der linken und rechten Seite zugespitzt waren, sodass sie sich in der Mitte ein wenig überlappten.
Sie können dann herausfinden, ob sich der Mensch links, rechts oder vorne befindet (wenn beide eingeschaltet sind). Sie stapeln dies dann im Grunde genommen auf die SRF, die Ihnen den Bereich usw. anzeigt. Es ist ein bisschen schmutzig und Sie müssen einige Annahmen treffen, aber es funktioniert gut für seine Einfachheit.
Der Pseudocode für die 2 PIRs könnte so einfach sein wie:
Die Idee ist, dass Sie sich viel zur Seite drehen (60 Grad), wenn Sie etwas in diesem Bereich sehen. Wenn sie sich nach dem Abbiegen nicht vor Ihnen befinden, drehen Sie sich etwas weniger zu der Seite, auf der Sie sie sehen. Wiederholen und verringern Sie die Anzahl der Runden, bis sie vor Ihnen liegen, und gehen Sie dann weiter. Denken Sie daran, dass Sie nicht so viel drehen (den Winkel neu einstellen), wenn sie vorne sind, da sich die Kamera nicht so schnell aus dem Spielfeld herausbewegt.
Ich war wirklich erstaunt, wie gut dieser Algorithmus tatsächlich funktioniert (wir haben ihn für automatisierte Verfolgungsjagden verwendet und mussten ihn verlangsamen / dummen, weil er einen von Menschen kontrollierten Roboter zu leicht schlagen / fangen würde).
Beide Sensoren sind bei Pololu erhältlich (keine Zugehörigkeit):
Passiver Infrarotdetektor
Sonar-Entfernungsmesser
quelle
Ein neuerer Sensortyp, der verwendet werden kann, sind MEMS-basierte Temperatur-Arrays von Omron (D6T-Serie) oder Excelitas (DigiPile). Diese messen im Gegensatz zu PIR-Elementen absolute Temperaturen und ermöglichen so die Unterscheidung zwischen Hintergrund- und Vordergrundtemperaturen sowie die Erkennung von Bewegungen und statischen Anzeichen von Temperaturquellen.
quelle
Ein kapazitiver Sensor könnte funktionieren, es ist sehr billig, nur Aluminiumfolie und ein paar Widerstände herzustellen. Er kann Fleisch erkennen, aber ich bin mir nicht sicher, ob ich nur Fleisch erkennen kann. Sie können 3 zum Triangulieren verwenden
quelle
Ich kann nicht sagen, ob dies am einfachsten ist, aber möglicherweise können Sie die Eulerian Video Magnification-Bibliothek verwenden , um den Puls einer Person zu erfassen.
In diesem Fall würden Sie nach einer Schwankung im Video suchen, die dem erwarteten Bereich menschlicher Impulse entspricht. Sie benötigen außerdem ein klares Bild eines Körperteils, das den sichtbaren Puls aufweist.
Es gab auch einige Arbeiten ( Beispiel 1 , Beispiel 2 ) zur hardwarebasierten Gesichtserkennung. Digitalkameras von vor ein paar Jahren verfügten über diese Funktion, die im Wesentlichen ein hochoptimiertes neuronales Netzwerk war, mit dem Ziel "Enthält dieses Quadrat ein Gesicht oder nicht" ... dann iterieren Sie einfach über eine Reihe vordefinierter Quadrate im aufgenommenen Bild.
quelle
Ich habe versucht, PIR zu verwenden, aber es hat Probleme mit der Handhabung und Verzögerungen. Um ehrlich zu sein, ist es keine effiziente Wahl für die Erkennung von Menschen. Sie können die kapazitive Sensortechnik verwenden, da sie die kostengünstigste und einfachste Methode zur Erkennung von Menschen darstellt (eine clevere Wahl) und auch weniger komplex ist. Sie können einen Sensor zu sehr geringen Kosten für sich selbst herstellen und er eignet sich für kleine Projekte. Ich habe einen in meinem "Human Detection Robot" -Projekt verwendet. Sie können mein Video unter folgender Adresse ansehen: Kapazitive Erkennung von Menschen
quelle
Eine Nicht-Bare-Metal-Lösung, die in den nächsten Jahren wahrscheinlich immer beliebter wird, ist die Verlagerung Ihrer umfangreichen Datenverarbeitungsaufgabe (z. B. Erkennen eines Menschen in einem Bild) in einen Cloud-Dienst. Dies setzt voraus, dass Ihr Gerät mit dem Internet verbunden ist. Hier ein Beispiel mit dem Raspberry Pi und der Google Cloud Vision-API: https://www.dexterindustries.com/howto/use-google-cloud-vision-on-the-raspberry-pi/ . Beachten Sie, dass ein Abonnement erforderlich ist, damit Google Cloud über einen Testzeitraum hinaus verwendet werden kann. Einige andere Cloud Vision-APIs (Amazon, Microsoft Azure, ...?) Bieten ihre Dienste möglicherweise sogar kostenlos an, wenn Sie weniger als N Anfragen pro Monat an ihre Server senden .
Eine weitere Lösung für die Verarbeitung schwerer Daten auf kleinen Plattformen besteht darin, die Arbeit auf ein thumbdrive-ähnliches Gerät Ihres Roboters mit einer dedizierten Prozessoreinheit zum Ausführen bereits trainierter maschineller Lernmodelle (z. B. Movidius Neural Compute Stick mit dem Raspberry PI: https : //medium.com/deep-learning-turkey/a-brief-guide-to-intel-movidius-neural-compute-stick-with-raspberry-pi-3-f60bf7683d40 ). Dies funktioniert auch offline. Sie sind immer noch ein bisschen teuer für Hobbyprojekte, aber ich gehe davon aus, dass ihre Kosten wie alles sinken werden.
quelle