Пишем программу для вывода логов формата CSV

AlexOrlo

В связи с последними спорами на тему эффективности набора высоты в ветке о самодельных моделях для фпв, появилась следующая мысля:
В добавок к уже имеющемуся графику эффективности и средней эффективности за весь полёт, добавить два курсора, коих можно двигать по графику.
Далее высчитывать среднюю эффективность набора высоты и пройдённой дистанции между этими курсорами. Так же в догонку можно добавить съеденную энергию\ёмкость акка, качество (только на этапах спуска с выключенным мотором). Так же с помощью этих курсоров задавать границы данных для просчёта ветра для большей точности.
Что скажете? Это кому то нужно?

ADF
AlexOrlo:

Что скажете? Это кому то нужно?

ИМХО стоит делать любые фичи, какие приходят в голову. Тем более, раз проект для обучения (хотя и для коммерческих такой подход “придумал - реализовал” не чужд).
И можно автоматически разбить всю траекторию на участки - подъёма и спуска (слегка сгладить и определить точки минимумов и максимумом по высоте, между ними и будут участки) - и сразу для каждого участка считать какие-нибудь параметры. Эффективность, качество планирования и т.д.

AlexOrlo
ADF:

И можно автоматически разбить всю траекторию на участки - подъёма и спуска (слегка сгладить и определить точки минимумов и максимумом по высоте, между ними и будут участки) - и сразу для каждого участка считать какие-нибудь параметры. Эффективность, качество планирования и т.д.

Тоже так думал… но ничего путного в голову не пришло. Так как в итоге нужно одно значение каждого параметра. А если подходящих участков несколько?
Изначально думал на счёт определения ветра. Но предположим пилот совершил два замерочных круга (Так Питлаб меряет ветер, чем грех не воспользоваться ), один на высоте 1000 метров, другой на 500. На каждой высоте разный ветер.
Какой выводить? А так, пользователь сам решает в каком диапазоне чего искать.
Конечно можно и до списка дойти в котором расписывать все найденные “участки”, но это чересчур заморочено и не наглядно, потребует очередную панель, что ещё больше загромоздит окно программы.

ADF
AlexOrlo:

Так как в итоге нужно одно значение каждого параметра. А если подходящих участков несколько?

Правильно - выводить значения отдельно для каждого участка. Поверз гравика можно сектора нарисовать и в каждом секторе подписать параметры для него.

Либо по итогу анализа всех участков, выводить минимальное, максимальное и среднее (правильнее даже среднеквадратичное) значение параметра (три числа).

AlexOrlo:

На каждой высоте разный ветер.
Какой выводить?

По аналогии с предыдущим пунктом.

AlexOrlo:

потребует очередную панель, что ещё бо…

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

AlexOrlo

Тут такое дело… что сектор может быть большой, а может и пол минуты. То есть нужно следить за размером и начинать выводить надпись с определённого масштаба по оси Х. Как раз по этой причине, не выводил названия режимов автопилота, а выводил условные обозначения.
Здесь то же самое. Допустим взять программу SeeYou, в ней тоже просчитывается разные этапы и выводится списком в отдельном окошке, что жутко не удобно, плюс ко всему у пользователя завязаны руки и он сам ничего не может проверить, а так же всё дико врёт: ошибка ветра до 90 градусов, качество от -100 до плюс 100 и прочий бред.
Можно сделать некий симбиоз, и фильтровать участки короче определённого времени, плюс считать данные по маркеру.
В любом случае маркеры должны быть. Как бы они уже есть…))
Для просчёта качества считаю “псевдо воздушную скорость” путём вычитания от вектора скорости вектор ветра, как появятся у Питлаба нормальные датчики, удалю это нафиг и буду считать просто с воздушной скоростью. То есть пока, что пользователь если хочет уточнить ветер, выбирает нужный участок, нажимает “просчитать заново ветер”. А для определения качества на нужном этапе, просто выбирает его маркерами и если ток в этом промежутке равен нулю (ну или почти), получает число (нажимать ничего не нужно, пересчёт срабатывает после отпускание кнопки мыши от ползунка маркера).
На счёт автоматизации, нужно ещё раз продумать, что б от этого была реальная польза, а не как в SeeYou - не пришей кобыле хвост.

ADF

Это большая тема - называется разработка UI. Самый простой подход - просто брать и пробовать: вывести так, вывести эдак, переделать.

И не забывать, что вывод тех или иных параметров всегда можно отдать на откуп пользователю: менюшка с настройками.

AlexOrlo

Вроде как нашёл лёгкий и в тоже время на мой взгляд наглядный способ.
В добавок к поиску эффективности подъёма и качеству по маркерам, сделать ещё два графа “моментальных” велечин. Один такой уже есть, который показывает эффективность пути, так будут ещё два. Там где условия будут не подходящими, график просто уйдёт за пределы экрана в верх.
Таким образом, станет наглядно видно где чto, плюс маркеры.

Вдобавок, сегодня открыл программу на ноутбуке и понял, что колёсика то нету, а это единственный способ обратного зума…

Plohish

А аппа у тебя не Таранис случаем?

Plohish

Я подумал было бы не плохо для разбора инцидентов совместить инфу от Питлаба и лог из Тараниса… Там есть графики положений всех органов управления…

AlexOrlo

Не, индивидуально для тараниса как то не очень… Вот если Збигнева попросить добавить логирование положений рулей, тогда да, у всех одно и тоже.

AlexOrlo

