Аннотация
Цели и задачи проекта
Цель:
- Создать приложение способное наглядно показать движение планет Солнечной Системы (3D модель), рассчитывать их местоположение в любое время, а также вычислять траекторию ракеты и влияния внешних и внутренних факторов на ее движение.
Задачи:
- исследовать и изучить физические законы для расчётов движений планет;
Создать метод расчета координат планетарных орбит;
- приблизить результаты расчёта местоположения планет к максимально реальным;
- создать приложение, которое будет функционировать без подключения интернета (оффлайн);
- подключить поддержку Дополненной реальности(AR);
- рассчитать траектории ракеты в зависимости от значений (mass, thrust, time, etc.)
Гипотеза:Итогое приложение сможет успешно предсказывать положения небесных тел, в частности Солнечной системы и работать с минимальными затратами на расчёт. Траектория движения космических ракет будет осуществляться в итеративном и более эффективном виде. Моделирование движения ракет даст возможность для симулирования межпланетного путешествия.
Актуальность: С каждым годом популярность вокруг изучения космоса вновь возрастает среди общества. И интерес к продуктам тематики космоса так же хорошо заметен.
Индустрия изучения космоса сейчас одна из самых быстрорастущих и проекты такие как полёты на Марс привлекают много финансов.
Новизна: Планетарные орбиты были высчитаны через математический итеративный метод который намного быстрее и менее энергозатратный чем метод с созданием отдельной физической среды. Высчитывание траекторий ракет с учётом всех внешних факторов и характеристик.
Во время поиска в сети Интернет похожих приложений, мы сумели найти схожие с нашей идеей, но все они работали только с подключением Интернета. Так же многие из них были чересчур осложненными и трудными для использования.
Этапы работы
Изучение программ для создания планетария (Python, Unity)
Изучение законов Кеплера, Ньютона и других нужных физических законов.
Создание метода расчёта координат планетарных орбит на языке программирования Python.
4. Хранение координат в Базе Данных SQLite.
5. Расчёт траекторий движения ракеты с учётом значений таких как масса, толчок, время, начальный импульс, погодные условия и т.д. На основе библиотеки RocketPy.
6. Тестирование программы при помощи собранных данных.
7. Создание среды Дополненной Реальности(AR) на базе UnityVuforia.
8.Создание программы на основе полученных данных
9. Создание 3D модели ракеты и её запуск.
Методика исследования: Исследовательская работа (изучение научных сборников, сбор визуального материала по созданию планетария, по расчёту траекторий ракетного движения и компьютерное моделирование (создание 3D модели с рассмотрением программ для создания движения и языки программирования для расчётов).
Научная и практическая ценность: Создание этого приложение базировалось на новом менее энергозатратном математическом методе расчёта планетарных орбит и также включает в себя модель траектории ракетного движения. Это в свою очередь открывает возможность для межпланетного путешествия, расширения модели и функционала.
Области применения: Планирование космических полётов и моделирование космических объектов.
Введение
“Человечество не останется вечно на Земле, но в погоне за светом и пространством сначала робко проникнет за пределы атмосферы, а затем завоюет себе все околосолнечное пространство”1. (К.Э. Циолковский)
Наука о космосе привлекают не только ученых, астрологов, но и простых людей, желающих совершить путешествие в космос. Желание проникнуть в неизведанное космическое пространство, открыть общие законы Вселенной, обнаружить следы жизни на других планетах постепенно дополняется возможностью все изучать, понять причины и следствия явлений, которые происходят в окружающем мире.
Изучение космоса, бесспорно, является очень познавательным занятием, в древние времена люди вглядывались на ночное звёздное небо и пытались разгадать загадку о происхождении Вселенной, придумывая разные мифы и легенды.
Поистине, большие прорывы в развитии изучения космоса были совершены в конце XX в. этому толчком сыграла «Космическая Гонка» между США и СССР в 1957 г., первые спутники - 1961 г., первый полёт человека в космос - 1969 г., первые люди на Луне и т.д.
По сей день, космос продолжает быть центром внимания для научных исследований и наши знания про него с каждым днём расширяются.
Вы когда-нибудь задумывались, где вы находитесь прямо сейчас? Вы, скорее всего, скажете: - «Да» и назовёте адрес здания, где вы находитесь или улицу где стоите. Но можем ли мы знать, где точно мы находимся с астрономической точки зрения? Где мы находимся, например, в сравнении с Юпитером. Думаем, многие не знают, но возможно, задумывались. И мы до этого тоже так думали и были решительны решить эту загадку.
Поэтому мы и создали это приложение, чтобы найти ответы на эти вопросы и даже больше…
Исследование
Планетарий - это научно-просветительное зрелищное учреждение – купольный театр, в котором на полусферическом экране (куполе) при помощи оптико-механических проекторов и цифровых технологий демонстрируются изображения звездного неба и космических объектов, создаются и проводятся программы о Земле и Вселенной.2
На современном этапе создаются различные планетарии, но более экономичными являются компьютерное моделирование. Одним из таких является наш проект.
Законы Кеплера о движении планет
Первая стадия работы является изучение и набор ресурсов о движении планет, для лучшего понимания законов Физики и Астрономии связанных с этим.
В астрономии законами Кеплера являются три научных закона описывающих движение планет вокруг Солнца.
Таблица. Значение свойств планет, спутников и их орбит
Рисунок 1: Иллюстрация трёх законов Кеплера через две планетные орбиты.
1. Орбиты выполнены в форме эллипса, с точками фокуса F1 и F2 для первой планеты, F1 и F3 для второй планеты. Солнце расположено на точке фокуса F1 .
2. Два заполненных сектора A1 и A2 имеют одинаковые площади и время для планеты 1 пройти сегмент A1 равняется времени для прохождения сегмента A2 .
3. Конечное орбитальное время для планеты 1 и планеты 2 соблюдают пропорцию
Мы изучали эти законы чтобы понять каким образом движутся тела.
Уравнение Кеплера
Уравнение Кеплера описывает движение тела по эллиптической орбите в задаче двух тел и имеет вид:
гдеM это средняя аномалия, E эксцентрическая аномалия, и e это эксцентричность.
Рисунок 2. Описание движения тела по эллиптической орбите
Среди численных методов решения уравнения Кеплера часто используются метод неподвижной точки («метод простой итерации») и метод Ньютона. Для эллиптического случая в методе неподвижной точки за начальное значение E0 можно взять M, а последовательные приближения имеют следующий вид:
Ek = M + esinEk−1 E0= M
E = M + e*(180/pi) * sin(M) * ( 1.0 + e * cos(M) )
Если e, эксцентричность, меньше чем 0.05-0.06, это приближение достаточно точное. Если же эксцентричность больше нужно установить E0=E а потом использовать нижеприведенную формулу:
E1 = E0 - ( E0 - e*(180/pi) * sin(E0) - M ) / ( 1 - e * cos(E0) )
гдеa - большая полуось, b - малая полуось
Рисунок 3. Описание формы эллиптической орбиты
Практическая часть
from __future__ import print_function, division
from PyAstronomy import pyasl
import math
from PIL import Image, ImageDraw
image = Image.new('RGB', (1500, 1500), 'black')
draw = ImageDraw.Draw(image)
def Ellipse(aph, per, e, t): #функция вычисляющая координаты
arr = []
r = []
ks = pyasl.MarkleyKESolver()
a = (aph + per) / 2 #вычисляем большую полуось
b = ((1 - e * e) ** 0.5) * a #вычисляем малую полуось
x0, y0, M, n = 1080, 720, 0, 1
while M < math.pi * 2:
M += (math.pi * 2) / t
anom = ks.getE(M, e) #эксцентрическаяаномалия
x = a * (math.cos(anom) - e)#вычисляем x координату
y = b * math.sin(anom) #вычисляем y координату
x1, y1 = x + x0, y + y0
r.append(x)
r.append(y)
arr.append(r)
r = []
n += 1
draw.ellipse((x1 - 1, y1 - 1, x1 + 1, y1 + 1), fill='blue', outline='blue')
xp, yp = x1 - per, y1
draw.ellipse((xp - 3, yp - 3, xp + 3, yp + 3), fill='yellow', outline='yellow')
#image.show()
print(arr)
print('a = ', a)
print('b = ', b)
С помощью алгоритмов показанных ранее, мы написали код на языке Python, который высчитывал координаты орбит, для того чтобы делить орбиту по периоду, то есть по числу земных дней в планетарных годах. Также эта программа может вывести рисунок изображающий орбиту планеты.
В качестве примера не настоящая орбита планеты, поделённая на сектора по дням, то есть мы высчитали координаты орбит в определенные дни
Рис.4.Орбита планеты
После запуска кода мы получаем массивы с координатами точек распределённых по периоду планеты.
Например, координаты для орбиты земли:
{147.03388705525575, 2.617832492984806 }, {146.9651557251924, 5.234849224769842 }, {146.8506285191565, 7.85023472723888 }, {146.69034294218986, 10.463174118285714 }, { 146.48435147923385, 13.072853394426735 }, { 146.23272157303137, 15.678459722942968 }, {145.935535595743, 18.279181733395532 }, { 145.59289081429722, 20.874209808359 }, { 145.20489934950032, 23.46273637321797 }, {144.77168812893566, 26.043956184873128 }, { 144.29339883368593, 28.61706661920409 }, { 143.77018783891714, 31.18126795713756 } …
Расчёт траекторий ракеты
Вертикальная траектория ракеты описывается высотой, скоростью и итоговой массой, функциями времени h(t), V(t), m(t). Это статичные значения ракеты. Рис. 5. показывает графики этих функций для типичной траекторий.
Рис.5
Траекторий управляются ODE(OrdinaryDifferentialEquations) которое предоставляет временное изменение каждого статичного значения. Это можно получить из описания скорости в 2 Законе Ньютона и конвертаций массы.
Итоговая сила F действующая на ракету состоит из трёх элементов: гравитационная сила, аэродинамическая сила сопротивления и толчка.
Удобный вид представления силы сопротивления (drag)
Можно связать толчок ракеты и массовый расход(propellantmassflowrate) через скорость истечения(exhaustvelocity) ue.
Оба значения mfuel и ue будут зависимы от характеристик мотора ракеты.
Используя все вышеперечисленные формулы, а также библиотеку языка программирования PythinRocketPy расчитываются траекторий ракеты.
В программу вводятся данные наклонения долготы и широты места запуска, масса ракеты и модель мотора. В качестве ракеты использовались характеристики ракеты Colisto.
Программа узнавая завтрашнюю дату, берёт информацию об атмосферных условиях в той дате и местоположений из GFS (Global Forcast System).
В результате вычисляются эти данные:
Так же выводятся графики атмосферных характеристик:
График изменения толчка мотора:
Все вышеперечисленные данные используются для высчитывания траекторий ракеты
Высчитываются так же и другие данные и значения:
Модель ракеты базирована на этих данных траекторий.
Мы ранее полученные данные координат орбит использовали для разработки мобильного приложения в среде Unity.
Unity — межплатформенная среда разработки компьютерных игр. Unity позволяет создавать приложения, работающие под более чем 20 различными операционными системами, включающими персональные компьютеры, игровые консоли, мобильные устройства, интернет-приложения и другие. Выпуск Unity состоялся в 2005 году и с того времени идёт постоянное развитие.
Основными преимуществами Unity являются наличие визуальной среды разработки, межплатформенной поддержки и модульной системы компонентов. К недостаткам относят появление сложностей при работе с многокомпонентными схемами и затруднения при подключении внешних библиотек.
Приложение для расчёта траекторий ракет и других значений при взлета ракеты с UI(User Interface) было создано с помощью графической библиотеки Python PyQt5.
Интерфейс приложения
Приложение состоит из 3D модели Солнечной системы
Имеются панели для ввода даты и по нажатию на кнопку «OK», планеты останавливаются на позициях в введенную дату.
В панели «EXPLORE» можно получить быстрый доступ к объектам модели и при нажатии узнать краткую информацию о них
Дополненная реальность — воспринимаемая смешанная реальность, создаваемая с помощью компьютера с использованием «дополненных» элементов воспринимаемой реальности, когда реальные объекты монтируются в поле восприятия. Для внедрения данной технологии мы использовали Vuforia engine в Unity.
Внедрение Дополненной Реальности (AR)
Интерфейс приложения PyQt с полями для ввода для отображающихся графиков с данными для ракетного взлёта.
Заключение
В итоге мы смогли достичь цели создания кода для эффективного расчёта и хранения координат космических орбит, расчёта траекторий ракеты, значений для взлёта. В ходе работы мы заметили что орбиты планет пусть и являются эллипсами, их форма почти не отличима от круга. Изменение погодных и атмосферных условий создавало значительные несоответствия в резултатах, что доказывает важность тщательной и детальной планировки ракетных полётов.
Приложение «AstroTravel» поддерживается на ПК и Андройд устройствах. Этот проект прост в использовании, а также имеет возможность развивать и добавлять всё больше новых элементов (функционал, космические тела). Мы определенно продолжим работу над проектом и верим в то что нам есть куда расти.
Использованная литература
1. Хилл Ф. «OpenGL. Программирование компьютерной графики. Для профессионалов». – СПб.: Питер, 2002. – 1088 с.
2. Нортроп Т., Уилдермьюс Ш., Райн Б. Основы разработки приложений на платформе Microsoft .NETFramework. Учебный курс Microsoft / Пер. с англ. – М.: «Русская Редакция», СПб.: «Питер», 2007.
3. NASA
https://nssdc.gsfc.nasa.gov/planetary/factsheet/
4. http://alpheratz.net/dynamics/twobody/KeplerIterations_summary.pdf
5. http://www.stjarnhimlen.se/comp/ppcomp.html
6. https://web.mit.edu/16.unified/www/FALL/systems/Lab_Notes/traj.pdf
7.A. E. BRYSON Jr. 1 and STANLEY E. ROSS. Optimum Rocket Trajectories With Aerodynamic Drag. Кэмбридж, 1958
8. L. M. B. C. Campos, P. J. S. Gil. On the Trajectory of Rockets in the Atmosphere. 2008
https://link.springer.com/chapter/10.1007%2F978-3-642-12110-4_119
1 Циолковский К.Э. «Космос моей жизни», издательство ACT Москва, 2016 – стр.8
2https://visit-ufa.ru/activities/detail.php?ID=366