Какой самый дешевый / самый простой способ обнаружения человека?


15

Я хотел бы знать, имел ли кто-нибудь успех при обнаружении млекопитающего с теплым телом (т.е. человека), используя стандартные недорогие датчики?

В идеале я хотел бы использовать недорогой датчик или комбинацию датчиков, чтобы обнаружить человека в комнате и локализовать этого человека. Я хотел бы, чтобы робот вошел в комнату, обнаружил, присутствует ли человек (и) и затем перешел к обнаруженному человеку. Точность не должна быть 100%, так как стоимость является более важным фактором. Я бы хотел, чтобы вычислительные требования такого датчика были такими, чтобы он мог работать на Arduino, хотя, если это невозможно, я бы хотел использовать что-то с большей мощностью, например Raspberry Pi или BeagleBone Black. У меня есть несколько мыслей; однако ни один из них не идеален:

  1. ИК-датчик - может обнаружить движение в большом поле зрения (то есть обычно 120 градусов или более). Может быть ближе всего к «человеческому» детектору, о котором я знаю; однако, это требует движения и локализации / триангуляции, где человек был бы очень трудным (невозможным?) с таким большим полем зрения.
  2. Ультразвук - может обнаруживать объекты с хорошей точностью. Имеет гораздо более узкое поле зрения; однако, не в состоянии провести различие между статическим неживым объектом и человеком.
  3. ИК-детекторы - (т. Е. Датчики острого диапазона) могут снова обнаруживать объекты с большой точностью, очень узким полем зрения; однако, это снова неспособно дифференцировать объекты.
  4. Веб-камера + OpenCV - возможно, используйте распознавание лиц для обнаружения людей в комнате. Это может быть лучшим вариантом; однако OpenCV требует больших вычислительных ресурсов и требует намного больше, чем просто Arduino для запуска. Даже на Raspberry Pi это может быть медленно.
  5. Kinect - Используя возможности обнаружения функций Kinect, было бы относительно легко идентифицировать людей в области; однако Kinect слишком дорогой, и я бы не стал считать его «дешевым» решением.

Возможно, кто-то знает о недорогом «детекторе тепла», настроенном на тепло тела и / или имел успех с какой-то комбинацией (# 1-4) выше, и хотел бы поделиться своими результатами?


Это ограничено людьми или должно узнавать мистера Эда тоже?
ot--

Любое млекопитающее с теплым телом. Он будет использоваться в помещении, поэтому мистер Эд не должен быть там; однако, если бы он был, он был бы обнаружен. =)
Яхма

Меня заставили понять (когда я искал нечто подобное), что Kinect на самом деле не так уж и дорог; однако он страдает от необходимости минимального расстояния для правильной работы. Тем не менее, для вашего требования это может сработать, и я уверен, что есть много кода для этого.
Галахад II

Какое решение вы выбрали? Вы нашли что-нибудь с большим диапазоном?
Crashalot

На самом деле у меня есть вопрос. Можем ли мы определить частоту пульса человека с помощью ИК-датчика в аналоговых выводах Audrino? если так то как? пожалуйста, помогите мне
Сапана

Ответы:


7

Комбинация пассивного инфракрасного детектора (PIR) и эхолота (SRF) должна помочь.

Раньше для меня хорошо работало (не находя людей, но очень похожих), чтобы два PIR были направлены слева и справа, чтобы они немного перекрывались посередине.
Затем вы можете выяснить, находится ли человек слева, справа или впереди (когда оба включены). Затем вы в основном складываете это поверх SRF, который скажет вам диапазон и т. Д. Это немного грязно, и вы должны сделать некоторые предположения, но это хорошо работает для простоты.

Псевдокод для 2-х PIR может быть очень простым:

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

Идея состоит в том, что вы сильно поворачиваетесь в одну сторону (60 градусов), если видите что-то в этой области. Если они не находятся перед вами после поворота, поверните немного меньше в ту сторону, в которой вы их видите. Продолжайте повторять и сужать количество поворотов, пока они не окажутся перед вами, а затем вперед. Помните, что вы не поворачиваете так сильно (сбрасываете угол), как только они оказываются впереди, потому что они не будут двигаться «вне поля» так быстро.

Я был искренне удивлен тем, насколько хорошо этот алгоритм работает на самом деле (мы использовали его для автоматизированных игрушек с погонями, и нам пришлось его замедлять / тупить, потому что он слишком легко бил / ловил робота, контролируемого человеком).

Оба датчика доступны от Pololu (без принадлежности):

Пассивный инфракрасный детектор
Sonar Range Finder


Можете ли вы опубликовать какой-нибудь псевдокод или более подробную информацию о том, как использование ИК-датчика и сонара позволит обнаружить и локализовать человека?
Яхма

Каков будет диапазон этого решения? Может ли он быть адаптирован для отслеживания людей на расстоянии до 300 футов? И сделаны ли для размещения поля зрения 180 градусов без движущихся частей? Спасибо за это предложение!
Crashalot

