Chciałbym wiedzieć, czy ktoś z powodzeniem wykrył ssaka o ciepłym ciele (tj. Człowieka) przy użyciu standardowych, niedrogich czujników?
Idealnie chciałbym użyć niedrogiego czujnika lub kombinacji czujników do wykrycia osoby w pokoju i zlokalizowania tej osoby. Chciałbym, aby robot wszedł do pokoju, wykrył obecność człowieka (ów), a następnie podszedł do wykrytego człowieka. Dokładność nie musi wynosić 100%, ponieważ bardziej istotny jest koszt. Chciałbym, aby wymagania obliczeniowe takiego czujnika były takie, że może on działać na Arduino, chociaż jeśli to niemożliwe, chętnie skorzystam z czegoś o większej sile rażenia, takiego jak Raspberry Pi lub BeagleBone Black. Mam kilka myśli; jednak żaden z nich nie jest idealny:
- Czujnik PIR - wykrywa ruch w dużym polu widzenia (tj. Zwykle 120 stopni lub więcej). Może być najbliżej wykrywacza „ludzkiego”, o którym wiem; wymaga jednak ruchu i lokalizacji / triangulacji w miejscu, w którym dana osoba byłaby bardzo trudna (niemożliwa?) przy tak dużym polu widzenia.
- Ultradźwięki - Może wykrywać obiekty z dobrą precyzją. Ma znacznie węższe pole widzenia; nie jest jednak w stanie odróżnić statycznego nieożywionego obiektu od człowieka.
- Detektory IR - (tj. Czujniki o ostrym zasięgu) Mogą ponownie wykrywać obiekty z wielką precyzją, bardzo wąskie pole widzenia; jednak znów nie jest w stanie odróżnić obiektów.
- Kamera internetowa + OpenCV - Możliwe jest użycie funkcji wykrywania twarzy do wykrywania ludzi w pokoju. To może być najlepsza opcja; jednak OpenCV jest drogi obliczeniowo i wymagałby znacznie więcej niż arduino. Nawet na Raspberry Pi może być powolny.
- Kinect - Dzięki możliwościom wykrywania funkcji Kinect stosunkowo łatwo byłoby zidentyfikować ludzi w danym obszarze; jednak Kinect jest zbyt drogi i nie uważałbym go za „tanie” rozwiązanie.
Być może ktoś zdaje sobie sprawę z niedrogiego „detektora ciepła” dostrojonego do ciepła ciała i / lub odniósł sukces z jakąś kombinacją (# 1-4) powyżej i chciałby podzielić się swoimi wynikami?
Odpowiedzi:
Połączenie pasywnego detektora podczerwieni (PIR) i sonaru dalmierza (SRF) powinno załatwić sprawę.
To, co wcześniej działało dla mnie dobrze (nie znajdowanie ludzi, ale bardzo podobne), to wskazanie dwóch czujników PIR po lewej i prawej stronie, tak aby miały trochę zachodzenia na siebie na środku.
Następnie możesz dowiedzieć się, czy człowiek znajduje się po lewej, prawej lub z przodu (gdy oba są włączone). Zasadniczo układasz to na wierzchu SRF, który pokaże ci zasięg itp. Jest trochę brudny i musisz poczynić pewne założenia, ale działa dobrze ze względu na swoją prostotę.
Pseudo-kod dla 2 czujników PIR może być tak prosty, jak:
Chodzi o to, że jeśli widzisz coś w tym obszarze, często obracasz się w jedną stronę (60 stopni). Jeśli nie są przed tobą po turze, odwróć się nieco w stronę, w której je widzisz. Powtarzaj i zawężaj liczbę tur, aż znajdą się przed tobą, a następnie do przodu. Pamiętaj, że nie obracasz zbyt wiele (resetujesz kąt), gdy znajdują się z przodu, ponieważ nie poruszą się tak szybko poza zasięgiem.
Byłem naprawdę zaskoczony, jak dobrze ten algorytm faktycznie działa (użyliśmy go do automatycznych zabawek pościgowych i musiałem go spowolnić / ogłuszyć, ponieważ zbyt łatwo biłby / łapał robota sterowanego przez człowieka).
Oba czujniki są dostępne w Pololu (bez powiązania):
Detektor pasywnego detektora podczerwieni
Sonar
źródło
Nowszym typem czujnika, który można zastosować, są tablice temperatur oparte na MEMS firmy Omron (zakres D6T) lub Excelitas (DigiPile). Te, w przeciwieństwie do elementów PIR, mierzą temperatury bezwzględne, a tym samym pozwalają na rozróżnienie temperatur tła i pierwszego planu oraz wykrywają ruch i obecność źródeł statycznych źródeł temperatury.
źródło
czujnik pojemnościowy może działać, jest naprawdę tani w produkcji, tylko folia aluminiowa i kilka rezystorów, może wykrywać ciało, ale nie jestem pewien, czy nie wykrywam niczego poza ciałem, możesz użyć 3 do triangulacji
źródło
Nie mogę powiedzieć, czy jest to najłatwiejsze, ale możliwe jest, że można użyć biblioteki powiększania wideo Eulerian do wykrycia pulsu osoby.
W takim przypadku szukałbyś wahań w filmie, które pasowałyby do oczekiwanego zakresu ludzkich pulsów. Potrzebny byłby również wyraźny obraz części ciała, która wykazywała widoczny puls.
Było też trochę pracy ( przykład 1 , przykład 2 ) nad sprzętowym wykrywaniem twarzy. Cyfrowe aparaty fotograficzne sprzed kilku lat miały tę możliwość, która była zasadniczo wysoce zoptymalizowaną siecią neuronową zaprojektowaną tak, aby powiedzieć „czy ten kwadrat zawiera twarz, czy nie”… to po prostu iterujesz po zestawie predefiniowanych kwadratów na przechwyconym obrazie.
źródło
Próbowałem użyć PIR, ale ma problemy z obsługą i opóźnieniami. Szczerze mówiąc, wykrywanie ludzi nie jest skutecznym wyborem. Możesz użyć techniki wykrywania pojemnościowego, ponieważ jest to najtańszy i najłatwiejszy sposób wykrywania ludzi (mądry wybór), a także mniej skomplikowany. Możesz zrobić czujnik dla siebie przy bardzo niskich kosztach i jest on odpowiedni dla małych projektów. Użyłem jednego z nich w moim projekcie „Human Detection Robot”. Możesz obejrzeć moje wideo na: Wykrywanie ludzi na podstawie pojemności
źródło
Rozwiązaniem nie będącym metalem, które prawdopodobnie stanie się coraz bardziej popularne w ciągu najbliższych kilku lat, byłoby przeniesienie ciężkiego zadania przetwarzania danych (np. Rozpoznanie człowieka na obrazie) do usługi w chmurze. Zakłada się, że Twoje urządzenie jest podłączone do Internetu. Oto przykład z Raspberry Pi i API Google Cloud Vision: https://www.dexterindustries.com/howto/use-google-cloud-vision-on-the-raspberry-pi/ . Pamiętaj, że wymaga to subskrypcji Google Cloud po upływie okresu próbnego, ale niektóre inne interfejsy API do przetwarzania w chmurze (Amazon, Microsoft Azure, ...?) Mogą nawet oferować swoje usługi za darmo, jeśli prześlesz mniej niż N żądań na ich serwery miesięcznie .
Jeszcze innym rozwiązaniem do intensywnego przetwarzania danych na małych platformach byłoby odciążenie robota do urządzenia typu thumbdrive w twoim robocie z dedykowanym procesorem do obsługi już wyszkolonych modeli uczenia maszynowego (np. Movidius Neural Compute Stick z Raspberry PI: https : //medium.com/deep-learning-turkey/a-brief-guide-to-intel-movidius-neural-compute-stick-with-raspberry-pi-3-f60bf7683d40 ). Działa to również offline. Nadal są trochę drogie w przypadku projektów hobbystycznych, ale spodziewam się, że ich koszt spadnie jak wszystko.
źródło