Тема «Карты глубин. Путь самурая.»

hans-zemmer
Аватара пользователя
Калининград
Стаж: 6 лет 5 м 18 дн
Сообщения: 267
Желание иметь у себя карты глубин водоемов заставило меня однажды встать с дивана и сходить в магазин за пивом.
Идея была простая: обработать около миллиона точек сканирования с эхолотов и превратить их в понятную глазу картинку.



Коллеги по увлечению, которые подарили мне точки для опытов, выгодно отличались от меня наличием совершенных приборов-структурников с поддержкой карт. Мне же предстояла задача посложнее - получить карты на экране смартфона. Всегда использую защищенный смартфон в лодке как навигатор. Многим знаком навигатор Locus. Я им пользуюсь давно, поэтому и выбор пал на него. Те карты, которые имелись на тот момент, не устраивали в корне. Это были карты Навионикс, честно спижж..ые из SAS-планеты в смартфон в то время, когда они были еще доступны:



Да, какие-то изобаты, цифры с глубиной.. Для морских рыбалок в Янтарном, в принципе, сгодится как ориентир. Но душа хотела хардкора, чтобы каждая кочка была на экране. Программы-рисовалки типа Риф-мастера и пр. тоже не понравились, результат похож на Навионикс.
Я взял то, что было под рукой - разработка заграничных умельцев: Автокад. Так уж сложилось, что это мой рабочий инструмент. Более того, я пошёл дальше и начал некоторое время назад его модифицировать и усовершенствовать, писать для него программы и разные интересные штуки. Тут уж сам Бог велел.
Итак, что мы имеем.. 1000 000 точек.. Как, мать их, засунуть в Locus? Если сжать несколько месяцев неспешных вечеров за компом в одну картинку, то вот. Результат обработки сканирования участка верхнего озера (сверху мой результат обработки точек, снизу - сторонняя программа):



Но это все равно картинка, не привязанная к координатам.
Пришлось решать много задач. Первая из них - Земля круглая, а экран квадратный. :rofl: Ну серьезно, длина градусов по параллелям зависит от широты. На нашей широте 54 длина одного градуса на восток отличается от длины на север примерно в 2 раза. Это нужно учитывать в процессе обработки точек.
Следующая проблема - изменение уровня воды на водоемах. Нагонные ветра, течения, Луна и пр. факторы влияют на уровень воды. Прошли вы в одном месте с эхолотом, записали трек. Прошли через неделю там же, а глубина уже поменялась на полметра. В итоге, если этого не учесть, на карте будет борозда или гряда, которой там по факту нет. Это тоже удалось решить методом статистики и иногда ручной корректировки глубины.
Третья проблема - как объединять точки и вообще из чего собирать карту? Тут я применил метод триангуляции: три точки из множества, через которые можно провести окружность наименьшего диаметра - образуют треугольник. Этот метод впервые описал в 1934 году советский математик Борис Делоне.



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



Шаг был выбран в 0.25 м, т.е. четыре на метр и не сколько диапазонов глубин для Локуса.



Вот, например, так выглядит полуфабрикат. Выход из залива в канал в Балтийске в районе Камсигала:



Почему именно такой способ? Все просто: Локус поддерживает карты OpenStreetMap или OSM - открытый формат, редактируется энтузиастами, имеет свой стандарт, карты генерятся из XML. Проблемы возникло две. Как сгенерировать из автокада XML-файл с полигонами и самая большая - как теперь это показывать в Локусе теми же цветами, какими я их задумал? Первую удалось решить программированием. Но вторая требовала особого подхода. Дело в том, что америкосы тупые и у них озеро голубенькое, лес зелененький, дорога - темная ниточка. А мне же нужно, например, для 20-метрового диапазона получить 80 оттенков цветов в ограниченном спектре от желтого до темно-синего! Пришлось изучать, как устроен Локус, а конкретно - темы для отображения разных карт. И таки я смог обхитрить программу! Написал свои темы для локуса для конкретно своих карт. Сделал 6 тем, 3 с указанием глубины и 3 без - сильно напрягется процессор в мобильном. Детализация-то огромная. Диапазоны простые: 0-10 для залива, 0-20 для канала и подобных мест, 0-40 - для моря.



И вуаля, тот же участок из полуфабриката превращается в карту глубин:



А вот один интересный момент. Всем известный затонувший кораблик на Бальге. Как-то заметил интересные кочки, а позже кто-то скинул в сети фото затонувшей лодки. Проверил координаты и они совпали.