Домучил ветромер… Теперь автоматом просчитываются участки “разворотов” на которых замеряется ветер, как у Питлаба. Если замеров больше одного, создаётся раскладка по высотам. То есть если первый замер на 500м, второй на 1000, то ветер замеренный на 500м, присваивается от 0м до 500м, между 500м и 1000м пересчитывается промежуточные значения обоих замеров, 1000м и выше, присваивается ветер от замера на 1000м.
В лог-таблицу в ячейке ветер, заносится список замеров по высотам. Ну и соответственно, на панели статистики выводится ветер в зависимости от высоты в точке указателя мыши.
Если участков нет, то можно замерить старым способом и просто выбрать участок замера маркерами.

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

ADF
AlexOrlo:

Естьли такое, что б допустим вводишь сколько всего нужно цветов, и прога тебе выводит список?

Так это на лету обычно генерируется. Задаются опорные цвета и между ними путем интерполяции получается сколько надо оттенков.
Достаточно знать принципы создания цвета (RGB…) и помнить, что яркость (сумма всех компонент) с точки зрения восприятия глазом важнее, чем цвет.

AlexOrlo

Мне нужно подобрать 26 различных цветов, что бы они были различимы. Вот именно, что каждый из 26, должен быть “опорный”, иначе похожие цвета, смотрятся одинаково. То есть, есть стабильный десяток, в котором не ошибёшься, дальше начинаются проблемы.

ADF
AlexOrlo:

что каждый из 26, должен быть “опорный”, иначе похожие цвета, смотрятся одинаково.

Основных контрастных цветов всего 6, ну 8 если считать черный и белый. В случае 26 цветов - близкие оттенки неизбежны.

Но глаз все-же будет их различать - главное, чтобы на экране всегда были опорные цвета: или легенду выводить, чтобы можно было визуально сверяться с тем или иными цветом, или чтобы элементы разных цветов располагались рядом, позволяя видеть разницу между близкими оттенками путём сравнения.

AlexOrlo

Проясните моментик пожалуйста: направление ветра как я понял принято указывать, как не “куда дует”, а “от куда дует”?
То есть если указывается северный ветер, то само направление ветра с севера на юг. Меня немного парит эта неразбериха…
Как удобней показать ветер?
Допустим у меня ветер в градусах… немного муторно, допустим направления ветра 130 градусов… Я бы подумал, что это именно направление ветра, а не откуда дует.

ADF
AlexOrlo:

То есть если указывается северный ветер, то само направление ветра с севера на юг. Меня немного парит эта неразбериха.

Точно так! Название ветра - откуда дует.

Неразберихи нет: надо просто понять и принять 😃

AlexOrlo

К численному представлению ветра добавил анимированную картинку колдуна, нарисовал как смог))

AlexOrlo

Выкладываю обнову.

*Добавлены два маркера, между которыми показывается дельта (маркер Б - маркер А), между ними считается средний аэродинамический коэффициент, средняя эффективность набора, средняя путевая эффективность. Они считаются, только при условиях набора/ спуска.

*Так же эти все коэффициенты можно вывести, как графики “моментальных значений”, специально взял в скобки, так как могут придраться и сказать, что они усреднённые по времени дискретизации (одна секунда). Графики АК и эффективность набора выводится не весь, а только в подходящих этапах полёта.

*Oчередной раз потерпел изменения измеритель ветра. Как писал выше, теперь он работает в точности, как на ОСД Питлаб. При этом, если замерочных круга было несколько, то скорость и направление ветра пропорционально распространяются по всем высотам. То есть, на каждой высоте свои показания. Помимо числовых значений, добавил анимированный “колдун”, для наглядного представления ветра.

*Полностью переписал алгоритм фильтра (сглаживание графика), теперь он работает моментально + так же моментально сплайн Акима.

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

drive.google.com/open?id=0B-tFJd0x5X5xQ3YyTjJTZkNM…

26 days later
AlexOrlo

Продолжаем… Изменил управление, то есть менюшки. Меню убрал полностью, в место него поставил “тулл-бар”. Теперь все органы управления на виду. Добавил график угла атаки. Добавил управление с клавиатуры, всплывающее меню по клику правой кнопкой - в нём можно устанавливать маркеры и откатывать увеличение. Ну и по мелочи всякие курсоры, рамку при выделении правой кнопкой и тд… Ещё не выкладываю, хочу дополнить текст HELPа клавишами управления клавиатуры и весь новый функционал.
Занялся вторым этапом… потихоньку пилю элементы осд. То есть по файлу CSV анимирую псевдо OSD. Прям во время анимации, все элементы можно передвигать мышкой и менять их размер. С Этой анимации можно собрать *.mov.
Так же под анимацию можно вложить гугл карту.
Пока что всё работает без какого ли то управления

Теперь прошу помощь… если кто знает как на Java осуществить связь с ком портом, а ещё лучше с USB-HUD? В нете полно информации, но конкретики никакой.
Ещё один нюанс, выводить карту под анимацию это хорошо, но конечно же хочется вывести “как то” гугл ерз. Только представьте: На компе в реальном времени вид от первого лица в роле 3д гугл ерз + анимация всех параметров полёта.
Вот по идее куда стремлюсь.

Печалька только одна: гугл не даёт использовать гугл ерз не в проводнике, но это так же решаемо, так как в Java этот проводник можно обеспечить.
Так же если у кого, есть нароботки по вопросу с гуглом, поделитесь информацией…