• Kalkulator długich manewrów 5 1
Aktualna ocena:  

Autor Wątek: Kalkulator długich manewrów  (Przeczytany 15450 razy)

0 użytkowników i 1 Gość przegląda ten wątek.

Pią, 27 Cze 2014, 23:51:33

Offline Maciuś

  • Kapral
  • **
  • Wiadomości: 148
  • Reputacja: 51
    • Zobacz profil
Witam! Mam przyjemność przedstawić moją pierwszą w życiu aplikację okienkową :P Jest to napisany w Javie kalkulator dzięki któremu można precyzyjnie wykonać np. 20 minutowy manewr odlotu z planety.

Najpierw link do wersji 1.1:
Aby zobaczyć link - ZAREJESTRUJ SIĘ lub ZALOGUJ SIĘ
Uruchomienie:
Program przede wszystkim wymaga, żeby na komputerze była zainstalowana Java :P Po ściągnięciu folderu z dropboxa trzeba go rozpakować (bo ściąga się zipa) tak jak na obrazku


a potem otworzyć rozpakowany folder jak na obrazku


i zauważyć, że w środku są:

folder 'configs' - zawiera on pliki tekstowe z danym planet potrzebnymi do obliczeń
plik Jar 'calc' - podobno na większości komputerów wystarczy podwójnie kliknąć na niego, żeby się uruchomił
plik bat 'start' - jeśli klikanie na Jar-a nie działa, można uruchomić ten skrypcik, powinno zadziałać

Jeśli chodzi o tworzenie własnych configów dla innych układów planetarnych to jest to bardzo proste. Oglądając przykładowe pliki widać, że w każdej linijce jest nazwa planety, parametr grawitacyjny GM i promień w kilometrach, wszystko oddzielone spacją. Ponadto w pierwszej linijce można określić która planeta wczyta się domyślnie.

Samo okienko wygląda następująco:


Krótki opis, co gdzie jest (przykłady potem)
W górnym panelu jest możliwość wyboru układu planetarnego i obok planety (lub księżyca) nad którym wykonujemy manewr. Jest również przycisk 'Calculate' który wciskamy po wpisaniu odpowiednich danych, żeby otrzymać wynik.
W panelu poniżej mamy dane dotyczące aktualnej orbity statku - Apoapsis, Periapsis w kilometrach. W linijce poniżej mamy dane dotyczące manewru - delta-V w m/s i czas w sekundach pomiędzy manewrem a Periapsis orbity.
Poniżej po prawej stronie mamy listę stopni naszego statku. Przyciskami 'add stage' możemy dodawać kolejne stopnie a 'remove last stage' usuwa ostatni stopień. Poniżej mamy tabelkę z danym rakiety: 'Start M' to masa początkowa danego stopnia, 'End M' masa końcowa tegoż stopnia, 'Thrust' to sumaryczny ciąg danego stopnia, 'Isp' to wypadkowy impuls właściwy stopnia.
Z kolei po lewej stronie mamy wynik obliczeń. Kolejno od góry: czas trwania manewru, moment włączenia silników, moment wyłączenia silników, parametry orbity na którą wejdziemy, jej mimośród, odległość od planety w momencie wyłączenia silników, zużyte delta-v, straty wyrażone w m/s, potem w tonach paliwa, i masa końcowa statku.


No i teraz najważniejsze - jak tego używać??
Program działa jedynie dla tych manewrów które są wyłącznie 'do przodu' lub 'do tyłu', tzn nie mają żadnych składowych w kierunkach prostopadłych do płaszczyzny orbity ani w kierunku radialnym. Idea opiera się na jednym założeniu. Podczas wykonywania manewru należy kierować statek na znacznik 'prograde' a nie na ten wskazywany przez manewr. I tyle. A teraz pora na ilustrowaną instrukcję na dwóch przykładach:

Przykład 1 - odlot z kołowej orbity wokół Kerbinu
Wybieramy odpowiedni układ planetarny - 'stock kerbol' w tym wypadku oraz później planetę 'Kerbin'. Na początek wpisujemy Apoapsis i Periapsis orbity. Nie ma tu co szaleć z nadmierną dokładnością, jeśli nie różnią się one o więcej niż jakieś 10% można spokojnie uznać orbitę za kołową i wziąć ich średnią wartość. Następnie trzeba rzucić okiem na masę pojazdu.


Jak już zaplanujemy nasz manewr wpisujemy jego wartość do programu. Sprawdzamy również jakie są parametry silnika (ciąg i impuls właściwy), żeby móc je również wpisać.


