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


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

-rzuxphjgpq9izjwplxls7rrwue.png

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

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


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

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

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

УЗ приемник


ixcvogrpoy4ntuu0qw9ytjbtyje.png

ncsrtfhxi-rsa8jstcwuuax0nfu.jpeg

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

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

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

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

Состав:

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


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

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

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


fvtael07m2b6_r2ybluysab17gk.jpeg

gsi27fd6sg6vyiw39z6rfwebmky.jpeg

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

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

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

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

Состав:

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


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


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

Состав:

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


ПК модуль


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

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


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

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

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

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


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


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


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

f-_pdck7ruxzuay-7y9gsfrh6tk.png
Рис. 9 — Перемещение излучателя по комнате.

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

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

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

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

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

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

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

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

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

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

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


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

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

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

© Habrahabr.ru