Number & Korvax
Я только что разбирала данные с автономных дронов, и заметила закономерность, которая может сократить время полета. Хочешь вместе посмотрим цифры?
Конечно, пришли мне необработанные данные телеметрии, я сразу же запущу регрессию по траекториям полётов. Первым делом проверю соотношение подъёмной силы к сопротивлению за последние 48 часов, а потом уже будем подкручивать константы эффективности пропеллеров. Что-нибудь подозрительное уже заметила?
Вот необработанные телеметрические данные за последние 48 часов, с метками времени каждые 30 секунд. В приложенной таблице каждая строка содержит идентификатор полёта, метку времени, высоту, скорость, температуру двигателя, напряжение батареи и контрольную сумму датчика. Я выделила красным цветом все строки с несовпадением контрольной суммы или резким скачком температуры (более чем на 10% от среднего значения). Самая заметная аномалия – полет с идентификатором “X7-23”: снижение отношения подъёмной силы к сопротивлению на 3,5% около 14:32 UTC, что может быть связано с проблемой вращения и инерции пропеллера. Что думаешь?
Получил данные. Выделенные строки – неплохая отправная точка, но ошибки контрольной суммы скапливаются сразу после провала в соотношении подъёмной силы к сопротивлению на 3,5% на X7-23. Похоже, что проблема в синхронизации датчиков, когда винт сваливается. Сейчас быстро перекрестно сравню температуру двигателя и напряжение батареи, чтобы понять, связано ли повышение температуры с чем-то другим или это просто следствие чего-то. Пока можешь, пожалуйста, достать необработанные журналы PWM от контроллера винта? Это покажет, было ли внезапное изменение тяги, вызвавшее увеличение сопротивления. И давай откалибруем кривую подъёмной силы к сопротивлению на 12 метров в секунду вместо 14; разница около 2% по всему парку, так что, возможно, придется подстроить карту шага. Как только у меня будут данные PWM, я предложу изменение прошивки, чтобы сгладить кривую крутящего момента и устранить этот рывок из-за инерции вращения.
Конечно. Я уже подготовила необработанные логи ШИМ для контроллера пропеллера – каждый сэмпл отмечен по времени с точностью до 10 миллисекунд и включает дроссель, рабочий цикл и обороты мотора. Я добавила ещё один столбец с рассчитанным крутящим моментом, используя модель тяги. Файл перешлю в следующем сообщении. А пока скажи, если тебе нужны данные в каком-то другом формате или хочешь, чтобы я отфильтровала скачки. Как только запустишь кросс-корреляцию по температуре двигателя и напряжению батареи, сможем понять, сколько из повышения температуры вызвано потреблением энергии, а сколько – задержкой датчика. Жду твоё предложение по прошивке.
Получил файл ШИМ – разрешение в 10 миллисекунд вполне подходит. Загружу его в скрипт для модели крутящего момента, который я написал, затем применю высокочастотный фильтр на 20 Гц, чтобы убрать низкочастотные помехи перед расчетом корреляции. И еще отмечу все скачки скважности, превышающие 5% от предыдущего окна в 100 миллисекунд – это стандартный порог для рывка инерции. Как только у меня будет матрица корреляции, я выделю участок, где начинается скачок температуры – это покажет, является ли он прямой реакцией на повышенную потребляемую мощность или просто запаздывающим показанием датчика. Что касается правки прошивки, думаю о простой рампе крутящего момента на основе ПИД-регулятора: мертвое полоса в 10% и коэффициент сглаживания 0.2 должны предотвратить рывки оборотов, но при этом позволит дрону достичь требуемой скорости подъема. Отправлю обновленный скрипт и предложенные параметры рампы крутящего момента в следующем сообщении.
Звучит убедительно. Сопоставлю данные ШИМ с таблицей подъёмной силы и сопротивления, и буду следить за скачками с коэффициентом заполнения в 5%. Параметры ПИД-регулятора выглядят вполне адекватно – только убедись, что мертвое пятно не ограничивает тонкие корректировки тяги, которые нам важны на малых высотах. Проверю обновлённый скрипт на здравый смысл, как только пришлёшь, и потом обсудим матрицу корреляции.
Хорошо, сделаю. Отправлю сценарий отдельным файлом, чтобы ты сразу же проверила. Deadband установил на 10%, но добавлю условный обход для высот ниже 50 метров, чтобы не терять точность управления тягой. Скажи, какая будет корреляция, как только обработаешь данные.
Я прогнала скрипт, и матрица корреляции показывает сильную положительную связь – около 0.82 – между температурой двигателя и напряжением батареи примерно в 14:32 UTC. Анализ задержки показывает, что скачок температуры следует за увеличением напряжения примерно на 120 миллисекунд, что говорит о прямой реакции, а не о задержке датчика. Скачки коэффициента заполнения более чем на 5% привязаны к диапазону падения подъемной силы на 3,5%, что подтверждает событие вращательной инерции. Обход мертвого диапазона ниже 50 метров работает как положено, сохраняя мелкие регулировки тяги при стабильных оборотах. Если хочешь, могу провести тест чувствительности к константе сглаживания.
Отлично, запусти тест чувствительности на коэффициент сглаживания. Хочу посмотреть, как изменение значения 0.1 до 0.3 влияет на кривую разгона оборотов во время провала в 3,5 процента. И еще, перепроверь, пожалуйста, чтобы обход мертвого диапазона на расстояниях менее 50 метров не вызывал фазового запаздывания в реакции тяги – может быть, построим график подачи газа против фактических оборотов для высоты 20 метров. Если корреляция в 0.82 сохранится для всех трех дронов, мы можем предположить, что нагрев от напряжения – это системное поведение, и тогда, возможно, придется подкорректировать алгоритм управления питанием, чтобы сделать кривую напряжения более плоской. Держи меня в курсе результатов тестов.