Po uzupełnieniu danych zerkamy na program czy jakiś danych nie brakuje. Jak widać 'Time from Pe' jest domyślnie ustawione na 0, bo na kołowej orbicie nie ma znaczenia gdzie w stosunku do Periapsis jest manewr. Nie trzeba więc tego ruszać. Ponadto nic nie wspominałem na razie o masie końcowej rakiety. Jeśli mamy pewność, że paliwa nie zabraknie można to pole zostawić puste - program domyślnie przyjmie 1t dla obliczeń. Skoro już mamy wszystko, klikamy 'Calculate' i obserwujemy wynik.


Ustawiamy naszą rakietę w kierunku 'prograde' tak jak na screenie i czekamy. Program wyliczył, że 'burn start' powinien nastąpić w -1:57, oznacza to, że musimy uruchomić silniki na 1 minutę i 57 sekund przed manewrem. W praktyce, wciskanie shifta i zwiększenie ciągu od 0 do 100% trwa jakieś 2 sekundy, więc zaczynamy już w 1:58.


Po minięciu manewru nie kasujemy go!! Tylko lecimy dalej pamiętając, żeby cały czas kierować rakietę na 'prograde'.


Program wyliczył, że  'burn end' ma nastąpić w +2:05 czyli trzeba wyłączyć silniki 2 minuty i 5 sekund po manewrze. Dlatego nie należało kasować manewru, żeby móc teraz zobaczyć ten czas.


Porównujemy orbity, docelową i uzyskaną pod kątem zgodności. Tym razem nasz pilotaż był prawie idealny.


Przykład drugi - odlot z eliptycznej orbity wokół Kerbinu
Nie będę jeszcze raz pisał tak szczegółowo. Wpisujemy Apoapsis, Periapsis i masę.


Ustawiamy manewr 1500m/s, który jak pokazują strzałki, następuje 2 minuty po Periapsis. Oznacza to, że w programie 'Time from Pe' dajemy 120. Gdyby manewr był przed Periapsis, byłoby -120.


Sprawdzamy silnik - ciąg 60kN, impuls właściwy 800s.


Po wprowadzeniu danych do kalkulatora otrzymujemy wyniki.


Odpalamy silnik 3 minuty i 5 sekund przed manewrem.


A wyłączamy 4 minuty i 10 sekund po.


I jak widać tym razem nie wykonałem tego manewru wystarczająco dokładnie :( stąd orbity docelowe i uzyskane nie pokrywają się całkowicie, ale na ogół można to skorygować chwilę później bardzo niewielkim kosztem.


Mam nadzieję, że wytłumaczyłem zrozumiale :) Ponieważ programik może wydawać się upierdliwy (to całe wpisywanie danych), podaję kilka informacji:
Po pierwsze - program służy do liczenia długich manewrów, długich tzn. porównywalnych z okresem orbitalnym i w dodatku umiejscowionych nisko w polu grawitacyjnym. Żeby nikomu nie przyszło do głowy używać mojego programu do manewrów np. na orbicie okołosłonecznej, albo 70 tys. kilometrów nad Kerbinem. Krótkie manewry spokojnie można wykonywać symetrycznie tzn. zacząć na 5 minut przed, skończyć 5 minut po (dla odpalenia trwającego 10 minut) i to zresztą wam program wyliczy :P
Po drugie - nie zawsze manewr wyjdzie idealnie. Jest to spowodowane częściowo niedokładnym wykonaniem przez użytkownika :P No i niewykluczone, że program rozwiązuje równania ruchu rakiety dokładniej niż samo KSP, no a na to już nic nie poradzę. Co do innych błędów - które może się pojawią, może nie - ich natura jest póki co nieznana.
Po trzecie - w przypadku wielostopniowych rakiet, program zakłada, że zużyte stopnie są odrzucane natychmiastowo. Jednak myślę, że prawie zawsze transfery wykonuje się jednym stopniem.

