В этом руководстве показано, как симулировать гравитационные орбиты основных тел Солнечной системы. Модель рассматривает Солнце и планеты как совершенные сферы с тремя поступательными степенями свободы. Вращение планеты игнорируется. Гравитационные поля генерируют силы, которые удерживают планеты на орбите.
Spherical Solid блоки представляют тела Солнечной системы и обеспечивают их геометрию, инерцию и цвета. Cartesian Joint блоки определяют степени свободы тел относительно мировой системы координат, расположенной в барицентре Солнечной системы. Gravitational Field блоки добавляют силы большой дальности, ответственные за изгиб начальных траекторий планеты в замкнутые эллиптические орбиты.
Блоки Декартовых Соединений обеспечивают начальные состояния - положения и скорости - Солнца и планет относительно мировой системы координат. Начальные состояния соответствуют строению Солнечной системы 20 июняth, 2016. Их источником являются базы данных ephemeris, поддерживаемые Лабораторией реактивного движения (JPL).
Можно запросить базы данных через систему JPL Horizons с помощью веб-интерфейса или интерфейса telnet. Пользователи Aerospace Toolbox могут также получить эфемеридные данные в MATLAB® с помощью командной строки planetEphemeris
функция после установки пакета поддержки Aerospace Ephemeris Data.
Откройте шаблон Simscape™ Multibody™ модели и удалите все ненужные блоки. Измените настройки силы тяжести, чтобы можно было добавить гравитационные поля к модели. Результат обеспечивает начальную точку для солнечной системной модели.
В командной строке MATLAB введите smnew
. MATLAB открывает шаблон модели с обычно используемыми блоками и подходящими настройками решателя для моделей Simscape Multibody.
Вырежьте все блоки, кроме Mechanism Configuration, Solver Configuration и World Frame. Эти три блока обеспечивают модель с настройками гравитации, настройками решателя и системы координат глобальной инерции.
В Mechanism Configuration диалогового окна блока установите Uniform Gravity равным None
. Эта настройка позволяет вам смоделировать силу тяжести как обратную квадратную силу закона, используя вместо этого блоки Gravitational Field.
Представление тел Солнечной системы с помощью блоков Spherical Solid. Задайте геометрию и параметры инерции с точки зрения Переменного MATLAB и инициализируйте эти переменные в рабочем пространстве модели с помощью Model Explorer. Переменные являются структурами данных, названными в честь тел Солнечной системы с помощью собственной капитализации.
Добавьте в модель девять блоков Spherical Solid из библиотеки Элементы. Блоки представляют Солнце и восемь известных планет.
Соедините и назовите блоки как показано на рисунке. Разветвленная линия связи между мировой системой координат и планетами делает их жестко связанными и совпадающими в пространстве. Позже вы измените это условие с помощью блоков Cartesian Joint.
В Spherical Solid диалоговых окон блока установите параметр Inertia > Based on равным Mass
. Установка параметра инерции позволяет вам задать твердую массу непосредственно, чтобы можно было масштабировать формы планеты, не влияя на динамику модели.
Задайте следующие Spherical Solid параметров блоков с точки зрения полей структуры данных MATLAB. Введите имена полей в формате Structure.Field, где Structure является названием заглавия тела Солнечной системы и Field является строкой, показанной в таблице - например, Sun.R
или Earth.RGB
.
Параметры блоков | Строка поля |
---|---|
Geometry> Radius | R |
Inertia> Mass | M |
Graphic> Visual Properties> Color | RGB |
Вы позже определите новые поля структуры в рабочем пространстве модели с помощью Model Explorer.
На вкладке Modeling нажмите Model Explorer.
На панели Иерархия модели в Model Explorer разверните узел для вашей модели и выберите Model Workspace. Панель «Иерархия модели» находится на левой оси.
На панели Рабочего пространства модели Model Explorer задайте Data Source MATLAB Code
. Панель Рабочего пространства модели находится на правой оси.
В поле 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];
Нажмите Reinitialize from Source.
Блоки Spherical Solid теперь имеют все числовые данные, необходимые для визуализации форм и цветов планеты. Попробуйте открыть диалоговое окно Spherical Solid блока и проверьте, что сфера теперь появится на твердотельной панели визуализации.
Визуализация твердого тела Земли
Добавьте три поступательные степени свободы между барицентром Солнечной системы и каждым телом Солнечной системы с помощью Cartesian Joint блоков. Вы позже используете эти блоки, чтобы задать начальные положения и скорости тел Солнечной системы.
Добавьте в модель девять блоков Cartesian Joint из библиотеки Joints. Блоки обеспечивают поступательные степени свободы Солнца и восьми известных планет.
Соедините и назовите блоки как показано на рисунке. Если вы помещаете блок на существующую линию соединения, программа Simscape Multibody автоматически соединяет блок с этой линией. Разверните и поверните блоки соединений, чтобы убедиться, что блоки Spherical Solid соединяются только с портами последующей системы координат (F).
Солнце и планеты больше не связаны жестко. Теперь они могут перемещаться относительно друг друга. Однако они все еще совпадают в пространстве. Чтобы поместить их в различные начальные положения и задать им начальные скорости, необходимо задать положения шарниров.
Задайте начальные состояния Солнца и планеты в терминах переменного MATLAB, используя блоки Декартовых Соединений в вашей модели. Затем инициализируйте новые переменный MATLAB в рабочем пространстве модели с помощью Model Explorer. Вы определяете Переменный MATLAB как новые поля в существующих структурах данных.
В Cartesian Joint диалоговых окон блока установите флажки State Targets > Specify Position Target и State Targets > Specify Velocity Target для призматических примитивов X, Y и Z. Эти настройки позволяют вам задать желаемые начальные состояния Солнца и планет.
Задайте Cartesian Joint состояния целевые значения для призматических примитивов X, Y и Z в терминах структурных полей MATLAB. Введите имена полей в формате Structure.Field, где Structure является названием заглавия тела Солнечной системы и Field является строкой, показанной в таблице - например, Sun.Px
или Earth.Vz
.
Примитивная ось соединения | Конечный объект состояния | Строка поля |
---|---|---|
X | Положение | Px |
Скорость | Vx | |
Y | Положение | Py |
Скорость | Vy | |
Z | Положение | Pz |
Скорость | Vz |
Вы позже определите новые поля структуры в рабочем пространстве модели с помощью Model Explorer.
На вкладке Modeling нажмите Model Explorer.
На панели Иерархия модели Mechanics Explorer разверните узел для модели и выберите Model Workspace. Панель «Иерархия модели» находится на левой оси.
На панели Рабочего пространства модели Model Explorer задайте Data Source MATLAB Code
. Панель Рабочего пространства модели находится на правой оси.
В поле MATLAB Code добавьте код инициализации для положений шарниров. Новый код, показанный синим цветом, состоит из компонентов положения и скорости, полученных из баз данных JPL ephemeris. Можно скопировать только новый код или заменить весь код рабочего пространства модели на показанный.
% 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;
Нажмите Reinitialize from Source.
Модель теперь имеет числовые данные, необходимые для сборки планет в координаты положения, полученные из баз данных JPL. Однако симуляция модели в этой точке покажет планеты, движущиеся по прямолинейным траекториям. Чтобы получить эллиптические орбиты, необходимо завершить модель, добавив Солнце и гравитационные поля планеты.
Моделируйте гравитационное притяжение каждого тела Солнечной системы с помощью блока Gravitational Field. Этот блок автоматически вычисляет гравитационное притяжение тела на все другие тела, используя закон Ньютона универсального тяготения.
В каждом < reservedrangesplaceholder2 > диалоговом окне блока разверните область Frames и нажмите кнопку Create.
Установите параметр Frame Name равным R2
и нажмите кнопку Save. Новая система координат является точной копией системы координат, но имеет отдельный порт системы координат. Можно использовать эти порты, чтобы соединить блоки гравитационного поля, избегая пересеченных линий соединения.
Добавьте в модель девять блоков Gravitational Field из библиотеки Forces и Torques. Блоки обеспечивают гравитационные силы, которые каждое тело Солнечной системы оказывает на все другие тела.
Соедините и назовите блоки как показано на рисунке. Убедитесь, что блоки соединяются непосредственно с блоками Spherical Solid. Такое соединение обеспечивает центрирование полей на твердых сферах и их твердое соединение.
В блоках Gravitational Field задайте параметр Mass как имена структурных полей MATLAB. Введите имена полей в формате Structure.Field, где Structure является названием заглавия тела Солнечной системы и Field является строкой M
— например, Sun.M
или Earth.M
. Эти поля были ранее определены в рабочем пространстве модели.
Сконфигурируйте Simulink® настройки решателя, чтобы захватить десять оборотов Земли в одной симуляции. Затем симулируйте модель и просмотрите полученную анимацию о Солнечной системе. Настройте параметры анимации, чтобы воспроизвести десятилетнюю анимацию в течение нескольких секунд.
Откройте параметры конфигурации. На вкладке Modeling нажмите Model Settings.
Установите параметр Stop time равным 10*365*24*60*60
. Это число, равное десяти годам в секундах, позволяет моделировать полные десять оборотов Земли от 20 июняth, 2016 - 20 июняth, 2026.
Установите параметр Max step size равным 24*60*60
. Это число, равное одному дню в секундах, достаточно мало, чтобы обеспечить плавность результатов анимации. Увеличьте это число, если вы предпочитаете более быстрые результаты симуляции.
Обновите блок. На вкладке Modeling нажмите Update Model. В Mechanics Explorer откроется статическое 3-D отображение модели в ее начальном состоянии. Проверяйте, что Солнце и планеты появляются на панели визуализации и что их относительные размерности и положения разумны.
Запустите симуляцию.. Mechanics Explorer играет анимацию Солнечной системы. Обратите внимание, что при номинальной скорости воспроизведения планеты появляются статическими. Эту скорость необходимо увеличить в настройках анимации Mechanics Explorer.
В Mechanics Explorer выберите Tools > Animation Settings.
В Base(1X) Playback Speed введите 3153600
. Эта скорость соответствует одному земному обороту каждые десять секунд.
Приостановите и воспроизведите анимацию, чтобы применить новую базовую скорость воспроизведения. Рисунок показывает результаты анимации с новой скоростью.
Можно открыть полную солнечную системную модель, введя smdoc_solar_system_wfield_b
в командной строке MATLAB.