Ультразвуковая система определения координат 2.0

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Ультразвуковая система определения координат 2.0


О чем эта статья: Эта статья описывает принципы работы моей системы определения координат, и мой опыт её изготовления. Данная статья не является инструкцией по изготовлению навигационной системы, ибо это не так просто, чтобы описать в одной статье.



Данная статья является развитием идей моей предыдущей статьи:
habr.com/ru/post/451408

Структура системы


Система определения координат имеет вот такую структурную схему:


Рис. 1 — Принципиальная схема УЗ системы определения координат.

Рассмотрим каждый элемент повнимательнее.

УЗ приемник







Рис. 2 — Развитие УЗ приемника (сверху вниз).

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

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

В результате приемник стал опять однокомпонентным, но из-за того что я сейчас сам обрабатываю сигнал, область покрытия стала достаточно большой. Сигнал сейчас обрабатывается в STM32 после оцифровки, на выход он выдает только расстояние.

Состав:
  • STM32 – используется для оцифровки УЗ сигнала и расчета расстояния до излучателя;
  • HC-SR04 – я его немного модифицировал и теперь могу с его входа получать сигнал, представленный на рисунке 3;
  • RS485 – для передачи расстояния до излучателя на ПК.


Рис. 3 — Оцифрованный УЗ сигнал.


Рис. 4 — УЗ сигнал на участке 4700 – 5200 рисунка выше.

УЗ излучатель







Рис. 5 — Развитие излучателя (сверху вниз).

Как вы поняли из рисунка 5, вначале я просто дергал лапкой Trig на датчике HC-SR04, это была не самая лучшая система, хотя бы потому, что я не мог сам определять сколько УЗ волн создать, не мог изменять их мощность, и этот излучатель был достаточно громоздким.

Тогда я создал вторую версию, которая была намного более громоздкой, но я мог уже регулировать все при помощи STM32 и L293D, которые напрямую подключались к УЗ динамику. Теперь вместо штатных 5 вольт я подавал 17, и это сильно увеличило рабочую зону. Также я добавил радиомодуль и интерфейс RS485, что сделало этот модуль автономным.

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

Состав:
  • STM32 – получает команду Trig (начать измерение расстояний) по радиоканалу и излучает УЗ сигнал, также передает команды, полученные из радиомодуля в RS485 (использую для дистанционного управления мобильной платформой);
  • RS485 – информационный интерфейс устройства для пользователя;
  • DC-DC повышающий – преобразует питающее 5В в 17В для излучателя;
  • L293D – использую для генерации сильного УЗ сигнала с напряжением 17В;
  • nRF24 – радиоканал;
  • Излучатели – 6 излучателей, которые выпаял из модуля HC-SR04.

Базовый модуль



Рис. 6 — Базовый модуль.

Состав:
  • STM32 — посылает излучателю и приемникам Trig, получает команды по USB от ПК для передачи через радиоканал излучателю (он же мобильный модуль);
  • nRF24 – передача Trig излучателю и передача команд излучателю.

ПК модуль


ПК через RS485 переходник подключен ко всем УЗ приемникам, по данному интерфейсу получает от них все длины и высчитывает координаты мобильного модуля. Через USB подключен к базовому модулю и через него передает управляющие команды на мобильный модуль.

Расположение модулей в рабочей зоне


Карта комнаты с размещенными по углам УЗ приемниками выглядит вот так:


Рис. 7 — Общая идея расположения датчиков.


Рис. 8 — Вид сверху в масштабе (кружками, с цифрами внутри, обозначены датчики).

Алгоритм работы УЗ системы определения координат


  1. Базовый модуль посылает команду Trig излучателю (по радиоканалу) и приемникам (по проводу).
  2. Излучатель начинает излучать, а приемники начинают слушать эфир.
  3. Каждый приемник, услышав УЗ сигнал, записывает время между командой Trig и временем получения этого сигнала и переводит это в расстояние.
  4. Приемники по RS485 отправляют расстояния от излучателя до себя на ПК.
  5. ПК рассчитывает координаты излучателя.