В спецификации PIR не указан диапазон ( pololu.com/file/0J250/SE-10.pdf ), но, исходя из размера датчика, кажется, что диапазон будет ограниченным, и, конечно, это не то, что может обнаружить человека движение 100-300 футов?
Crashalot

Это хорошо работало на небольших расстояниях, может быть, 2-3 метра (6-9 футов). Я бы также подумал, что этот алгоритм не будет хорошо масштабироваться на большие расстояния, например, поскольку он действительно зависит от того факта, что даже большую «ошибку» или флуктуацию можно исправить до того, как робот или объект будут слишком разделены.
profMamba

1

Более поздний тип датчика, который можно использовать, - это температурные массивы на основе MEMS от Omron (диапазон D6T) или Excelitas (DigiPile). Они, в отличие от элементов PIR, измеряют абсолютные температуры и, таким образом, позволяют различать фоновую и переднюю температуры и обнаруживают движение и статическое присутствие источников температуры.


Знаете ли вы, могут ли эти датчики отслеживать людей на расстоянии до 300 футов?
Crashalot

Я не думаю, что это сработает. Я бы сказал максимум 5-10м. Разрешение довольно низкое, поэтому человек на таком расстоянии - это просто маленькая точка в одном пикселе.
Кив

Спасибо за ответ! Помимо компьютерного зрения с высоким разрешением, есть ли что-нибудь, что будет работать на 300 футов? Поскольку CV настолько вычислительно дорог, вы могли бы сократить вычислительные затраты, связывая CV с другими датчиками, такими как PIR (или тепловые), чтобы отслеживать людей на расстоянии 100-300 футов?
Crashalot

0

емкостный датчик может работать, его действительно дешево изготовить, только алюминиевая фольга и несколько резисторов, он может обнаружить плоть, но я не уверен, что если он не обнаруживает ничего, кроме плоти, вы можете использовать 3 для триангуляции


А? Каков будет диапазон на этом? Миллиметры?
RoboKaren

0

Я не могу сказать, насколько это просто, но, возможно, вы могли бы использовать библиотеку Eulerian Video Magnification для определения пульса человека.

В этом случае вы будете искать колебания в видео, которые соответствуют ожидаемому диапазону человеческих импульсов. Вам также понадобится четкое изображение части тела, которая демонстрирует видимый пульс.

Была также проделана определенная работа ( пример 1 , пример 2 ), посвященная аппаратному распознаванию лиц. У цифровых камер несколько лет назад была такая возможность, которая была по сути высоко оптимизированной нейронной сетью, разработанной для того, чтобы сказать «содержит ли этот квадрат лицо или нет» ... тогда вы просто перебираете набор предопределенных квадратов в захваченном изображении.


Оу, вы предложили то же самое, что и я, когда писал свои! Вы тоже видели фильм Screamers (1995)? = P
jzx

Я видел трейлер, но никогда не смотрел фильм ... приятно знать, что я могу что-то предпринять. Но чем занимается Яхма? :)
Ян

0

Я пытался использовать PIR, но у него есть проблемы с обработкой и задержками. Честно говоря, это не эффективный выбор для обнаружения человеком. Вы можете использовать метод емкостного зондирования, поскольку это самый дешевый и простой способ обнаружения человека (разумный выбор), и он также менее сложен. Вы можете сделать датчик для себя по очень низкой цене, и это хорошо для небольших проектов. Я использовал один в своем проекте «Робот обнаружения человека». Вы можете посмотреть мое видео по адресу: Емкостное обнаружение человека


0

Решением, отличным от «голого металла», которое, вероятно, станет все более популярным в течение следующих нескольких лет, было бы перенести задачу обработки тяжелых данных (например, распознать человека на изображении) в облачную службу. Это при условии, что ваше устройство подключено к Интернету. Вот пример с Raspberry Pi и Google Cloud Vision API: https://www.dexterindustries.com/howto/use-google-cloud-vision-on-the-raspberry-pi/ . Обратите внимание, что для этого требуется подписка на Google Cloud после пробного периода, но некоторые другие API-интерфейсы облачного видения (Amazon, Microsoft Azure, ...?) Могут даже предлагать свои услуги бесплатно, если вы отправляете на их серверы менее N запросов в месяц. ,

Еще одним решением для обработки тяжелых данных на небольших платформах было бы перенести работу на устройство, напоминающее флэш-накопитель, на вашем роботе с выделенным процессором для запуска уже обученных моделей машинного обучения (например, Movidius Neural Compute Stick с Raspberry PI: https : //medium.com/deep-learning-turkey/a-brief-guide-to-intel-movidius-neural-compute-stick-with-raspberry-pi-3-f60bf7683d40 ). Это работает в автономном режиме тоже. Они все еще немного дороги для хобби проектов, но я ожидаю, что их стоимость снизится, как и все.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.