Документация Engee

Руководство по 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 для обучения с подкреплением.