Сила тяжести модели в планетарной системе

Образцовый обзор

Этот пример показывает, как моделировать управляемые силой тяжести орбиты главных тел солнечной системы. Модель обрабатывает солнце и планеты как совершенные сферы каждый с тремя переводными степенями свободы. Вращение планеты проигнорировано. Поля тяготения генерируют силы, которые сохраняют планеты в орбите.

Твердые блоки представляют тела солнечной системы и обеспечивают их конфигурации, инерцию и цвета. Декартовы Объединенные блоки задают степени свободы тел относительно мирового кадра, расположенного в барицентре солнечной системы. Блоки Поля тяготения добавляют силы дальние, ответственные за изгиб начальных траекторий планеты на закрытые эллиптические орбиты.

Декартовы Объединенные блоки обеспечивают начальные состояния — положения и скорости — солнца и планет относительно мирового кадра. Начальные состояния соответствуют настройке солнечной системы 20-го июня 2016. Они получены от эфемеридных баз данных, сохраняемых Лабораторией реактивного движения (JPL).

Можно запросить базы данных через систему Горизонтов JPL с помощью интерфейса telnet или сети. Пользователи Aerospace Toolbox могут альтернативно получить эфемеридные данные в командной строке MATLAB® с помощью функции planetEphemeris после установки Космического Эфемеридного пакета Информационной поддержки.

Шаг 1: запустите новую модель

Откройте шаблон модели Simscape™ Multibody™ и удалите все ненужные блоки. Измените настройки силы тяжести так, чтобы можно было добавить поля тяготения в модель. Результат обеспечивает отправную точку для модели солнечной системы.

  1. В подсказке команды MATLAB введите smnew. MATLAB открывает образцовый шаблон с обычно используемыми блоками и подходящими настройками решателя для моделей Simscape Multibody.

  2. Сократите все кроме Настройки Механизма, Настройки Решателя и Мировых блоков Кадра. Эти три блока предоставляют модели настройки силы тяжести, настройки решателя и глобальный кадр ссылки инерции.

  3. В диалоговом окне Блока Configuration Механизма, набор Uniform Gravity к None. Эта установка позволяет силе тяжести модели как сила закона обратных квадратов с помощью блоков Поля тяготения вместо этого.

Шаг 2: добавьте тела солнечной системы

Представляйте тела солнечной системы с помощью Твердых блоков. Задайте геометрию и параметры инерции с точки зрения переменных MATLAB и инициализируйте эти переменные в рабочем пространстве модели с помощью Model Explorer. Переменные являются структурами данных, названными в честь тел солнечной системы с помощью капитализации имени собственного.

Соедините и сконфигурируйте твердые блоки

  1. Добавьте в модель девять Твердых блоков от библиотеки Body Elements. Блоки представляют солнце и восемь известных планет.

  2. Соедините и назовите блоки как показано в фигуре. Разветвленная строка связи кадра между мировым кадром и планетами делает их твердо соединенными и совпадающими на пробеле. Вы позже изменяете это условие с помощью Декартовых Объединенных блоков.

  3. В диалоговых окнах блока Solid, набор Geometry> параметр Shape к Sphere и Inertia> параметр Based on к Mass. Установка параметра инерции позволяет вам задать твердую массу непосредственно так, чтобы можно было масштабировать формы планеты, не влияя на образцовую динамику.

  4. Задайте следующие Твердые параметры блоков с точки зрения полей структуры данных MATLAB. Введите имена полей в формат Structure.Field, где Structure является именем случая заголовка тела солнечной системы, и Field является строкой, показанной в таблице — например, Sun.R или Earth.RGB.

    Параметры блоковПолевая строка
    Geometry> RadiusR
    Inertia> MassM
    Graphic> Visual Properties> ColorRGB

    Вы позже задаете новые поля структуры в рабочем пространстве модели с помощью Model Explorer.

Добавьте основательный код инициализации свойства

  1. В панели меню Simulink® выберите Tools> Model Explorer.

  2. В панели Иерархии модели Model Explorer расширьте узел для своей модели и выберите Model Workspace. Панель Иерархии модели находится на левой стороне.

  3. В панели Рабочего пространства модели Model Explorer, набор Data Source к MATLAB Code. Панель Рабочего пространства модели находится на правой стороне.

  4. В поле MATLAB Code добавьте код инициализации для свойств тела солнца и планеты. Код организован в разделы, названные в честь тел солнечной системы. Вы позже добавляете данные об исходном положении и скорости в эти разделы.

    % All values are in SI units.
    % RGB color vectors are on a normalized 0-1 scale.
    % Body dimensions are scaled for visualization purposes. 
    % Scaling has no impact on model dynamics.
    
    % Scaling
    SunScaling = 0.5e2;
    TerrestrialPlanetScaling = 1.2e3;
    GasGiantScaling = 2.5e2;
    
    % Sun
    Sun.M = 1.99e30;
    Sun.R = 6.96e8*SunScaling;
    Sun.RGB = [1 0.5 0];
    
    % Mercury
    Mercury.M =3.30e23;
    Mercury.R = 2.44e6*TerrestrialPlanetScaling;
    Mercury.RGB = [0.5 0.5 0.5];
    
    % Venus
    Venus.M = 4.87e24;
    Venus.R = 6.05e6*TerrestrialPlanetScaling;
    Venus.RGB = [1 0.9 0];
    
    % Earth
    Earth.M = 5.97e24;
    Earth.R = 6.05e6*TerrestrialPlanetScaling;
    Earth.RGB = [0.3 0.6 0.8];
    
    % Mars
    Mars.M = 6.42e23;
    Mars.R = 3.39e6*TerrestrialPlanetScaling;
    Mars.RGB = [0.6 0.2 0.4];
    
    % Jupiter
    Jupiter.M = 1.90e27;
    Jupiter.R = 6.99e7*GasGiantScaling;
    Jupiter.RGB = [0.6 0 0.3];
    
    % Saturn
    Saturn.M = 5.68e26;
    Saturn.R = 5.82e7*GasGiantScaling;
    Saturn.RGB = [1 1 0];
    
    % Uranus
    Uranus.M = 8.68e25;
    Uranus.R = 2.54e7*GasGiantScaling;
    Uranus.RGB = [0.3 0.8 0.8];
    
    % Neptune
    Neptune.M = 1.02e26;
    Neptune.R = 2.46e7*GasGiantScaling;
    Neptune.RGB = [0.1 0.7 0.8];
    

  5. Нажмите Reinitialize from Source.

Твердые блоки теперь имеют все числовые данные, они должны представить формы планеты и цвета. Попытайтесь открыть диалоговое окно блока Solid и проверьте, что сфера теперь появляется в твердой панели визуализации.

Заземлите серьезную визуализацию

Шаг 3: добавьте степени свободы

Добавьте три переводных степени свободы между барицентром солнечной системы и каждым телом солнечной системы с помощью Декартовых Объединенных блоков. Вы дальнейшее использование эти блоки, чтобы задать исходные положения и скорости тел солнечной системы.

  1. Добавьте в модель девять Декартовых Объединенных блоков от библиотеки Joints. Блоки обеспечивают переводные степени свободы солнца и восьми известных планет.

  2. Соедините и назовите блоки как показано в фигуре. Если вы помещаете блок в существующую строку связи, программное обеспечение Simscape Multibody автоматически соединяет блок с той строкой. Инвертируйте и поверните объединенные блоки, чтобы гарантировать, что Твердые блоки соединяют только с последователем (F) порты кадра.

    Солнце и планеты твердо больше не соединяются. Они могут теперь перевести друг относительно друга. Они являются, однако, все еще совпадающими на пробеле. Чтобы разместить их в различных исходных положениях и дать им начальные скорости, необходимо задать объединенные цели состояния.

Шаг 4: добавьте цели начального состояния

Задайте начальные состояния солнца и планеты с точки зрения переменных MATLAB с помощью Декартовых Объединенных блоков в модели. Затем инициализируйте новые переменные MATLAB в рабочем пространстве модели с помощью Model Explorer. Вы задаете переменные MATLAB как новые поля в существующих структурах данных.

Сконфигурируйте декартовы объединенные блоки

  1. В диалоговых окнах блока Cartesian Joint проверяйте флажки State Targets> Specify Position Target и State Targets> Specify Velocity Target на эти X, Y, и призматические объединенные примитивы Z. Эти настройки позволяют вам задать желаемые начальные состояния солнца и планет.

  2. Задайте Декартовы Объединенные целевые значения состояния для этих X, Y, и призматические объединенные примитивы Z с точки зрения полей структуры MATLAB. Введите имена полей в формат Structure.Field, где Structure является именем случая заголовка тела солнечной системы, и Field является строкой, показанной в таблице — например, Sun.Px или Earth.Vz.

    Соедините примитивную осьЦель состоянияПолевая строка
    X ПоложениеPx
    СкоростьVx
    Y ПоложениеPy
    СкоростьVy
    Z ПоложениеPz
    СкоростьVz

    Вы позже задаете новые поля структуры в рабочем пространстве модели с помощью Model Explorer.

Добавьте целевой код инициализации состояния

  1. В панели меню Simulink выберите Tools> Model Explorer.

  2. В панели Иерархии модели Mechanics Explorer расширьте узел для своей модели и выберите Model Workspace. Панель Иерархии модели находится на левой стороне.

  3. В панели Рабочего пространства модели Model Explorer, набор Data Source к MATLAB Code. Панель Рабочего пространства модели находится на правой стороне.

  4. В поле MATLAB Code добавьте код инициализации для объединенных целей состояния. Новый код, отображенный синим, состоит из компонентов положения и скорости, полученных из эфемеридных баз данных JPL. Можно скопировать только новый код или заменить целый код рабочего пространства модели на показанный.

    % All values are in SI units.
    % RGB color vectors are on a normalized 0-1 scale.
    % Body dimensions are scaled for visualization purposes. 
    % Scaling has no impact on model dynamics.
    
    % Scaling
    SunScaling = 0.5e2;
    TerrestrialPlanetScaling = 1.2e3;
    GasGiantScaling = 2.5e2;
    
    % Sun
    Sun.M = 1.99e30;
    Sun.R = 6.96e8*SunScaling;
    Sun.RGB = [1 0.5 0];
    Sun.Px = 5.5850e+08; 
    Sun.Py = 5.5850e+08;
    Sun.Pz = 5.5850e+08;
    Sun.Vx = -1.4663;
    Sun.Vy = 11.1238;
    Sun.Vz = 4.8370;
    
    % Mercury
    Mercury.M =3.30e23;
    Mercury.R = 2.44e6*TerrestrialPlanetScaling;
    Mercury.RGB = [0.5 0.5 0.5];
    Mercury.Px = 5.1979e+10; 
    Mercury.Py = 7.6928e+09;
    Mercury.Pz = -1.2845e+09;
    Mercury.Vx = -1.5205e+04;
    Mercury.Vy = 4.4189e+04;
    Mercury.Vz = 2.5180e+04;
    
    % Venus
    Venus.M = 4.87e24;
    Venus.R = 6.05e6*TerrestrialPlanetScaling;
    Venus.RGB = [1 0.9 0];
    Venus.Px = -1.5041e+10; 
    Venus.Py = 9.7080e+10;
    Venus.Pz = 4.4635e+10;
    Venus.Vx = -3.4770e+04;
    Venus.Vy = -5.5933e+03;
    Venus.Vz = -316.8994;
    
    % Earth
    Earth.M = 5.97e24;
    Earth.R = 6.05e6*TerrestrialPlanetScaling;
    Earth.RGB = [0.3 0.6 0.8];
    Earth.Px = -1.1506e+09; 
    Earth.Py = -1.3910e+11;
    Earth.Pz = -6.0330e+10;
    Earth.Vx = 2.9288e+04;
    Earth.Vy = -398.5759;
    Earth.Vz = -172.5873;
    
    % Mars
    Mars.M = 6.42e23;
    Mars.R = 3.39e6*TerrestrialPlanetScaling;
    Mars.RGB = [0.6 0.2 0.4];
    Mars.Px = -4.8883e+10; 
    Mars.Py = -1.9686e+11;
    Mars.Pz = -8.8994e+10;
    Mars.Vx = 2.4533e+04;
    Mars.Vy = -2.7622e+03;
    Mars.Vz = -1.9295e+03;
    
    % Jupiter
    Jupiter.M = 1.90e27;
    Jupiter.R = 6.99e7*GasGiantScaling;
    Jupiter.RGB = [0.6 0 0.3];
    Jupiter.Px = -8.1142e+11; 
    Jupiter.Py = 4.5462e+10;
    Jupiter.Pz = 3.9229e+10;
    Jupiter.Vx = -1.0724e+03;
    Jupiter.Vy = -1.1422e+04;
    Jupiter.Vz = -4.8696e+03;
    
    % Saturn
    Saturn.M = 5.68e26;
    Saturn.R = 5.82e7*GasGiantScaling;
    Saturn.RGB = [1 1 0];
    Saturn.Px = -4.2780e+11; 
    Saturn.Py = -1.3353e+12;
    Saturn.Pz = -5.3311e+11;
    Saturn.Vx = 8.7288e+03;
    Saturn.Vy = -2.4369e+03;
    Saturn.Vz = -1.3824e+03;
    
    % Uranus
    Uranus.M = 8.68e25;
    Uranus.R = 2.54e7*GasGiantScaling;
    Uranus.RGB = [0.3 0.8 0.8];
    Uranus.Px = 2.7878e+12; 
    Uranus.Py = 9.9509e+11;
    Uranus.Pz = 3.9639e+08;
    Uranus.Vx = -2.4913e+03;
    Uranus.Vy = 5.5197e+03;
    Uranus.Vz = 2.4527e+03;
    
    % Neptune
    Neptune.M = 1.02e26;
    Neptune.R = 2.46e7*GasGiantScaling;
    Neptune.RGB = [0.1 0.7 0.8];
    Neptune.Px = 4.2097e+12; 
    Neptune.Py = -1.3834e+12;
    Neptune.Pz = -6.7105e+11;
    Neptune.Vx = 1.8271e+03;
    Neptune.Vy = 4.7731e+03;
    Neptune.Vz = 1.9082e+03;

  5. Нажмите Reinitialize from Source.

    Модель теперь имеет числовые данные, это должно собрать планеты в координатах положения, полученных из баз данных JPL. Однако симуляция модели в этой точке показала бы планеты, перемещающиеся в прямолинейные траектории. Чтобы получить эллиптические орбиты, необходимо завершить модель путем добавления полей тяготения солнца и планеты.

Шаг 5: добавьте поля тяготения

Смоделируйте гравитацию каждого тела солнечной системы с помощью блока Gravitational Field. Этот блок автоматически вычисляет гравитацию тела на всех других телах с помощью закона Ньютона универсальной гравитации.

  1. В каждом диалоговом окне блока Solid расширьте область Frames и нажмите кнопку Create.

  2. Установите параметр Frame Name на R2 и нажмите кнопку Save. Новый кадр является точной копией ссылочного кадра, но имеет отдельный порт кадра. Можно использовать эти порты, чтобы соединить блоки поля тяготения при предотвращении пересеченных строк связи.

  3. Добавьте в модель девять блоков Поля тяготения от библиотеки Forces и Torques. Блоки предоставляют гравитационным силам, которые каждое тело солнечной системы проявляет на всех других телах.

  4. Соедините и назовите блоки как показано в фигуре. Гарантируйте, что блоки соединяются непосредственно с Твердыми блоками. Такая связь гарантирует, что поля сосредоточены на твердых сферах и твердо соединены с ними.

  5. В блоках Поля тяготения задайте параметр Mass как имена полей структуры MATLAB. Введите имена полей в формат Structure.Field, где Structure является именем случая заголовка тела солнечной системы, и Field является строкой M — например, Sun.M или Earth.M. Эти поля были ранее заданы в рабочем пространстве модели.

Шаг 6: сконфигурируйте и запустите симуляцию

Сконфигурируйте настройки решателя Simulink, чтобы получить десять наземных оборотов в одной симуляции. Затем моделируйте модель и просмотрите получившуюся анимацию солнечной системы. Сконфигурируйте настройки анимации, чтобы проигрывать десятилетнюю анимацию в период нескольких секунд.

Сконфигурируйте настройки решателя

  1. В панели меню Simulink выберите Simulation> Model Configuration Parameters.

  2. Установите параметр Stop time на 10*365*24*60*60. Этот номер, равный десяти годам в секундах, позволяет вам моделировать все десять земель обороты с 20-го июня 2016 до 20-го июня 2026.

  3. Установите параметр Max step size на 24*60*60. Этот номер, равный одному дню в секундах, является достаточно маленьким, чтобы обеспечить результаты плавной анимации. Увеличьте это число, если вы предпочитаете более быстрые результаты симуляции.

Обновите и моделируйте модель

Обновите блок-схему, например, путем выбора Simulation> Update Diagram. Mechanics Explorer открывается статическим 3-D отображением модели в ее начальном состоянии. Проверяйте, что солнце и планеты появляются в панели визуализации и что их относительные размерности и положения разумны.

Запустите симуляцию, например, путем выбора Simulation> Run. Mechanics Explorer проигрывает анимацию солнечной системы. Обратите внимание на то, что при основной скорости воспроизведения по умолчанию, планеты кажутся статичными. Необходимо увеличить эту скорость в настройках анимации Mechanics Explorer.

Сконфигурируйте настройки анимации

  1. В Mechanics Explorer выберите Tools> Animation Settings.

  2. В Base(1X) Playback Speed введите 3153600. Эта скорость соответствует одному наземному обороту каждые десять секунд.

  3. Приостановите и проигрывайте анимацию, чтобы применить новую основную скорость воспроизведения. Данные показывают результаты анимации на новой скорости.

Откройте модель в качестве примера

Можно открыть полную модель солнечной системы путем ввода smdoc_solar_system_wfield_b в подсказке команды MATLAB.