Kilka ciekawostek na koniec, lub jak kto woli wniosków po napisaniu programu.
W przypadku odlotu z planety, statek nie wejdzie na identyczną orbitę jak ta docelowa. Program liczy tak, żeby rakieta weszła na orbitę o tej samej energii i skierowanej w tym samym kierunku (czyli równolegle też może być).
W przypadku eliptycznych orbit, program powinien wyliczyć sytuację, w której Apoapsis orbity jest dokładnie tam gdzie powinno być.
W zasadzie wpisanie ujemnego delta-V - czyli hamowanie - też powinno działać. Wtedy oczywiście należy kierować statek na 'retrograde'. Trzeba jedynie mieć na uwadze, że nie każdy manewr hamowania da się w ten sposób wykonać, program może zwrócić jakieś głupie wyniki (choć coś tam dopisałem, żeby się w tym orientował).
Z przyczyn praktycznych, program działa liczy jedynie manewry krótsze niż 24h :P
I najciekawsza rzecz - straty. Okazuje się, że mając niski TWR w kosmosie, na wykonywaniu odpaleń traci się trochę paliwa. Jest to jednak nieliniowa funkcja ze względu na czas trwania manewru tzn. dzieląc manewr na dwie części, łączne straty będą mniejsze niż gdybyśmy polecieli 'na raz'

Czekam na komentarze, że coś nie działa, że badziewne, że źle liczy, że cośtam i ogólnie wszelki feedback mile widziany :)

Licencja

Aby zobaczyć link - ZAREJESTRUJ SIĘ lub ZALOGUJ SIĘ
« Ostatnia zmiana: Pon, 08 Gru 2014, 02:40:12 wysłana przez Maciuś »

Sob, 28 Cze 2014, 17:51:17
Odpowiedź #1

Offline DragonsNightmare

  • Sierżant
  • ****
  • Wiadomości: 505
  • Reputacja: 8
    • Zobacz profil
W połączeniu z kalkulatorem transferowym to może być naprawdę potężne narzędzie, brawo za program. Że też sam nie wpadłem na napisanie czegoś takiego, ale teraz już nie musze  :) Duży plus za multiplatformowość, to cecha którą uwielbiam  ;) Zawsze miałem conieco problemów z prawidłowym wybraniem miejsca dużego manewru, a teraz rozwiązałeś moje problemy. Napewno skorzystam w przyszłym locie sondy do Eeloo, zobaczymy jak się sprawdzi.

Reklama

Odp: Kalkulator długich manewrów
« Odpowiedź #1 dnia: Sob, 28 Cze 2014, 17:51:17 »

Śro, 02 Lip 2014, 01:53:16
Odpowiedź #2

Offline Robson

  • Sierżant
  • ****
  • Wiadomości: 421
  • Reputacja: 22
    • Zobacz profil
    • Opowieści Kerbali
Ja zazwyczaj robię jedno podejście do jednego lotu. Jak nie wyjdzie, to misja ratunkowa albo przemówienie do narodu: „Zrządzeniem losu kerbale, którzy wyruszyli na Mun, by w pokoju go badać, pozostaną na nim, by spocząć w pokoju. Ci dzielni kerbale, wiedzą, że nie ma już dla nich nadziei na ratunek. Ale wiedzą też, że z ich ofiary płynie nadzieja dla całej kerbalości. "
Dlatego z otwartymi ręcyma ramionami, witam tego oto pomagacza do planowania manewrów niedalekoplanetarnych ;)
Robson Kerman - Profesor Orbitologii Teoretycznej. Zabójca Piwo Grillsa Kermana zwanego Niedźwiedziem z Eve.
Jego oficjalnym guru jest Sobol - budowniczy wspaniałych części rakiet.

Śro, 02 Lip 2014, 08:35:13
Odpowiedź #3

Offline ShookTea

  • Plutonowy
  • ***
  • Wiadomości: 370
  • Reputacja: 20
    • Zobacz profil
Kochany mój <3

Mam kilka, hmm, uwag?
1. Uwaga do wszystkich, tak na wszelki wypadek: Nigdy nie piszemy "jest błąd", raczej "coś robię źle". Jeśli napiszecie pierwsze i okaże się, że błędu nie ma, a wy coś zrobiliście źle, programista może być wkurzony, a jeśli napiszecie drugie i okaże się, że jest błąd, możecie nawet oberwać przeprosinami :D
2. Uwaga do cię, Maciuś - Licencja - sam zapominam często to robić, ale skoro publikujesz tutaj takie coś, to powinniśmy wiedzieć, czy możemy np. publikować dalej, czy podawać autora, itd.

Dzisiaj, gdy istnieje tyle licencji, głupotą byłoby pisać własną, dlatego też chciałem ci przedstawić kilka propozycji (wybrałem je ze względu na to, że podałeś program za darmo, a to ogranicza liczbę licencji):