На достигнутом я, естественно, не остановился. Захотелось самому сканировать просторы, но эхолот не позволял. Но это тоже решаемо. Как-нибудь в следующий раз покажу прибор собственной разработки.
Вместо эхолота к прибору можно подключить, например, градусник, датчик солености, прозрачности, радиации, света, звука, загазованности, влажности, потливости, сонливости и т.п. и делать карты любых данных. Разрешение карт = плотности точек. Это кому интересно.
Ну вот коротенько рассказал, так сказать.

Отдельная благодарность дядьИгорю Чану, дядьСаше Gro-Al'у и чуваку с 4PDA Erelen'у.

P.S. Можно, конечно, купить нормальный прибор, загрузить покупные карты..
:facepalm: С'ка.. они даже теперь выход NMEA не делают, сраные буржуи. Ну а что.. народ доволен. Кнопку нажал. "Дайте мне эхолот, чтоб судока показывал. У меня есть сотка. Хватит?". :zombi:

Короче, народ, не жопьтесь, накидайте треков. Один хрен жжёте топливо и треки потом не используете. Формат вон как на первой картинке. Цифры.. Эх, столько данных пропадает..

Skvortsov
Стаж: 1 г 11 дн
Сообщения: 35
Ничего не понятно, но ооочень интересно.
Если нужны бета-тесты на других устройствах э, я согласен :D

ЮраА
Аватара пользователя
Калининград
Стаж: 8 лет 4 м 10 дн
Сообщения: 3336
Тянет на докторскую. Супер.

Некит
Администратор
Аватара пользователя
Калининград
Стаж: 9 лет 1 м 22 дн
Сообщения: 1211
Я в восторге от проделанной работы! Супер!

Chan
Аватара пользователя
Рыболовный фанатик
Калининград
Стаж: 6 лет 1 м 1 день
Сообщения: 6994
Дядя Вова, так держать!
Рыбачим вместе!

Вадимон
Аватара пользователя
Калининград
Стаж: 9 лет 2 м 8 дн
Сообщения: 580
Титаническая работа! Очень рад, что такие люди есть среди нас :good:

Кошара
В сети
Аватара пользователя
Калининград
Стаж: 5 лет 5 м 1 день
Сообщения: 315
Офигеть!!! :shok:
Следил за темой еще на СК. Это пипец какой объем работы!
aZimut eVerest 405 + suZuki DF9.9BS
:speedboat:

СЯРШ
Администратор
Аватара пользователя
Калининград
Стаж: 7 лет 11 м 27 дн
Сообщения: 149
Нет слов! :shok: Снимаю шляпу! :good: :hi:

KoeKto
Аватара пользователя
WORLD PEACE
___________________
Стаж: 8 лет 16 дн
Сообщения: 2771
hans-zemmer, Вчера, 21:53 писал(а):И вуаля, тот же участок из полуфабриката превращается..


Непостижимо :shok: начиная с полуфабриката, который лично для меня не проще, чем космос.
И очевидно, что без хорошей карты глубины мозга, подобное не создать :give_rose:
Я хороший человек, кому не нравится, гуляйте лесом :unknown:

Santabr
Аватара пользователя
Стаж: 6 лет 3 м 23 дн
Сообщения: 1384
Хорошо, что у меня нет лодки, а то пришлось бы начать в этом пытаться разбираться :)
"Чумачедшая" работа проделана и действительно круто! :good:
И это всё после 1 банки пива?

Вячеслав 1972
Стаж: 8 лет 5 м 28 дн
Сообщения: 6297
Santabr, 19 май 2023, 11:23 писал(а): что у меня нет лодки

Сначала рейлинги, потом лодка... :yes:

hans-zemmer
Аватара пользователя
Калининград
Стаж: 6 лет 5 м 18 дн
Сообщения: 267

Однажды первые пазлы головоломки сложились, миллион точек закончился и нужно было где-то брать новые.
Долго тянул кота за яйца, всё ходил вокруг да около, сомневался, присматривался.. Не к эхолоту на "судока", нет. Микроконтроллер! Камень. Чип. Основа основ современного мира.
Программирование микроконтроллеров - это ппц какая интересная тема. От простого к сложному, изучаешь, ищешь решения, обтекаешь на профильных форумах. Все это приводит к закономерному результату: критическая масса проб и ошибок накапливается, скорлупа лопается и вылупляется очередное чудо инженерной мысли. :rofl:
В моем случае всё понятно. Есть координаты, есть глубина, лепи их вместе и знай себе попивай пивко и посматривай в карту. Легко сказать, а вот реализовать..
Начинал с нуля. Ни теории, ни практики. Микрочип - кусок пластика с ножками. Ну как с нуля, паяльник держать умею, как работает резистор знаю. С остальным разобрался, вроде.
Итак. В наличии эхолот Humminbird PiranhaMax 197c DI. На тыльной стороне 3 выхода: питание, датчик и какой-то 3й.


