Руководство по ControlSystems.jl
В ControlSystems.jl и других пакетах, относящихся к JuliaControl, реализованы решения для анализа и синтеза систем управления (в первую очередь линейных). Если у вас нет опыта работы с языком программирования Julia, посетите этот сайт. Если вы уже знакомы с Julia, но не с экосистемой пакетов для систем управления, дополнительные сведения см. на странице Ecosystem.
Данная документация состоит из вводного раздела под названием Introductory guide, раздела с примерами и справочного раздела по различным темам, который называется Functions.
Экосистема
JuliaControl
JuliaControl и сопутствующая экосистема включают ряд дополнительных пакетов, которые могут представлять интерес:
-
RobustAndOptimalControl.jl содержит более сложные функции для проектирования ЛКГ, глубокого анализа и синтеза, нечеткого моделирования, а также именованные системы и интерфейс для взаимодействия с DescriptorSystems.jl.
-
SymbolicControlSystems.jl содержит базовые возможности для генерирования кода на C для линейных систем.
-
ControlSystemIdentification.jl — это инструментарий для идентификации систем ЛПП с использованием данных временной или частотной области. Этот пакет позволяет на основе данных оценивать модели пространства состояний, модели передаточных функций и фильтры Калмана, которые могут применяться для расчета систем управления.
-
ControlSystemsMTK.jl — это интерфейс между ControlSystems.jl и ModelingToolkit.jl.
-
DiscretePIDs.jl содержит эталонную реализацию дискретного ПИД-регулятора в Julia, включая весовые уставки, ограничение насыщения интегратора, дифференциальную фильтрацию и мягкую передачу управления.
Описание инструментария см. также в этом документе:
Bagge Carlson, F., Fält, M., Heimerson, A., & Troeng, O. (2021). ControlSystems.jl: A Control Toolbox in Julia. In 2021 60th IEEE Conference on Decision and Control (CDC) IEEE Press. https://doi.org/10.1109/CDC45484.2021.9683403
и в вводном видеоролике с Youtube ниже, а также в следующем списке воспроизведения на Youtube, посвященном использованию Julia для систем управления.
Расширенная экосистема Julia для систем управления
Ниже приведен список пакетов, которые могут представлять интерес, из расширенной экосистемы Julia.
-
DescriptorSystems.jl содержит типы, представляющие системы пространства состояний в дескрипторной форме, то есть с матрицей масс. Они могут представлять линейные системы ДАУ и неправильные системы.
-
TrajectoryOptimization.jl — один из более развитых пакетов для оптимального управления в разомкнутом контуре и оптимизации траектории в Julia.
-
LowLevelParticleFilters.jl — это библиотека для оценки состояния с помощью фильтров частиц и фильтров Калмана различных видов.
-
ModelingToolkit.jl — это инструмент неказуального моделирования, похожий по духу на Modelica. Здесь можно посмотреть видео о совместном использовании ControlSystems и ModelingToolkit. Существует также пакет ControlSystemsMTK.jl, упрощающий совместное использование этих двух пакетов.
-
JuliaSimControl.jl — это пакет на основе экосистемы JuliaControl и ModelingToolkit, который предоставляет дополнительные методы нелинейного и грубого управления.
-
FaultDetectionTools.jl содержит вспомогательные средства и наблюдатели для обнаружения ошибок в реальном времени.
-
ReachabilityAnalysis.jl — это пакет для анализа достижимости состояний. С его помощью можно проверять свойства устойчивости и безопасности линейных и нелинейных систем.
-
MatrixEquations.jl содержит решатели для множества различных матричных уравнений, часто применяемых в системах управления. ControlSystems.jl использует этот пакет для решения уравнений Риккати и Ляпунова.
-
JuMP.jl — это язык моделирования для оптимизации, похожий на YALMIP. JuMP подходит для решения задач ЛМН и ПОП, а также сложных линейных задач УПМ.
-
SumOfSquares.jl — это пакет для программирования сумм квадратов, который построен на основе JuMP. В документации приводятся примеры поиска функций Ляпунова и нелинейного синтеза.
-
MonteCarloMeasurements.jl — это библиотека для работы с параметрической неопределенностью. Пример использования ControlSystems можно найти здесь.
-
DifferentialEquations.jl — это центральный компонент экосистемы SciML, предоставляющий решатели для научных задач. ControlSystems.jl использует эти решатели для моделирования в непрерывном времени.
-
Dojo.jl — это пакет для дифференцируемого моделирования робота.
-
StaticCompiler.jl содержит инструменты для компиляции небольших двоичных файлов с программами Julia.
-
JuliaPOMDP — это экосистема Julia для обучения с подкреплением.
-
JuliaReinforcementLearning — еще одна экосистема Julia для обучения с подкреплением.