Тема «Карты глубин. Путь самурая.»
Сообщений: 30
• Страница 1 из 2 • 1, 2
18 май 2023 21:53
Желание иметь у себя карты глубин водоемов заставило меня однажды встать с дивана и сходить в магазин за пивом.
Идея была простая: обработать около миллиона точек сканирования с эхолотов и превратить их в понятную глазу картинку. Коллеги по увлечению, которые подарили мне точки для опытов, выгодно отличались от меня наличием совершенных приборов-структурников с поддержкой карт. Мне же предстояла задача посложнее - получить карты на экране смартфона. Всегда использую защищенный смартфон в лодке как навигатор. Многим знаком навигатор Locus. Я им пользуюсь давно, поэтому и выбор пал на него. Те карты, которые имелись на тот момент, не устраивали в корне. Это были карты Навионикс, честно спижж..ые из SAS-планеты в смартфон в то время, когда они были еще доступны: Да, какие-то изобаты, цифры с глубиной.. Для морских рыбалок в Янтарном, в принципе, сгодится как ориентир. Но душа хотела хардкора, чтобы каждая кочка была на экране. Программы-рисовалки типа Риф-мастера и пр. тоже не понравились, результат похож на Навионикс. Я взял то, что было под рукой - разработка заграничных умельцев: Автокад. Так уж сложилось, что это мой рабочий инструмент. Более того, я пошёл дальше и начал некоторое время назад его модифицировать и усовершенствовать, писать для него программы и разные интересные штуки. Тут уж сам Бог велел. Итак, что мы имеем.. 1000 000 точек.. Как, мать их, засунуть в Locus? Если сжать несколько месяцев неспешных вечеров за компом в одну картинку, то вот. Результат обработки сканирования участка верхнего озера (сверху мой результат обработки точек, снизу - сторонняя программа): Но это все равно картинка, не привязанная к координатам. Пришлось решать много задач. Первая из них - Земля круглая, а экран квадратный. Ну серьезно, длина градусов по параллелям зависит от широты. На нашей широте 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. Можно, конечно, купить нормальный прибор, загрузить покупные карты.. С'ка.. они даже теперь выход NMEA не делают, сраные буржуи. Ну а что.. народ доволен. Кнопку нажал. "Дайте мне эхолот, чтоб судока показывал. У меня есть сотка. Хватит?". Короче, народ, не жопьтесь, накидайте треков. Один хрен жжёте топливо и треки потом не используете. Формат вон как на первой картинке. Цифры.. Эх, столько данных пропадает..
18 май 2023 22:10
Ничего не понятно, но ооочень интересно.
Если нужны бета-тесты на других устройствах э, я согласен
18 май 2023 23:02
Титаническая работа! Очень рад, что такие люди есть среди нас
19 май 2023 09:23
Офигеть!!!
Следил за темой еще на СК. Это пипец какой объем работы! aZimut eVerest 405 + suZuki DF9.9BS
19 май 2023 09:58
Непостижимо начиная с полуфабриката, который лично для меня не проще, чем космос. И очевидно, что без хорошей карты глубины мозга, подобное не создать Я хороший человек, кому не нравится, гуляйте лесом
19 май 2023 10:23
Хорошо, что у меня нет лодки, а то пришлось бы начать в этом пытаться разбираться
"Чумачедшая" работа проделана и действительно круто! И это всё после 1 банки пива?
19 май 2023 13:30
Сначала рейлинги, потом лодка...
21 май 2023 01:46
Однажды первые пазлы головоломки сложились, миллион точек закончился и нужно было где-то брать новые. Долго тянул кота за яйца, всё ходил вокруг да около, сомневался, присматривался.. Не к эхолоту на "судока", нет. Микроконтроллер! Камень. Чип. Основа основ современного мира. Программирование микроконтроллеров - это ппц какая интересная тема. От простого к сложному, изучаешь, ищешь решения, обтекаешь на профильных форумах. Все это приводит к закономерному результату: критическая масса проб и ошибок накапливается, скорлупа лопается и вылупляется очередное чудо инженерной мысли. В моем случае всё понятно. Есть координаты, есть глубина, лепи их вместе и знай себе попивай пивко и посматривай в карту. Легко сказать, а вот реализовать.. Начинал с нуля. Ни теории, ни практики. Микрочип - кусок пластика с ножками. Ну как с нуля, паяльник держать умею, как работает резистор знаю. С остальным разобрался, вроде. Итак. В наличии эхолот Humminbird PiranhaMax 197c DI. На тыльной стороне 3 выхода: питание, датчик и какой-то 3й. Интересные дела.. Думаю, если есть выход, значит и данные можно получить. Связывался с московским представительством, где мне корректно объяснили, что данные из эхолота мне не получить ну и на хер послали заодно. Помог мне в этом вопросе Александр Gro-AL. Известный в определённых кругах эхолотчик, тиранозавр электроники. Вскрыл дядьСаша мне прибор, на место непонятных контактов непонятного порта подключили 3 провода: массу, выход ультразвуковых посылок и выход с усилителя принятых сигналов. Теперь можно было определить, когда эхолот посылает в воду импульс, когда принимает отраженный сигнал и какой он амплитуды. Посчитать глубину теперь плёвое дело: Засекаем время, когда вышла посылка, ловим отраженные сигналы, определяем самый мощный - думаем, что это дно, а не подводная гамняшка - умножаем на скорость звука в воде, делим пополам и получаем искомую глубину. Далее была нужна первая часть трехмерных координат поверхности дна на планете Земля, а именно широта и долгота. В этом мне помогла плата на базе Arduino на микроконтроллере ATmega328: 32 кБ памяти для программ (это примерно глава из Гарри Поттера по объему, может немного больше), 2 кБ оперативки. Смех, да? Где-то 200-250 рублей в Кетае. К плате были подключены: GPS-антенна и слот для карты памяти микро SD. Эхолот связывал с платой через самодельный шнур. Платить 2 тыщи за покупной жаба задушила. Самое трудно было сделать штекер для хитрого порта. Помогла мне тут детская 3D-ручка. Это как 3D-принтер, только ручной. В качестве контактов - стоматологическая проволока из нержавейки. Другой конец - обычный аудио джек 3.5 мм. С корпусом особо мудрить не стал. Выбрал водонепроницаемый котлетный бокс. Он и сейчас жив и надежно выполняет свою функцию. Питание сделал от пауэрбанка. Первые тестовые выезды показали много существенных ошибок и недоработок. Оказывается, нельзя просто так взять, открыть файл с координатами, записать новые, закрыть файл. Через секунду снова и через секунду то же самое. Так я убил несколько флешек и потерял много времени на воде и данных, прежде чем нашел ответ на то, почему плата виснет, флешки глючат и теряют данные. До обидного доходило: катаешься несколько часов на рыбалке, проходишь несколько километров трека, жмешь кнопку "сохранить", а оно зависает. И все, ты понимаешь, что данные потеряны. Оказывается, флешки имеют весьма ограниченное количество циклов записи. Нужно делать буфер данных, причем большой буфер, а потом одним махом записывать буфер на флешку. Полез в интернеты. Нашел чип оперативной памяти на 8 Мб. Это он уже на конвертере логических уровней. Вон та маленькая черная хрень в середине размером 3х3 мм. Если писать по одной точке каждые 5 метров, то памяти этого чипа хватит примерно на 1300 км пути. Долго возюкался с фильтром GPS-координат. Начитался. Навигаторы, трекеры и пр. лабуда - все используют фильтры. Нарисовалась новая проблема: эта оперативка никак не хотела работать на одной плате вместе с картой памяти. Пришлось мастырить вторую плату: на первой работает карта памяти и эхолот, на второй - оперативка. Опять же, если зависает первая плата, ее можно перезагрузить без потери данных. Платы соединяются между собой, грубо говоря, по сети. МикроЛАН, ёпрст. Вроде помогло, вылеты практически пропали, данные летают с одной платы на другую. Неудобно пользоваться пауэрбанком. Куча лишних проводов, можно выдернуть случайно и тю тю точечки. Внедрил литиевую батарею размером 20650 на 5 ампер-часов. Хватает примерно на сутки бесперерывной работы. Все это, конечно, хорошо.. А позырить цифры? Заказал двухстрочный ЖК-экран. На морозе не работает. Жидкие кристаллы становятся твёрдыми. Корпус из вспененного ПВХ, как обычно, + оргстекло. Вот сравниваю корректность определения глубины. Видно, что эхолот после 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й Куда ж без синей изоленты? Досвидос.
21 май 2023 04:27
Ну ты монстр! Ты скажи, удалось данные из Genesis Live вытащить?
Рыбачим вместе!
21 май 2023 10:39
Нет конечно, я не умею.
21 май 2023 13:19
Однако, не перевелись ещё Кулибины на земле нашей
21 май 2023 17:45
Ну а чо ты тогда? Полнее данных тебе никто не даст... Рыбачим вместе!
21 май 2023 18:37
hans -zеmmer! Прошу прощения у Вас! За то что на КРК ещё, обвинял Вас в присвоении имени великого музыканта! Вы достойны присвоить любое имя, даже Джона Леннона!
21 май 2023 19:28
Есть утилита вроде GLtool называется. Вот в какой формат конвертирует не помню...
Сообщений: 30
• Страница 1 из 2 • 1, 2
Кто сейчас на сайтеСейчас этот форум просматривают: satnavigator гости: 1 |