Jaki jest najtańszy / najłatwiejszy sposób na wykrycie osoby?

15

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:

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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?

Jahma
źródło
Czy ogranicza się to do ludzi, czy też powinien rozpoznać pana Eda?
ott--
Każdy ssak o mocnym ciele. Będzie używany w domu, więc Eda nie powinno tam być; gdyby jednak tak było, zostałby wykryty. =)
Yahma
Doprowadzono mnie do zrozumienia (kiedy szukałem czegoś podobnego), że Kinect nie jest tak drogi; jednak cierpi z powodu wymagania minimalnej odległości do prawidłowego działania. Wciąż jednak może to zadziałać i jestem pewien, że jest na to mnóstwo kodu.
Galahad II,
Z jakim rozwiązaniem poszedłeś? Czy zdarzyło Ci się znaleźć coś o większym zasięgu?
Crashalot,
Właściwie to mam pytanie. Czy możemy wykryć ludzkie tętno za pomocą czujnika podczerwieni w pinach analogowych Audrino? jeśli tak to jak? proszę o pomoc
sapana

Odpowiedzi:

7

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:

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

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

profMamba
źródło
Czy możesz opublikować pseudo kod lub dalsze szczegóły dotyczące tego, w jaki sposób czujnik PIR i sonar byłyby w stanie wykryć i zlokalizować osobę?
Yahma
Jaki byłby zasięg tego rozwiązania? Czy można go dostosować do śledzenia osób w odległości do 300 stóp? I przystosowany do pola widzenia 180 stopni bez ruchomych części? Dzięki za tę sugestię!
Crashalot,
Karta danych PIR nie zawiera zakresu ( pololu.com/file/0J250/SE-10.pdf ), ale w oparciu o rozmiar czujnika wydaje się, że zasięg byłby ograniczony, a na pewno nie coś, co może wykryć człowieka ruch w odległości 100-300 stóp?
Crashalot,
Działa to dobrze na niewielkich odległościach, może 2-3 metrów (6-9 stóp). Pomyślałbym również, że ten algorytm nie skalowałby się dobrze na większe odległości, np. Ponieważ tak naprawdę zależy to od faktu, że nawet duży „błąd” lub fluktuacja może zostać skorygowany, zanim robot lub obiekt zbyt się odseparują.
profMamba,
1

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.

kjyv
źródło
Czy wiesz, czy te czujniki mogłyby śledzić ludzi w odległości do 300 stóp?
Crashalot,
Nie sądzę, żeby to działało. Powiedziałbym, że maksymalnie 5-10 m. Rozdzielczość jest dość niska, więc osoba w tej odległości jest tylko małą kropką w obrębie jednego piksela.
kjyv
Dziękuję za odpowiedź! Czy poza obrazem komputerowym w wysokiej rozdzielczości jest coś, co działałoby na 300 stóp? Ponieważ CV jest tak drogie obliczeniowo, czy możesz zmniejszyć koszty obliczeniowe, łącząc CV z innymi czujnikami, takimi jak PIR (lub termiczne), aby śledzić ludzi w odległości 100-300 stóp?
Crashalot,
0

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

użytkownik1477
źródło
Co? Jaki byłby na to zasięg? Milimetry?
RoboKaren,
0

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.

Ian
źródło
Aww, zasugerowałeś to samo, co zrobiłem, kiedy pisałem moje! Czy widziałeś też film Screamers (1995)? = P
jzx
Widziałem zwiastun, ale nigdy nie film ... dobrze wiedzieć, że coś mi się podoba. Ale co planuje Jahma? :)
Ian
0

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

Muhammad Yamman
źródło
0

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.

al-dev
źródło