- PVSM.RU - https://www.pvsm.ru -
О чем эта статья: Эта статья описывает принципы работы моей системы определения координат, и мой опыт её изготовления. Данная статья не является инструкцией по изготовлению навигационной системы, ибо это не так просто, чтобы описать в одной статье.
Данная статья является развитием идей моей предыдущей статьи:
habr.com/ru/post/451408 [1]
Система определения координат имеет вот такую структурную схему:
Рис. 1 — Принципиальная схема УЗ системы определения координат.
Рассмотрим каждый элемент повнимательнее.
Рис. 2 — Развитие УЗ приемника (сверху вниз).
Изначально приемники состояли из одного модуля и имели очень маленькую зону охвата помещения, в те времена я не оцифровывал сигнал, а просто получал с датчика длину, которую выдавал штатный контроллер.
Затем для увеличения охвата я решил сделать модуль из трех датчиков, данные с которых параллельно оцифровывались и передавались на ПК, где рассчитывалось расстояние и координаты. После испытания трехкомпонентного приемника я увидел, что достаточно и одного приемника, если ты сам обрабатываешь сигнал.
В результате приемник стал опять однокомпонентным, но из-за того что я сейчас сам обрабатываю сигнал, область покрытия стала достаточно большой. Сигнал сейчас обрабатывается в STM32 после оцифровки, на выход он выдает только расстояние.
Состав:
Рис. 3 — Оцифрованный УЗ сигнал.
Рис. 4 — УЗ сигнал на участке 4700 – 5200 рисунка выше.
Рис. 5 — Развитие излучателя (сверху вниз).
Как вы поняли из рисунка 5, вначале я просто дергал лапкой Trig на датчике HC-SR04, это была не самая лучшая система, хотя бы потому, что я не мог сам определять сколько УЗ волн создать, не мог изменять их мощность, и этот излучатель был достаточно громоздким.
Тогда я создал вторую версию, которая была намного более громоздкой, но я мог уже регулировать все при помощи STM32 и L293D, которые напрямую подключались к УЗ динамику. Теперь вместо штатных 5 вольт я подавал 17, и это сильно увеличило рабочую зону. Также я добавил радиомодуль и интерфейс RS485, что сделало этот модуль автономным.
После ряда испытаний я решил уменьшить излучатель до приличных размеров и скомпоновал все поплотней, в результате получилось то, что вы видите на последней картинке.
Состав:
Рис. 6 — Базовый модуль.
Состав:
ПК через RS485 переходник подключен ко всем УЗ приемникам, по данному интерфейсу получает от них все длины и высчитывает координаты мобильного модуля. Через USB подключен к базовому модулю и через него передает управляющие команды на мобильный модуль.
Карта комнаты с размещенными по углам УЗ приемниками выглядит вот так:
Рис. 7 — Общая идея расположения датчиков.
Рис. 8 — Вид сверху в масштабе (кружками, с цифрами внутри, обозначены датчики).
Запустив это все, мы получаем координаты объекта, точность зависит от места в комнате. В лучших местах погрешность не превышает пары сантиметров, а в худших… ну вы сами все можете увидеть на рисунке 9.
Рис. 9 — Перемещение излучателя по комнате.
На данном рисунке четыре набора координат, так как мы имеем четыре приемника, а для определения координат в трехмерном пространстве нам необходимо только три, то количество комбинаций приемников у нас четыре.
Как видно из рисунка, в общем система определяет координаты верно, но в разных местах погрешность разная. Я перемещал излучатель параллельно осей Х и У, где-то с интервалом между линиями в метр, где-то в полметра, это видно на рисунке. Самая лучшая точность в центре, а по краям все плохо, ибо оттуда УЗ сигнал падает на приемник под большим углом, и это создает искажения в оцифрованном сигнале.
После фильтрации и усреднения четырех пар координат мы получаем следующую картину:
Рис. 10 — Усредненная траектория.
Не айс, но уж что есть.
Для интереса покажу, как это все выглядит в 3D, ведь третья координата у нас тоже есть, хотя она в моем проекте и не нужна, ведь мобильный робот перемещается только в плоскости.
Рис. 11 — 3D траектория.
Как мы видим, все точки лежат примерно в одной плоскости, и это корректно, ведь излучатель я возил по полу не отрывая.
А вот пример неудачной проезда мобильной платформы с излучателем, траектория ее движения видна прекрасно. По замыслу платформа должна была вернуться в исходную точку, проехав по прямоугольной траектории, но не сложилось, в следующих статьях я расскажу почему.
Рис. 12 — Траектория перемещения мобильной платформы.
У меня на данный момент есть целый ряд актуальных проблем, и если кто-то может что-то подсказать, прошу написать это в комментариях или в VK:
vk.com/b__s__v [2]
1. Чем лучше принимать УЗ сигнал? Датчики HC-SR04, которые я сейчас использую для приема и усиления УЗ сигнала, не лучший вариант. Во-первых, потому что они всегда принимают сигнал только с одной частотой и по ним нельзя сделать частотное разделение источников сигнала (а мне это интересно попробовать), к тому же они слишком громоздкие, и я сильно от них зависим.
2. Как убрать искажения координат в разных углах комнаты? На той сетке, которую я нарисовал на полу, видно что порой прямые начинают отклоняться, хотя я мобильный модуль всегда перемещал ровно, и от этого надо как-то избавляться.
3. У nRF24 пропадает сигнал. Когда модули находятся близко, то проблем нет, но стоит их разнести на несколько метров и самому встать между ними, как сообщения доходят через одно. У меня там нет повторной отправки сообщений, так как я по этому каналу передаю синхросигналы, и они должны всегда приходить в ту же секунду. У меня модули с внешней антенной, и тот, что на базовом модуле лучше работает без антенны, чем с ней. Ничего не понимаю, мощность на максимуме.
4. Места продвижения проекта. Если кто-то знает международные площадки типа Хабра на английском языке, скиньте ссылки, пожалуйста, а то я так ничего приличного и не нашел, а stackoverflow, это просто вопросы и ответы, не совсем то, чтобы выкладывать подобные статьи.
5. Замечания и предложения. Если кто-то хочет высказаться, то буду рад и критике, и предложениям.
Это далеко не финал моего проекта, хотя время и подходит к концу, но если будет интерес, то напишу статью о том, как на основе этой системы ездит мобильный робот по заданным координатам у меня в комнате.
Автор: b__s__v
Источник [3]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/roboty/339610
Ссылки в тексте:
[1] habr.com/ru/post/451408: https://habr.com/ru/post/451408/
[2] vk.com/b__s__v: https://vk.com/b__s__v
[3] Источник: https://habr.com/ru/post/479530/?utm_source=habrahabr&utm_medium=rss&utm_campaign=479530
Нажмите здесь для печати.