Работа системы


Запустив это все, мы получаем координаты объекта, точность зависит от места в комнате. В лучших местах погрешность не превышает пары сантиметров, а в худших… ну вы сами все можете увидеть на рисунке 9.


Рис. 9 — Перемещение излучателя по комнате.

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

Как видно из рисунка, в общем система определяет координаты верно, но в разных местах погрешность разная. Я перемещал излучатель параллельно осей Х и У, где-то с интервалом между линиями в метр, где-то в полметра, это видно на рисунке. Самая лучшая точность в центре, а по краям все плохо, ибо оттуда УЗ сигнал падает на приемник под большим углом, и это создает искажения в оцифрованном сигнале.

После фильтрации и усреднения четырех пар координат мы получаем следующую картину:


Рис. 10 — Усредненная траектория.

Не айс, но уж что есть.

Для интереса покажу, как это все выглядит в 3D, ведь третья координата у нас тоже есть, хотя она в моем проекте и не нужна, ведь мобильный робот перемещается только в плоскости.


Рис. 11 — 3D траектория.

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

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


Рис. 12 — Траектория перемещения мобильной платформы.

Актуальные проблемы


У меня на данный момент есть целый ряд актуальных проблем, и если кто-то может что-то подсказать, прошу написать это в комментариях или в VK:
vk.com/b__s__v

1. Чем лучше принимать УЗ сигнал? Датчики HC-SR04, которые я сейчас использую для приема и усиления УЗ сигнала, не лучший вариант. Во-первых, потому что они всегда принимают сигнал только с одной частотой и по ним нельзя сделать частотное разделение источников сигнала (а мне это интересно попробовать), к тому же они слишком громоздкие, и я сильно от них зависим.
2. Как убрать искажения координат в разных углах комнаты? На той сетке, которую я нарисовал на полу, видно что порой прямые начинают отклоняться, хотя я мобильный модуль всегда перемещал ровно, и от этого надо как-то избавляться.
3. У nRF24 пропадает сигнал. Когда модули находятся близко, то проблем нет, но стоит их разнести на несколько метров и самому встать между ними, как сообщения доходят через одно. У меня там нет повторной отправки сообщений, так как я по этому каналу передаю синхросигналы, и они должны всегда приходить в ту же секунду. У меня модули с внешней антенной, и тот, что на базовом модуле лучше работает без антенны, чем с ней. Ничего не понимаю, мощность на максимуме.
4. Места продвижения проекта. Если кто-то знает международные площадки типа Хабра на английском языке, скиньте ссылки, пожалуйста, а то я так ничего приличного и не нашел, а stackoverflow, это просто вопросы и ответы, не совсем то, чтобы выкладывать подобные статьи.
5. Замечания и предложения. Если кто-то хочет высказаться, то буду рад и критике, и предложениям.

Это далеко не финал моего проекта, хотя время и подходит к концу, но если будет интерес, то напишу статью о том, как на основе этой системы ездит мобильный робот по заданным координатам у меня в комнате.
Источник: https://habr.com/ru/post/479530/


Интересные статьи

Интересные статьи

Поднимите руку, если когда-нибудь сталкивались с такой ситуацией: вы получили текст со странными прямоугольниками или вопросительными знаками. Или эмодзи при отправке выглядело...
Системы контроля версий уже давно стали повседневным инструментом разработчика. В больших монорепозиториях требования к ним оказываются весьма специфическими. Из-за этого компании либо адаптируют...
Как быстро определить, что на отдельно взятый сайт забили, и им никто не занимается? Если в подвале главной страницы в копирайте стоит не текущий год, а старый, то именно в этом году опека над са...
Нейтрализация пользователя и процесс установки новой ОС Привет, Хабр. Сегодня хотим поделиться опытом миграции одной организации (далее – Заказчик) на отечественную ОС в рамках выполнения тр...
Всем привет! Рождество давно прошло, но после него у нас осталась занимательная история о том, как при помощи нечасто используемой возможности Core Animation можно создать пользователям пр...