Датчики захвата движения своими руками

Digitrode

цифровая электроника вычислительная техника встраиваемые системы

Motion capture в домашних условиях на основе ESP8266 и MPU6050

Технология захвата движения (motion capture) все чаще используется в анимации, кинематографе и робототехнике. Профессиональные системы захвата движения, которые используются, например, в Голливуде, достаточно дорогие и непросты в эксплуатации. Но благодаря развитию и упрощению технологий систему захвата движения можно сделать своими руками. При этом она будет дешевой, поскольку она основана на популярном недорогом WiFi модуле ESP8266 и датчике MPU6050, включающем в себя акселерометр и гироскоп.

Проект Bewegungsfelder позволяет самостоятельно создать такую систему захвата движения. Она состоит из нескольких автономных инерциальных модулей, в состав которых входит датчик MPU6050 для регистрации движений, модуль ESP8266 для передачи данных и аккумулятор для питания этого автономного узла. Модуль ESP8266 считывает информацию с инерциального датчика MPU6050 с помощью интерфейса I2C. Данные, полученные от узлов, отправляются по беспроводному каналу на центральный сервер захвата движения. Приложение на сервере преобразует входные данные в скелетную анимацию, они визуализируются в режиме реального времени, а также сохраняются в памяти для дальнейшего использования. Поскольку датчиковые узлы являются полностью автономными, их можно с легкостью применять в отношении практически любой скелетной топологии, то есть их можно надеть на человека, кошку, робота или другой объект, движение которого нужно зарегистрировать.

Каждый датчик передает кватернион, содержащий информацию о текущей ориентации узла, а также необработанные данные об ускорении и угловой скорости. Протокол связи достаточно простой, и его легко реализовать на других микросхемах (в том числе на смартфонах).

В серверное приложение проекта Bewegungsfelder уже включена поддержка определения типов скелета, а также имеется функция импорта/экспорта файлов BVH для использования полученных данных в популярных 3D редакторах, таких как Maya или Blender.

Программная часть проекта выпущена с открытым исходным кодом и распространяется по лицензии MIT License. Прошивка для модуля ESP8266 и код для серверного приложения находятся в открытом доступе, и их можно скачать с репозитория GitHub.

С помощью этого проекта можно собрать действительно дешевую систему захвата движения, поскольку благодаря дешевым компонентам цена одного инерциального узла не превышает $5.

Источник

Motion Capture – своими руками

Всем привет, меня зовут Серго, живу я в городе Чебяркуля, катаюсь на байке, работаю в небольшом продакшене.

Хочу рассказать о реализации motion-capture без участия студии и прочего дорогостоящего оборудования. Данный способ получения движений занимает какоето время, но если всё грамотно один раз настроить, чтобы можно было потом быстро использовать в какихнибудь проектах, эта техника найдёт своё применение.

Рассмотрим пример лицевой анимации персонажа, что нам понадобится:

  1. Камеры, — будет очень неплохо, если у Вас под рукой 2 или более камеры, но в этом примере мы обойдёмся одной, я использовал встроенную веб-камеру в ноутбук;
  2. Зеркала, 2шт – они и заменят нам недостающие камеры;
  3. Маркеры — можно использовать кусочки липкой ленты, но они бликует на свете и плохо отлипают от кожи или, же наоборот хорошо прилипают не туда куда надо (проверено автором :), будем использовать синий фломастер (маркер), синий потому, что его будет хорошо видно на коже;
  4. Свет, — важно осветить актёра равномерно со всех сторон съёмки, будем использовать настольную лампу;
  5. Актёр — я снимал сам-себя почти без посторонней помощи (;
  6. И наконец программа, без которой нам не обойтись — PFTrack

И так начнём!

Организовываем съёмочную площадку — установим камеру на небольшом расстоянии от лица актёра, далее установим зеркала так, чтобы в видоискателе было хорошо видно лицо актёра и его отражения, примерно вот так:

Вид сверху нашей студии будет выглядеть так:

Небольшое отступление, важно чтобы соблюдалось равенство: Z = A + B = X + Y, где Z — фокусное расстояние нашей одинокой камеры, а A+B и X+Y — фэйковые фокусные расстояния двух других камер соответственно. Но на самом деле равенство выполнятся не будет, Z будет всегда меньше, что приведёт к небольшой погрешности в виде немного углублённой формы лица в бедующем, но это нестрашно (: вот такая вот геометрия.

Читайте также:  Асфальтная дорога своими руками

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

Мотор!

Произносим заранее подготовленную речь, ну или что-нибудь в духе «Превед, я креведко!», стоп. Смотрим чего у нас там отснялось, если всё нормально, все точки отчетливо видны и не уходят за пределы видоискателя идём дальше.

Загружаем отснятый материал в какой-нибудь композер, я использовал After Effects, режим кадр на три части, и сохраняем каждую в отдельную секвенцию предварительно отцентровав и флипнувпо горизонтали видео из зеркал, можно ещё немного поиграть с шарпеном и цветом. Для удобства назовём их center.avi, left.avi и right.avi

Переходим в PFTrack.

PFTrack — позволяет реализовывать различные задачи по трэкингу и нахождению движения камеры, мы же в данном уроке коснёмся только задач связанных с motion capture.

Создаём новый проект File — New Project, смотрим, что тут есть интересного.

Интерфейс программы интуитивно понятен, я разобрался со всем с первого раза непребегая к help

Жмём кнопку Import Footage, в появившемся окне выбираем наши центральную камеру center.avi, жмём load. Видим, что имя камеры автоматически поменялось на center, далее заходим в свойства нашей камеры — Camera — Camera Parameters или «ctrl+p» на клавиатуре.

Меняем тип камеры на Motion Capture, а также указываем, что фокусное расстояние мо время съёмки неменялось и нам неизвестно.

Жмём close. Обратим внимание, что ранее неактивная кнопка Import Footage, снова стала активной. Добавляем оставшиеся сиквенции left.avi и right.avi.

Теперь нужно синхронизировать все наши сиквенции, на самом деле нам этого делать ненужно, потому что снимали всё одной камерой, просто проверим, что все камеры стоят на начале и нажмём кнопку Sync

можно сильно упростить себе жизнь, если выставить окошки камер так, чтобы можно было всё сразу отслеживать, воспользуемся кнопками меню New Window и Tile Window Layout.

Дальше начинается самое интересное. (: Чтобы получить трёхмерные координаты наших маркеров, сначала нужно получить их двухмерные координаты на каждой камере, для этого воспользуемся трэкингом.

Смотрим на нашу центральную камеру, начнём с неё, потому-что на ней отчётливо видны все маркеры на протяжении всего видео. В PFtracke существует два типа 2d трэкеров: автоматические — Auto Features и пользовательские — User Features, мы воспользуемся вторыми, они позволяют точнее контролировать нужные нам области. И так, нажмём ctrl-F3 или выберем в меню Tracking — New User Features и выберем наш центральный маркер на лбу, раздвинем области трэкера как показано на рисунке, назовём его lob_c

Встаем в самое начало видео, вызываем контекстное меню трэкера (кликнем на нём правой кнопкой мыши) и выбираем пункт Track Forwards, наблюдаем как программа находит траекторию движения нашей метки.

В процессе трэкинга программа может выдавать ошибки, это нестрашно. Они могут быть вызваны несколькими причинами, восновном неправильно настроенной выдержкой из-за плохой освещённости, как это было с моей веб камерой. Решить эту проблему можно покрутив параметры в меню Trackig — Tracking parameters. либо использовать больше света при съёмках и более лучшую камеру, надеюсь, что у Вас таких проблем невозникнет (:

Далее нужно повторить все эти действия с каждым маркером, т.е. встаём на начало видео, заново нажимаем ctrl-F3 выбираем следующий маркер, двигаем ограничители трэкера, жмём Track Forwards. Советую называть трэкеры так чтобы было понятно чему она соответствует, например я следовал такому принципу: eye_L, eye — в переводе Глаз, _L — слева, всё это пригодится в дальнейшем.

Далее нам нужно сделать трэкинг всех этих же маркеров, но уже в другой камере. Для этого встаём в начало видео, выбираем какой-нибудь созданный нами трэкер в списке слева, и указываем его заново, но в уже в другом окне вида соответственно, также указываем его границы, и жмём Track Forwards. Проделываем эту операцию со всеми маркерами которые видны из этой камеры на всём промежутке времени, маркеры которые невидны, либо видны в начале видео, а потом невидны или наоборот- не трогаем. Потом всё тоже самое с последней камерой.

Читайте также:  Детский наряд для праздника своими руками

Итак мы имеем 2д координаты всех трэкеров со всех камер, теперь нам нужно преобразовать их в трёхмерные координаты, сделать это очень просто, основная работа позади (:

Чуть не забыл, для ускорения и точности дальнейшего просчёта необходимо указать неподвижные участки лица, выделяем точки носа и лба о которых было сказано выше, жмём Tracking — Constraints, в появившемся окне сначала нажимаем New потом выделяем наши точки справа, потом кнопку » 766 0 850 130

Источник

Простой датчик движения своими руками

Возможность контролировать перемещение людей в определенной области позволяет наладить автоматическое включение и выключение света, отпирание и закрытие дверей или вовремя зафиксировать появление злоумышленников. Реализовать такую опцию на практике помогает датчик движения, срабатывающий в случае перемещения определенного объекта в его рабочей области. Однако далеко не всегда есть возможность приобрести такое оборудование по ряду причин. Поэтому в данной статье мы рассмотрим вопрос о том, как датчик движения своими руками.

Виды датчиков движения

Основной задачей датчика движения является фиксация перемещения в заданной области. Как только объект пересечет указанную черту, или займет локацию в охватываемой датчиком области, сенсор воспримет это явление и передаст соответствующий сигнал. В обиходе, на сегодняшний день, присутствует достаточно большое разнообразие подобных устройств, отличающихся как функционалом, так и принципом действия:

  • инфракрасные – основаны на принципе изменения состояния электронного ключа под воздействием светового излучения;
  • радиоволновые – посылают в заданную область определенную частоту радиоволн, в случае появления препятствия волны отражаются и антенна воспринимает это излучение, подавая соответствующий сигнал в ответ;
  • тепловые – реагируют на появление предметов с определенной температурой в зоне охвата, пригодны для использования в помещениях или после захода солнца;
  • магнитные – представляют собой аналог кнопки, устанавливаемой на двери или калитке, срабатывают при открытии, такой тип датчика имеет существенные ограничения в работе;

Тепловые датчики движения будут сбоить при установке их на кухне около обогревателей и других источников тепла. Аналогичным образом боится воздействия помех и радиоволновой датчик. Поэтому широкое распространение получили инфракрасные устройства, работающие за счет фотореле, изменяющего уровень сопротивления при попадании световых волн. Наиболее простым и понятным в изготовлении будет инфракрасный датчик движения.

Схемы датчиков движения

Принцип действия датчика движения основывается на показаниях измерительного элемента, фиксирующего изменения определенного параметра в окружающей среде. В качестве воспринимающего элемента мы рассмотрим пиромодуль (PIR элемент) или фоторезистор, которые будут реагировать на изменение инфракрасного излучения. Наипростейшей схемой такого датчика является:

Рис. 1. Схема датчика на пиромодуле

Как видите на рисунке 1, пиромодуль PIR D203S включает в себя несколько элементов:

  • непосредственно сам пироэлектрик PIR;
  • полевой транзистор T1;
  • шунтирующий резистор R1.

Работа схемы происходит следующим образом: при попадании света на PIR датчик он изменяет параметр электрической величины и открывает цепь для протекания тока через нагрузку. Это наиболее простой вариант сенсора для датчика движения, вместо него можно использовать отечественный образец ПМ-4. Подключение последнего будет производиться немного сложнее и потребует отдельной установки некоторых радиодеталей. Схема подключения датчика ПМ-4 приведена на рисунке ниже:

Рис. 2. Подключение сенсора ПМ-4

Данная модель PIR элемента, в отличии от предыдущей, имеет восемь выводов, 5 из которых нам понадобятся для подключения. Как видите на схеме 2, подключение происходит следующим образом:

  • выводы 1,6 и 8 необходимо объединить для подключения к минусовой шине;
  • клемма 8 подключается к клемме 2 через резистор R1;
  • вывод 2 подсоединяется к затвору транзистора VT1;
  • клемма 4 датчика подсоединяется к истоку транзистора VT1.

Нагрузка или рабочий электроприбор подсоединяется к стоку полупроводникового элемента. ПМ-4 гораздо чаще встречается у радиолюбителей, поэтому его проще найти в качестве подручного помощника. Но при отсутствии таковых из ситуации поможет выйти и обычный биполярный транзистор, если с него удалить верхнюю крышку, чтобы открыть доступ света к кремниевому кристаллу. В этом случае, на его основе также можно собрать датчик движения своими руками, рабочая схема такого датчика приведена на рисунке 3 ниже:

Читайте также:  Led подсветка для номера своими руками

Рис. 3. Схема датчика движения на основе транзистора

Так как регулировка открытого и закрытого положения в датчике движения будет осуществляться за счет попадающего на кристалл светового потока, база удаляется и в работе схемы не участвует. В остальном схема будет работать по такому принципу:

  • при попадании света на открытый кристалл транзистора VT1 он откроется, и ток будет протекать через его цепь и усилитель DA1 к нагрузке;
  • в случае прекращения подачи светового потока на VT1 переход закроется и напряжение в точке А устремиться к нулю, конденсатор C1 начнет разряжаться;
  • питание нагрузки прекратится за счет закрытия фототранзистора, а возобновление наступит лишь после того, как барьер между источником света и приемником покинет заданную область;

Рис. 4. Препятствие между источником и приемником

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

На схеме R1 совместно с конденсатором C1 представляют собой времязадающую цепочку, поэтому от их параметров будет зависеть результат включения нагрузки. В нашем примере, наиболее часто встречается подключение освещения от датчика движения. Регулируемый резистор R2 установлен в цепь обратной связи усилителя, и чем больше его номинал, тем эффективнее работа усиления, но снижается устойчивость всей схемы. Поэтому подбор этих трех элементов нужно производить опытным путем, на рисунке выше приведены лишь приблизительные параметры.

Что потребуется для изготовления?

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

  • фоторезистор (при отсутствии можно заменить модернизированным транзистором, как рассматривалось на рисунке);
  • емкостной элемент;
  • усилитель с возможностью установки обратной связи;
  • два резистора, один из которых имеет функцию регулировки;
  • реле или контактор в качестве исполнительного блока;
  • светодиод или лазерная указка для источника освещения;

Рис. 5. Светодиод в качестве источника освещения

  • соединительные провода и плата.

Из инструментов вам пригодятся кусачки, паяльник и припой, если в ход пойдет монтажная плата, то возьмите любое приспособление для распила или отделения по точкам. Заметьте, что все соединения электрических деталей в соответствии с п.2.1.21 ПУЭ должны производиться пайкой, болтовым соединением, обжимом или опрессовкой, поэтому ни в коем разе не делайте скруток. Последний вариант актуален на этапе проектирования и подборки элементов, когда все узлы датчика движения находятся под вашим непосредственным контролем.

Процесс изготовления датчика движения пошагово

Качество и полученный результат при сборке датчика движения своими руками напрямую зависит от вашей осведомленности в радиомоделировании и наличия определенных навыков. Поэтому чтобы исключить элементарные неточности и ошибки мы приведем пошаговую инструкцию по изготовлению датчика движения:

Общее время: 1 час

Проверьте целостность деталей

Предварительно подготовьте радиодетали для датчика движения из предыдущего списка и проверьте их целостность визуальным осмотром.

Нанесите разметку на плату

Приложите детали к монтажной плате, рассчитайте их количество и способ расположения, исходя из принципа и схемы соединения датчика движения. Когда нужное число отверстий или размеры будут у вас, отметьте их на плате.

Отпилите по линии разметки часть платы

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

Обработайте края напильником

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

Вставьте детали в отверстия на плате

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

Припаяйте элементы на плату

С помощью паяльника и олова припаяйте все элементы сенсора движения на плату.

Подключите к прибору освещения

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

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

Источник

Оцените статью