Интересные дела.. Думаю, если есть выход, значит и данные можно получить. Связывался с московским представительством, где мне корректно объяснили, что данные из эхолота мне не получить ну и на хер послали заодно. Помог мне в этом вопросе Александр Gro-AL. Известный в определённых кругах эхолотчик, тиранозавр электроники. Вскрыл дядьСаша мне прибор, на место непонятных контактов непонятного порта подключили 3 провода: массу, выход ультразвуковых посылок и выход с усилителя принятых сигналов.




Теперь можно было определить, когда эхолот посылает в воду импульс, когда принимает отраженный сигнал и какой он амплитуды. Посчитать глубину теперь плёвое дело: Засекаем время, когда вышла посылка, ловим отраженные сигналы, определяем самый мощный - думаем, что это дно, а не подводная гамняшка - умножаем на скорость звука в воде, делим пополам и получаем искомую глубину.
Далее была нужна первая часть трехмерных координат поверхности дна на планете Земля, а именно широта и долгота. В этом мне помогла плата на базе Arduino на микроконтроллере ATmega328: 32 кБ памяти для программ (это примерно глава из Гарри Поттера по объему, может немного больше), 2 кБ оперативки. Смех, да? :cool: Где-то 200-250 рублей в Кетае.





К плате были подключены: GPS-антенна и слот для карты памяти микро SD.
Эхолот связывал с платой через самодельный шнур. Платить 2 тыщи за покупной жаба задушила. Самое трудно было сделать штекер для хитрого порта. Помогла мне тут детская 3D-ручка. Это как 3D-принтер, только ручной.
В качестве контактов - стоматологическая проволока из нержавейки.





Другой конец - обычный аудио джек 3.5 мм.
С корпусом особо мудрить не стал. Выбрал водонепроницаемый котлетный бокс. Он и сейчас жив и надежно выполняет свою функцию. Питание сделал от пауэрбанка.





Первые тестовые выезды показали много существенных ошибок и недоработок.



Оказывается, нельзя просто так взять, открыть файл с координатами, записать новые, закрыть файл. Через секунду снова и через секунду то же самое. Так я убил несколько флешек и потерял много времени на воде и данных, прежде чем нашел ответ на то, почему плата виснет, флешки глючат и теряют данные. До обидного доходило: катаешься несколько часов на рыбалке, проходишь несколько километров трека, жмешь кнопку "сохранить", а оно зависает. И все, ты понимаешь, что данные потеряны.
Оказывается, флешки имеют весьма ограниченное количество циклов записи. Нужно делать буфер данных, причем большой буфер, а потом одним махом записывать буфер на флешку. Полез в интернеты. Нашел чип оперативной памяти на 8 Мб. Это он уже на конвертере логических уровней. Вон та маленькая черная хрень в середине размером 3х3 мм.



Если писать по одной точке каждые 5 метров, то памяти этого чипа хватит примерно на 1300 км пути.
Долго возюкался с фильтром GPS-координат. Начитался. Навигаторы, трекеры и пр. лабуда - все используют фильтры.
Нарисовалась новая проблема: эта оперативка никак не хотела работать на одной плате вместе с картой памяти. Пришлось мастырить вторую плату: на первой работает карта памяти и эхолот, на второй - оперативка. Опять же, если зависает первая плата, ее можно перезагрузить без потери данных. Платы соединяются между собой, грубо говоря, по сети. МикроЛАН, ёпрст. :rofl:
Вроде помогло, вылеты практически пропали, данные летают с одной платы на другую.
Неудобно пользоваться пауэрбанком. Куча лишних проводов, можно выдернуть случайно и тю тю точечки. Внедрил литиевую батарею размером 20650 на 5 ампер-часов. Хватает примерно на сутки бесперерывной работы.
Все это, конечно, хорошо.. А позырить цифры? Заказал двухстрочный ЖК-экран. На морозе не работает. Жидкие кристаллы становятся твёрдыми. :D



Корпус из вспененного ПВХ, как обычно, + оргстекло.




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



Вывел на экран текущие координаты, глубину и скорость. Есть подсветка. Есть текущий курс и курс на домашнюю точку, которую можно запомнить при включении устройства. Ну на всякий случай.

