Как стать автором
Обновить

Комментарии 23

Вот бы еще излучатели отвязать от проводов :)
Ну и приемник по-английски — receiver, а не ressiver :)
Зачем называть подобные системы «GPS»? В статье, на которую вы ссылаетесь в конце, хотя бы в кавычки взяли. Суть GPS в глобальности, лучше называть подобные системы просто системами позиционирования.
LPS :)

Я назвал GPS только для простоты восприятия, и потому что моя система как и GPS определяет координаты объекта, если бы я назвал статью "ультразвуковая система навигации для закрытых помещений" то её бы никто не нашел в поиске, да и если бы нашли то чтение закончили ещё на названии =)

Если нужна одна точка с координатами, то лучше сделать ее излучателем. Соответственно, будет два приемника. Это позволит, как минимум, в два раза повысить частоту измерения.

В следующей статье развивающей данную систему так и будет.

HC-SR04 не блещут качеством и в зависимости от направления будут давать разные значения, посмотрите другие узы, и габариты поменьше можно сделать и качество будет получше. К тому же логичнее на объекте излучать, а не принимать сигнал. Жаль что расстояния только небольшие могут быть так измерены и от окружающей обстановки очень многое зависит, температура, влажность или плотность поменялась и все данные уже будет с большой погрешностью.

Здравствуйте, в более позднем виде системы я использую HC-SR04 как ультразвуковой микрофон и сам анализирую волну, это улучшило систему, но углы все равно не впечатляют.
Я пробовал вот такой микрофон ADMP401 https://ru.aliexpress.com/item/ADMP401-ADMP404-MEMS-Breakout-Arduino-1-3/32966959737.html?spm=a2g0s.9042311.0.0.546933edslkyxS
но тут очень слабая амплитуда, работать можно но, хочется лучше.
Буду очень благодарен если вы мне посоветуете более хорошие излучатели и микрофоны, которые желательно можно было бы купить на Али Експрессе или в другом дешевом магазине.

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

Ну хоть не дешево, может потяну, киньте те что знаете, а то я много искал и мало что нашел.

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

Спасибо, с напряжением и сам игрался, на 25 вольтах излучатели становятся очень мощьными.

Интересно, а можно ли реализовать «местное» позиционирование на следующем принципе?:
— на отслеживаемом объекте размещается излучатель, например в ИК-диапазоне, можно с модуляцией излучения
— в углах помещения висят постоянно вращающиеся узконаправленные (по горизонтали) приемники, засекающие излучатель
— когда приемник во время вращения засекает излучатель, он засекает угол, на котором это произошло
— два приемника, висящие в разных концах помещения, дадут два угла направления на излучатель, дальше несложные вычисления дадут положение излучателя в пространстве (точнее, на плоскости)
— увеличение числа приемников даст прибавку к точности определения координат излучателя

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

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

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

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

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

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

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

Теоретически это можно решить увеличением количества приемников, но опять же — это просто «for fun», а не рац. предложение для внедрения :)
Можно.
Вы описали принцип работы HTC VIVE VRS. Точность позиционирования в миллиметрах, 10 раз в секунду. Очень низкая стоимость одного датчика. Всего два опорных «излучателя».
Там именно вращающиеся датчики?

Да, только там наоборот работает. Маяки (так и называются — lighthouse) делают вспышку и светят лазером сначала в одной плоскости, потом в другой. На контроллере и хедсете есть сенсоры, которые считают задержку. Трекинг работает даже с одним маяком.


https://www.youtube.com/watch?v=J54dotTt7k0

Сначала подумал, что измеряется время распространения света, потом понял. Очень интересный принцип, спасибо :)
Спасибо за статью! Но настоятельно советую автору «подтянуть» программирование, чтобы расширить свои возможности.
Вам не кажется странной идея находить угол по его косинусу, а потом снова брать косинус этого же угла?

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)

Совсем не нужны.
Вообще, хороший признак: если и на входе и на выходе длины — то значения углов в промежуточных расчётах появляться не должны. Ну, или вы что-то делаете не так.
Не надо чесать левой пяткой за правым ухом.
Я с вами полностью согласен, но не всегда хватает ума все сделать правильно)) к счастью я сейчас нашел какие то формулы, и в моей новой системе они спокойно рассчитывают три координаты, не знаю насколько оптимально правда
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории