Я хотел бы знать, имел ли кто-нибудь успех при обнаружении млекопитающего с теплым телом (т.е. человека), используя стандартные недорогие датчики?
В идеале я хотел бы использовать недорогой датчик или комбинацию датчиков, чтобы обнаружить человека в комнате и локализовать этого человека. Я хотел бы, чтобы робот вошел в комнату, обнаружил, присутствует ли человек (и) и затем перешел к обнаруженному человеку. Точность не должна быть 100%, так как стоимость является более важным фактором. Я бы хотел, чтобы вычислительные требования такого датчика были такими, чтобы он мог работать на Arduino, хотя, если это невозможно, я бы хотел использовать что-то с большей мощностью, например Raspberry Pi или BeagleBone Black. У меня есть несколько мыслей; однако ни один из них не идеален:
- ИК-датчик - может обнаружить движение в большом поле зрения (то есть обычно 120 градусов или более). Может быть ближе всего к «человеческому» детектору, о котором я знаю; однако, это требует движения и локализации / триангуляции, где человек был бы очень трудным (невозможным?) с таким большим полем зрения.
- Ультразвук - может обнаруживать объекты с хорошей точностью. Имеет гораздо более узкое поле зрения; однако, не в состоянии провести различие между статическим неживым объектом и человеком.
- ИК-детекторы - (т. Е. Датчики острого диапазона) могут снова обнаруживать объекты с большой точностью, очень узким полем зрения; однако, это снова неспособно дифференцировать объекты.
- Веб-камера + OpenCV - возможно, используйте распознавание лиц для обнаружения людей в комнате. Это может быть лучшим вариантом; однако OpenCV требует больших вычислительных ресурсов и требует намного больше, чем просто Arduino для запуска. Даже на Raspberry Pi это может быть медленно.
- Kinect - Используя возможности обнаружения функций Kinect, было бы относительно легко идентифицировать людей в области; однако Kinect слишком дорогой, и я бы не стал считать его «дешевым» решением.
Возможно, кто-то знает о недорогом «детекторе тепла», настроенном на тепло тела и / или имел успех с какой-то комбинацией (# 1-4) выше, и хотел бы поделиться своими результатами?
Ответы:
Комбинация пассивного инфракрасного детектора (PIR) и эхолота (SRF) должна помочь.
Раньше для меня хорошо работало (не находя людей, но очень похожих), чтобы два PIR были направлены слева и справа, чтобы они немного перекрывались посередине.
Затем вы можете выяснить, находится ли человек слева, справа или впереди (когда оба включены). Затем вы в основном складываете это поверх SRF, который скажет вам диапазон и т. Д. Это немного грязно, и вы должны сделать некоторые предположения, но это хорошо работает для простоты.
Псевдокод для 2-х PIR может быть очень простым:
Идея состоит в том, что вы сильно поворачиваетесь в одну сторону (60 градусов), если видите что-то в этой области. Если они не находятся перед вами после поворота, поверните немного меньше в ту сторону, в которой вы их видите. Продолжайте повторять и сужать количество поворотов, пока они не окажутся перед вами, а затем вперед. Помните, что вы не поворачиваете так сильно (сбрасываете угол), как только они оказываются впереди, потому что они не будут двигаться «вне поля» так быстро.
Я был искренне удивлен тем, насколько хорошо этот алгоритм работает на самом деле (мы использовали его для автоматизированных игрушек с погонями, и нам пришлось его замедлять / тупить, потому что он слишком легко бил / ловил робота, контролируемого человеком).
Оба датчика доступны от Pololu (без принадлежности):
Пассивный инфракрасный детектор
Sonar Range Finder
источник
Более поздний тип датчика, который можно использовать, - это температурные массивы на основе MEMS от Omron (диапазон D6T) или Excelitas (DigiPile). Они, в отличие от элементов PIR, измеряют абсолютные температуры и, таким образом, позволяют различать фоновую и переднюю температуры и обнаруживают движение и статическое присутствие источников температуры.
источник
емкостный датчик может работать, его действительно дешево изготовить, только алюминиевая фольга и несколько резисторов, он может обнаружить плоть, но я не уверен, что если он не обнаруживает ничего, кроме плоти, вы можете использовать 3 для триангуляции
источник
Я не могу сказать, насколько это просто, но, возможно, вы могли бы использовать библиотеку Eulerian Video Magnification для определения пульса человека.
В этом случае вы будете искать колебания в видео, которые соответствуют ожидаемому диапазону человеческих импульсов. Вам также понадобится четкое изображение части тела, которая демонстрирует видимый пульс.
Была также проделана определенная работа ( пример 1 , пример 2 ), посвященная аппаратному распознаванию лиц. У цифровых камер несколько лет назад была такая возможность, которая была по сути высоко оптимизированной нейронной сетью, разработанной для того, чтобы сказать «содержит ли этот квадрат лицо или нет» ... тогда вы просто перебираете набор предопределенных квадратов в захваченном изображении.
источник
Я пытался использовать PIR, но у него есть проблемы с обработкой и задержками. Честно говоря, это не эффективный выбор для обнаружения человеком. Вы можете использовать метод емкостного зондирования, поскольку это самый дешевый и простой способ обнаружения человека (разумный выбор), и он также менее сложен. Вы можете сделать датчик для себя по очень низкой цене, и это хорошо для небольших проектов. Я использовал один в своем проекте «Робот обнаружения человека». Вы можете посмотреть мое видео по адресу: Емкостное обнаружение человека
источник
Решением, отличным от «голого металла», которое, вероятно, станет все более популярным в течение следующих нескольких лет, было бы перенести задачу обработки тяжелых данных (например, распознать человека на изображении) в облачную службу. Это при условии, что ваше устройство подключено к Интернету. Вот пример с 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 ). Это работает в автономном режиме тоже. Они все еще немного дороги для хобби проектов, но я ожидаю, что их стоимость снизится, как и все.
источник