Comments 23
Ну и приемник по-английски — receiver, а не ressiver :)
Здравствуйте, в более позднем виде системы я использую HC-SR04 как ультразвуковой микрофон и сам анализирую волну, это улучшило систему, но углы все равно не впечатляют.
Я пробовал вот такой микрофон ADMP401 https://ru.aliexpress.com/item/ADMP401-ADMP404-MEMS-Breakout-Arduino-1-3/32966959737.html?spm=a2g0s.9042311.0.0.546933edslkyxS
но тут очень слабая амплитуда, работать можно но, хочется лучше.
Буду очень благодарен если вы мне посоветуете более хорошие излучатели и микрофоны, которые желательно можно было бы купить на Али Експрессе или в другом дешевом магазине.
По поводу углов можно попытаться брать данные с учетом текущего положения/направления датчиков, получится что то типа инерциалки, но сложность сразу увеличится на порядок, и нужно будет иметь поправочные таблицы на положение/направления датчиков.
Ну хоть не дешево, может потяну, киньте те что знаете, а то я много искал и мало что нашел.
— на отслеживаемом объекте размещается излучатель, например в ИК-диапазоне, можно с модуляцией излучения
— в углах помещения висят постоянно вращающиеся узконаправленные (по горизонтали) приемники, засекающие излучатель
— когда приемник во время вращения засекает излучатель, он засекает угол, на котором это произошло
— два приемника, висящие в разных концах помещения, дадут два угла направления на излучатель, дальше несложные вычисления дадут положение излучателя в пространстве (точнее, на плоскости)
— увеличение числа приемников даст прибавку к точности определения координат излучателя
Если сигнал излучателя модулировать достаточно высокой частотой, а приемники будут вращаться достаточно медленно, то приемник может даже излучать поверх модуляции свой идентификатор, так что в одном помещении можно будет отслеживать несколько излучателей одновременно :)
Сам факт наличия механики делает систему менее надежной, менее точной и более энергопотребляющей, но самый интересный вопрос — как приёмник отличит отражение от источника (который излучает во всех направлениях), особенно если в помещении есть хорошо отражающие поверхности (или фрагменты поверхностей)?
Даже если есть простое решение проблемы с отражениями (или комната не содержит отражающих поверхностей), то возникают ещё две проблемы:
— гарантировать обнаружение источника более чем одним приёмником, одновременно или в пределах небольшого временного интервала (поскольку они узконаправленные);
— гарантировать отсутствие препятствия на пути как минимум двух достаточно удалённых друг от друга приёмников в любой момент времени.
Первую можно решить быстрым вращением (лидары передают привет), а вот вторую — либо убиранием препятствий (что делает всю систему несколько менее практичной), либо использованием кучей приёмников, что, в свою очередь, приводит к чрезмерному усложению системы со всеми вытекающими (стоимость, надежность, энергопотребление). Впрочем, куча приёмников решит и проблему с отражениями (наверное), но это ещё больше усложнит систему.
Сам факт наличия механики делает систему менее надежной, менее точной и более энергопотребляющей
Это да, не спорю. Но я и не предлагаю срочно внедрять это, просто ради интереса сделать такую систему, как вот этот ультразвуковой вариант, который тоже не слишком подходит для практического применения :)
как приёмник отличит отражение от источника (который излучает во всех направлениях), особенно если в помещении есть хорошо отражающие поверхности (или фрагменты поверхностей)?
Думаю, что обработка полученных от разных приемников данных сможет отсеять отражения. Если первый приемник увидел излучатель в нескольких местах, а данные второго приемника коррелируются только с одним из показаний первого приемника, то остальные показания первого приемника можно считать ошибочными :)
— гарантировать обнаружение источника более чем одним приёмником, одновременно или в пределах небольшого временного интервала (поскольку они узконаправленные);
Двумя или более приемниками — да, одновременно — необязательно. Достаточно обеспечить минимальный временной интервал, в течении которого излучатель не может переместиться на большое расстояние. Ну и дополнительная обработка может уменьшить погрешности.
— гарантировать отсутствие препятствия на пути как минимум двух достаточно удалённых друг от друга приёмников в любой момент времени.
Теоретически это можно решить увеличением количества приемников, но опять же — это просто «for fun», а не рац. предложение для внедрения :)
Вы описали принцип работы HTC VIVE VRS. Точность позиционирования в миллиметрах, 10 раз в секунду. Очень низкая стоимость одного датчика. Всего два опорных «излучателя».
Да, только там наоборот работает. Маяки (так и называются — lighthouse) делают вспышку и светят лазером сначала в одной плоскости, потом в другой. На контроллере и хедсете есть сенсоры, которые считают задержку. Трекинг работает даже с одним маяком.
cos(1.57-alfa);
— это же имелось в виду «Пи пополам минус альфа»?
Следовательно,
cos(1.57-alfa) === sin(alpha) === sqrt(1-cosa*cosa)
cosalfa = ((lenG*lenG + lenD*lenD - lenB*lenB)*1.00)/((2*lenE*lenG)*1.00);
koord_X = lenE*sqrt(1.00 - cosalfa*cosalfa);
koord_Y = lenE*cosalfa;
Функции:
float asin(float c)
float acos(float c)
float atan(float c)
Совсем не нужны.
Вообще, хороший признак: если и на входе и на выходе длины — то значения углов в промежуточных расчётах появляться не должны. Ну, или вы что-то делаете не так.
Не надо чесать левой пяткой за правым ухом.
Ультразвуковой GPS