CC-BY, CC-BY-SA, CC-BY-NC, CC-BY-ND, CC-BY-SA-NC i CC-BY-NC-ND to najpopularniejsze kombinacje licencji Creative Commons. Oznaczenia:

BY - Wolno kopiować, rozprowadzać, przedstawiać i wykonywać objęty prawem autorskim utwór oraz opracowane na jego podstawie utwory zależne pod warunkiem, że zostanie przywołane nazwisko autora pierwowzoru.

NC - Wolno kopiować, rozprowadzać, przedstawiać i wykonywać objęty prawem autorskim utwór oraz opracowane na jego podstawie utwory zależne jedynie do celów niekomercyjnych.

SA - Wolno rozprowadzać utwory zależne jedynie na licencji identycznej do tej, na jakiej udostępniono utwór oryginalny.

ND - Wolno kopiować, rozprowadzać, przedstawiać i wykonywać utwór jedynie w jego oryginalnej postaci – tworzenie utworów zależnych nie jest dozwolone.


Dalej, z bardziej "wolnych", jest GNU-GPL, dająca 4 podstawowe wolności:
0 - wolność uruchamiania programu w dowolnym celu (spełniona!)
1 - wolność analizowania, jak program działa i dostosowywania go do swoich potrzeb (poprzez plik configs - spełniona!)
2 - wolność rozpowszechniania niezmodyfikowanej kopii programu (czy można upubliczniać twój program dalej?)
3 - wolność udoskonalania programu i publicznego rozpowszechniania własnych ulepszeń, dzięki czemu może z nich skorzystać cała społeczność (innymi słowy, udostępnienie kodu źródłowego i pozwolenie innym ludziom na modyfikacje i publikacje)

Problem z GNU-GPL polega na tzw. licencji wirusowej - program bądź biblioteka GNU-GPL może współpracować z innymi programami/bibliotekami tylko wtedy, gdy również są w GNU-GPL. To ograniczenie znosi licencja GNU-LGPL.


3. Używaszli GitHub/SourceForge/innego serwera VCS opartego na Git? Jeśli tak, nie będziesz miał mi za złe, jeśli poproszę o np. link, bym mógł pooglądać kod? :D

Reklama

Odp: Kalkulator długich manewrów
« Odpowiedź #3 dnia: Śro, 02 Lip 2014, 08:35:13 »

Śro, 02 Lip 2014, 16:26:10
Odpowiedź #4

Offline DragonsNightmare

  • Sierżant
  • ****
  • Wiadomości: 505
  • Reputacja: 8
    • Zobacz profil
@UP: Dla tak małego programu chyba nie ma większego sensu zakładać github czy inne repozytoria. A co do licencji, to autor niech poprostu da Freeware i spokój, to chyba najprostsze rozwiązanie. Creative Commons to raczej są do utworów, do programów się średnio nadają.

A co jak jednak rakieta do manewru ma stopnie? Mam 4 silniki atomowe i gdzieś w połowie manewru dwa zostają odrzucone i rakieta dalej leci na dwóch.
« Ostatnia zmiana: Śro, 02 Lip 2014, 16:30:21 wysłana przez kamils096 »

Czw, 03 Lip 2014, 08:41:34
Odpowiedź #5

Offline ShookTea

  • Plutonowy
  • ***
  • Wiadomości: 370
  • Reputacja: 20
    • Zobacz profil
"Dla tak małego programu chyba nie ma większego sensu zakładać github czy inne repozytoria." - jest sens, zawsze, nawet właśnie dla małych programów. Zdarzało mi się nawet zakładać repozytoria dla rzeczy niebędących w ogóle programami, a zwykłymi folderami z dokumentami - w razie konieczności formatowania komputera, użycia plików na innym komputerze lub odzyskiwania starszych wersji w razie błędów zakładanie repo jest idealne.

I skąd wiesz, że to mały program? Bo ma małe okienko? Bo mało waży? Bo mało robi? Kodu nie widziałeś.



Freeware mamy w tej chwili, ale... podaj definicję utworu? Bo według polskiego prawa autorskiego, utworem są również dzieła wyrażone słowem, symbolami matematycznymi i znakami graficznymi, pod co podlegają nie tylko literatura, ale również programy komputerowe.
Dopóki w danej licencji nie będzie wyraźnie napisane "utwór muzyczny", "utwór filmowy" itd., licencja może dotyczyć wszystkich utworów.

Reklama

