/
Logrus
/
CopterControl
Обзор
Документация
Войти
/
Logrus
/
CopterControl
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
optimizer.h
40 строк
1 KB
Nikolay Nosorev
Initial commit
04 окт 2025, 16:17
04 окт 2025, 16:17
99ef28c
Код
Авторство
О чём код?
#pragma once #include "pch.h" #include "trajectory.h" #include "quadcopter.h" #include "controller.h" #include "config.h" class PIDOptimizer { private: MinimumSnapTrajectory& trajectory; double dt; // Статическая функция-обертка для NLopt static double objective_wrapper(const std::vector<double>& x, std::vector<double>& grad, void* f_data) { PIDOptimizer* optimizer = static_cast<PIDOptimizer*>(f_data); // Если grad не пуст — NLopt ожидает, что мы его заполним. // Но мы не можем → поэтому оставляем как есть, и NLopt сам сделает численный градиент. // НЕ ОЧИЩАЙТЕ grad! return optimizer->objective(x); // возвращаем только значение } // Основная целевая функция double objective(const std::vector<double>& params); public: PIDOptimizer(MinimumSnapTrajectory& trajectory, double dt = 0.01); Params optimize_BOBYQA(const Params& initial_params); Params optimize_LBFGSB(const Params& initial_params); Params optimize_LBFGS(const Params& initial_params); // Границы параметров static const std::vector<double> bounds_min; static const std::vector<double> bounds_max; };