Как-то недавно подвернулся под руку другой эхолот, уже с боковым сканированием, с выходом NMEA, т.е. с портом, из которого можно взять данные по координатам , глубине, температуре вот такого вида:
08:23:02.922 -> $INDPT,9.5,0.0*4B
08:23:02.922 -> $INGLL,5449.6470,N,02038.5053,E,163037,A*39
08:23:02.969 -> $INV3M53
08:23:03.859 -> 9.5
08:23:03.859 -> $INDPT,9.5,0.0*4B
08:23:03.859 -> $INRMC,163038,A,5449.6482,N,02038.5053,E,4.9,358.46
08:23:04.937 -> 9.5
08:23:04.937 -> $INDPT,9.5,0.0*4B
08:23:04.937 -> $INGGA,163039,5449.6495,N,02038.5053,E,2,,1.0,330,Z050
08:23:05.828 -> 9.5
08:23:05.828 -> $INDPT,9.5,0.0*4B
08:23:05.828 -> $INRMC,163040,A,5449.6510,N,02038.5053,E,4.9,358.13
08:23:06.906 -> 9.5
08:23:06.906 -> $INDPT,9.5,0.0*4B
08:23:06.906 -> $INGLL,5449.6523,N,02038.5053,E,163041,A*3F
08:23:06.952 -> $INV3M52
08:23:07.862 -> 9.7
08:23:07.862 -> $INDPT,9.7,0.0*49
08:23:07.862 -> $INRMC,163042,A,5449.6535,N,02038.5047,E,4.9,358.4

Он, конечно и сам точки пишет, но уж как-то слишком грубо и резко, не понравилось. Трек получается рваный, угловатый. Сдаётся мне, пи..дит. Но глубину считать уже не нужно, ловить все эти сигналы и гадать, какой там из них дно, а какой - трава или гамняшка. Теперь нужно лишь взять глубину из текстовой строки и скрестить ее с координатами, поместить в буфер и потом перезаписать на флешку. Вуаля. Конечно, будем считать, что эхолот определяет глубину верно.

Традиционные испытания:



Штекер по уже обкатанной технологии:




Ну и вот, эхолот передает мне данные.



Кстати, первый трек, засканенный на 197й



Куда ж без синей изоленты?



Досвидос.

Chan
Аватара пользователя
Рыболовный фанатик
Калининград
Стаж: 6 лет 1 м 1 день
Сообщения: 6994
Ну ты монстр! :good: Ты скажи, удалось данные из Genesis Live вытащить?
Рыбачим вместе!

hans-zemmer
Аватара пользователя
Калининград
Стаж: 6 лет 5 м 18 дн
Сообщения: 267
Chan, 21 май 2023 04:27 писал(а):Ты скажи, удалось данные из Genesis Live вытащить?

Нет конечно, я не умею. :D

Rmn
Аватара пользователя
Калининград
Стаж: 8 лет 2 м 21 дн
Сообщения: 1955
Однако, не перевелись ещё Кулибины на земле нашей :shok:

Chan
Аватара пользователя
Рыболовный фанатик
Калининград
Стаж: 6 лет 1 м 1 день
Сообщения: 6994
hans-zemmer, 21 май 2023 10:39 писал(а):Нет конечно, я не умею.

Ну а чо ты тогда? Полнее данных тебе никто не даст... :unknown:
Рыбачим вместе!

Нипуханипера
Основатель
Аватара пользователя
Калининград
Стаж: 9 лет 2 м 7 дн
Сообщения: 8220
hans -zеmmer! Прошу прощения у Вас! За то что на КРК ещё, обвинял Вас в присвоении имени великого музыканта! Вы достойны присвоить любое имя, даже Джона Леннона! :)

Chan
Аватара пользователя
Рыболовный фанатик
Калининград
Стаж: 6 лет 1 м 1 день
Сообщения: 6994
Лишь бы на Элтона Джона... :D
Рыбачим вместе!

hans-zemmer
Аватара пользователя
Калининград
Стаж: 6 лет 5 м 18 дн
Сообщения: 267
Chan, 21 май 2023 17:45 писал(а):Полнее данных тебе никто не даст

Открыть чем?

Спилберг
Аватара пользователя
Оттуда
Стаж: 5 лет 6 м 7 дн
Сообщения: 205
hans-zemmer, 21 май 2023 19:19 писал(а):Открыть чем?

Есть утилита вроде GLtool называется. Вот в какой формат конвертирует не помню...

Следующая страница

Кто сейчас на сайте

Сейчас этот форум просматривают: satnavigator гости: 1