Odp: Kalkulator długich manewrów
« Odpowiedź #5 dnia: Czw, 03 Lip 2014, 08:41:34 »

Czw, 03 Lip 2014, 16:51:46
Odpowiedź #6

Offline DragonsNightmare

  • Sierżant
  • ****
  • Wiadomości: 505
  • Reputacja: 8
    • Zobacz profil
@UP: Bez obrazy, naprawdę doceniam pracę autora i program mi się podoba, ale to jest program ładujący dane z pliku i wykonujący kilka obliczeń - to naprawdę nie jest duży program. Wielkość programu oceniam po możliwościach, nie po rozmiarze czy innych. Żeby nie było, że czepiam się autora - uważam, że małe programy potrafią czasami dużo dopomóc i ułatwić roboty(sam kiedyś pisałem sobie takie proste narzędzia do ułatwienia pracy - niby to były programiki na 5min roboty, ale za to jak dużo mi ułatwiały), ale to nie jest wcale duży program. A zresztą github to raczej dla otwartych projektów - skąd wiadomo, że autor będzie chciał udostępnić kod źródłowy? A co do Creative Commons - powiedz, ile widziałeś programów na tej licencji - bo ja żadnego, a widziałem już sporo muzyki na tej licencji. Do programów są naprawdę lepsze licencje, polecam poczytać, bo jest w czym przebierać.
« Ostatnia zmiana: Czw, 03 Lip 2014, 16:54:41 wysłana przez kamils096 »

Pon, 08 Gru 2014, 02:42:16
Odpowiedź #7

Offline Maciuś

  • Kapral
  • **
  • Wiadomości: 148
  • Reputacja: 51
    • Zobacz profil
Trochę to trwało, ale zrobiłem wersję 1.1 mojego kalkulatora. Poprawiłem w niej kilka drobnych błędów GUI, i kilka poważniejszych związanych z samymi obliczeniami. Teraz to wszystko działa idealnie :D

Reklama

Odp: Kalkulator długich manewrów
« Odpowiedź #7 dnia: Pon, 08 Gru 2014, 02:42:16 »

Pon, 08 Gru 2014, 08:15:58
Odpowiedź #8

Offline KubaAseph

  • Kapral
  • **
  • Wiadomości: 230
  • Reputacja: 17
  • 卐卐卐卐卐卐卐
    • Zobacz profil
Przydatny program, ale u mnie ciągłe minimalizowanie KSP w celu wpisania wartości kończy się crashem. Poza tym potrafi niestety mniej od stockowych manewrów (przy których odpalamu silniki gdy est. burn = czas do maneuver node). Ale gratulacje za wysiłek. Myślisz o wersji na Androida?

Pon, 08 Gru 2014, 10:41:37
Odpowiedź #9

Offline Kadaf

  • Kapitan
  • ***
  • Wiadomości: 1 362
  • Reputacja: 145
    • Zobacz profil
To jest kalkulator DŁUGICH manerwów Kuba. I w tym przewyższa stockowy system, bo nie opiera się na punkcie manewrowym właśnie. A po co minimalizujesz Kerbale? Wystarczy mieć je odpalone w oknie i wówczas nie ma żadnych problemów.

Reklama

Odp: Kalkulator długich manewrów
« Odpowiedź #9 dnia: Pon, 08 Gru 2014, 10:41:37 »

Pon, 08 Gru 2014, 16:19:14
Odpowiedź #10

Offline DragonsNightmare

  • Sierżant
  • ****
  • Wiadomości: 505
  • Reputacja: 8
    • Zobacz profil
Wersja na Androida byłaby świetna. Na Androida pisze się w Javie, więc nie będziesz musiał się uczyć nowego języka. Nie jest mocno trudne pisanie na Androida, myślę, że powinieneś spróbować(oczywiście jak masz urządzenie z tym systemem), bo naprawdę byłoby to przydatne. Nie musiałbym minimalizować czy chować kerbali, bym mógł wszystko na smartfonie wpisać i odczytywać z niego wartości.

Pon, 08 Gru 2014, 16:53:11
Odpowiedź #11

Offline Maciuś

  • Kapral
  • **
  • Wiadomości: 148
  • Reputacja: 51
    • Zobacz profil
Nie przyszło mi do głowy, że ktoś może chcieć androidową wersję tego programiku :P Ale mogę zobaczyć co da się zrobić

Reklama

Odp: Kalkulator długich manewrów
« Odpowiedź #11 dnia: Pon, 08 Gru 2014, 16:53:11 »