Вычисление факта набора высоты
|
|
PROSVETOV | Дата: Четверг, 05.01.2012, 04:17 | Сообщение # 1 |
Группа: Удаленные
| Вопрос такого плана: есть ли в стандартном наборе переменных такая, которая показывала бы динамику изменения высоты в плане "подъём/спуск"? Единственное что приходит в голову, это завести вторую переменную высоты и вычислять дельту с текущей высотой, обновляя эту новую переменную. Если дельта в минусе - тогда подъём, если в плюсе - то спуск. Но что-то как-то это не совсем по уму мне кажется.
|
|
| |
СМИРНОВЪ | Дата: Четверг, 05.01.2012, 04:17 | Сообщение # 2 |
Генерал-полковник
Группа: Персонал
Сообщений: 398
Награды: 0
Репутация: 40
Замечания: 0%
Статус: Не в сети
| По в/с???
Все пропьем, но Аэрофлот, не опозорим никогда!
|
|
| |
PROSVETOV | Дата: Четверг, 05.01.2012, 04:18 | Сообщение # 3 |
Группа: Удаленные
| Что делать при показаниях 0,5 м/с или -0,5 м/с в результате влияния погодных условий на эшелоне, тоже расценивать как спуск/подъём?
|
|
| |
СМИРНОВЪ | Дата: Четверг, 05.01.2012, 04:19 | Сообщение # 4 |
Генерал-полковник
Группа: Персонал
Сообщений: 398
Награды: 0
Репутация: 40
Замечания: 0%
Статус: Не в сети
| Условия в смысле СВ, воздушные ямы....
Все пропьем, но Аэрофлот, не опозорим никогда!
|
|
| |
PROSVETOV | Дата: Четверг, 05.01.2012, 04:20 | Сообщение # 5 |
Группа: Удаленные
| Мне наверное следовало бы для начала объяснить цель моего первоначального вопроса или разъяснить более понятно. Мне надо отличать фазы полёта друг от друга. Взлёт-посадку можно более-менее отделить от непосредственно полёта, но вот сам полёта на эшелоне надо как-то отделить от моментов подъёма и спуска. Т.е. допустим систематическое уменьшение высоты можно считать за спуск, смену высоты в пределах +/- в определённом отрезке времени нельзя относить ни к спуску, ни к подъёму. Вот я и спросил, есть ли в симе такое, что-бы свой огород не городить. Задача решаема, тем более своим способом я решил её давно, но сомнения в правильности и оправданости этого способа тоже есть. И просьба, без однозначных предложений и встречных вопросов. Если что-то не понятно - я разъясню.
|
|
| |
СМИРНОВЪ | Дата: Четверг, 05.01.2012, 04:21 | Сообщение # 6 |
Генерал-полковник
Группа: Персонал
Сообщений: 398
Награды: 0
Репутация: 40
Замечания: 0%
Статус: Не в сети
| Quote (PROSVETOV) Мне наверное следовало бы для начала объяснить цель моего первоначального вопроса или разъяснить более понятно. Мне надо отличать фазы полёта друг от друга. Взлёт-посадку можно более-менее отделить от непосредственно полёта, но вот сам полёта на эшелоне надо как-то отделить от моментов подъёма и спуска. Т.е. допустим систематическое уменьшение высоты можно считать за спуск, смену высоты в пределах +/- в определённом отрезке времени нельзя относить ни к спуску, ни к подъёму. Вот я и спросил, есть ли в симе такое, что-бы свой огород не городить. Задача решаема, тем более своим способом я решил её давно, но сомнения в правильности и оправданости этого способа тоже есть. И просьба, без однозначных предложений и встречных вопросов. Если что-то не понятно - я разъясню. Ну вы конкретно ввели в заблуждение.
Все пропьем, но Аэрофлот, не опозорим никогда!
|
|
| |
Матрос | Дата: Четверг, 05.01.2012, 04:22 | Сообщение # 7 |
Генералиссимус
Группа: Персонал
Сообщений: 503
Награды: 0
Репутация: 287
Замечания: 0%
Статус: Не в сети
| 1. Используем VERTICAL SPEED. Вроде пашет нормально. Если не нравится, то считаешь сам первую производную от высоты и сглаживаешь ее (см. далее про производную и сглаживание).
2. Если, для каких либо вычислений или для отображения тебе нужно более сглаженное значение (мешают быстрые колебания) - ставь фильтр, по другому - инерциальное звено. [/code]// В инициализации: вертикалка = 0; ... // В реализации:
новое_значение = get_...(); вертикалка = вертикалка + Кф * (новое_значение - вертикалка);Code
Если хочешь уменьшить значение производной (скорость изменения вертикальной скорости) на половину, то Кф = 0,5. Это очевидно.
в некоторых случаях требуется привязываться к системному времени: // В инициализации: вертикалка = 0; ... // В реализации: новое_значение = get_...(); вертикалка = вертикалка + Кф * (новое_значение - вертикалка) / (elapsed_seconds - elapsed_seconds_old); elapsed_seconds_old = elapsed_seconds;[code] (elapsed_seconds понятно откуда берем. Думаю, что ты знаешь, что ELAPSED_SECONDS - переменная вещественного типа и дельта ELAPSED_SECONDS между тиками, будет составлять миллисекунды)
Касаемо твоего случая, можно подобрать Кф таким маленьким, что на выходе фильтра ты получишь точную тенденцию к снижению или набору или к ровному полету. На выходе можно еще поставить компаратор и подобрать нужный порог срабатывания. После фильтрации, на выходе компаратора ты получишь устойчивый 1, 0, -1, необходимые для твоего случая.
Привет всем, кто из Ярославля!
|
|
| |