Board index FlightGear Support Tools OpenRadar

OpenRadar special use for especific space missions

OpenRadar is a standalone radar screen which connects to the FlightGear multiplayer servers. It is currently being developed.

OpenRadar special use for especific space missions

Postby Michat » Wed Feb 25, 2015 7:28 pm

Hi.
Here I come in order to request help-expertise ideas, in how to resolve a unusual control situation for especific space missions in OpenRadar.

Preamble.
Dear HerbyW user has implemented orbit-space missions flights with SpaceShuttle, he provides Antonov 225 Mriya with SpaceShuttle, main tank, and rockets Transport , Antonov 22 and Antonov 12 too. Because is a free project it is open to everyone. So I'm tryng to help, testing aircrafts, documenting wiki page, and so on. The way I can.

The problem-limitation.
Trying to control Departures of the SpaceShuttle, due to the high speed we get out of scope very quickly. Also is difficult to control a rentry that is coming very fast in the FG-OR tile. Maybe we need more tile path loaded in OR sector.
Another tactical problem-limitation is that we have roughly 14-15 airports-bases in the FG Space Program network that we wish to monitorize, in two ways: by a general global map (Impostor no data or few (paralel, medirian, and so on); with-and sectors where if I click I get into an usual Open radar especific sector and mission control area.
Another problem is how to monitorize and discriminate our Aircrafts, x-planes, SpaceShuttle, Rockects planes and SpaceShuttle Parts from the MP list. in order to see the real state of our fleet.

Of course there are other aspects that change from FGPilot to FGAstronaut under Mission Center Control, sometimes our GS is too large: ), so we use mach, m/s Distance KM and so on. So also numbers should change.

I wish to know your personal oppinion as a maintainer of the Openradar and human ape with family. Could you help us a little to get out of the Space dear Wagner?

I wish to show you our work in progress in the wiki but there is a 402 error, doesn't matter. Best is tro try it https://github.com/HerbyW/Antonov-Aircrafts

Thanks you for your efforts in OR.

Michat
Last edited by Michat on Sat Feb 28, 2015 12:30 pm, edited 1 time in total.
User avatar
Michat
 
Posts: 1007
Joined: Mon Jan 25, 2010 6:24 pm
Location: Spain
Version: 191b
OS: GNewSense

Re: OpenRadar special use for especific space missions

Postby wagnerw » Thu Feb 26, 2015 6:25 am

Hi Michat,

I wonder if such a scenario would require completely different control application, maybe comparable to something used at NASA.
Only the final approach and the landing will be monitored via normal ATC equipment.

Such a complete conversion/extention of OR for space mission would produce so much complexity, that someone should implement a separate targeted application for that. We need to keep OR maintain-able.

Wolfram
wagnerw
 
Posts: 283
Joined: Tue Nov 06, 2012 8:35 pm
Callsign: D-W794

Re: OpenRadar special use for especific space missions

Postby wlbragg » Thu Feb 26, 2015 8:56 am

Dear HerbyW user has implemented orbit-space missions flights with SpaceShuttle, he provides Antonov 225 Mriya with SpaceShuttle, main tank, and rockets Transport ,

Michat and HerbyW,

That is one heck of a ride. :D

I can't thank you enough for putting this out there for download.

Really well done.

You need anything I can contribute, please let me know.
Kansas(2-27-15)/Ohio/Midwest scenery development.
KEQA (2-27-15), 3AU, KRCP Airport Layout
Intel i5 3570K AMDRX480
User avatar
wlbragg
 
Posts: 5239
Joined: Sat Aug 25, 2012 11:31 pm
Location: Kansas (Tornado Alley), USA
Callsign: WC2020
Version: next
OS: Win10/Linux/AMDRX480

Re: OpenRadar special use for especific space missions

Postby Michat » Sat Feb 28, 2015 1:18 pm

@wagnerw
For the moment we can't afford a control application like NASA does but a global impostor (background map) will be enough.
Understanding the complexity you mention, now I'm thinking if is better to use simple httd:8080 browser representation map that can solve our spacecraft position with a callsign-aircraft filter.
Our desire to communicate our limitations have been accomplished and of couse everyone wellcome to this project, @wlbragg just visit our FlightGear Space Program WIKI http://wiki.flightgear.org/FlightGear_space_program, there is a short list of career/jobs, join in or create a new activity in what you can help. For better help coordination we use mumble.allfex.org. I'll be out today, but you can contact to Herbyw there.

Thanks you FG'ers
User avatar
Michat
 
Posts: 1007
Joined: Mon Jan 25, 2010 6:24 pm
Location: Spain
Version: 191b
OS: GNewSense

Re: OpenRadar special use for especific space missions

Postby Thorsten » Sat Feb 28, 2015 3:38 pm

The visuals are sort of cool...

Image

Image

... but the flight dynamics really needs work. I made the thing somehow rise for 250 km without slowing down my ground track velocity noticeably before I gave up.

Vostok actually works with the dynamics of a spacecraft, so FG can do it properly - not sure why the shuttle FDM screws up ballistic flight in vacuum.
Thorsten
 
Posts: 11470
Joined: Mon Nov 02, 2009 8:33 am

Re: OpenRadar special use for especific space missions

Postby Hooray » Sat Feb 28, 2015 4:46 pm

wagnerw wrote in Thu Feb 26, 2015 6:25 am:I wonder if such a scenario would require completely different control application, maybe comparable to something used at NASA.
Only the final approach and the landing will be monitored via normal ATC equipment.

Such a complete conversion/extention of OR for space mission would produce so much complexity, that someone should implement a separate targeted application for that. We need to keep OR maintain-able.



Agreed, you could simply use a simple Nasal-space GUI dialog/window using Canvas to render arbitrary maps, positions etc.
You may want to start a wiki article detailing exactly your requirements - but I'd guess that ~70% of your requirements can be easily satisfied using an in-app, Nasal/Canvas-based, GUI showing various combinations of maps as overlays as well as arbitrary symbology for your aircraft etc

Making the whole thing respond to GUI events (mouse, keyboard etc) can also be easily implemented using event listeners.
Please don't send support requests by PM, instead post your questions on the forum so that all users can contribute and benefit
Thanks & all the best,
Hooray
Help write next month's newsletter !
pui2canvas | MapStructure | Canvas Development | Programming resources
Hooray
 
Posts: 11606
Joined: Tue Mar 25, 2008 8:40 am

Re: OpenRadar special use for especific space missions

Postby Michat » Mon Mar 02, 2015 7:25 pm

Howdy FG'ers, thank your for feedback.

@Thorsten. Model looks good, however user Flirefly corfirms my initial suspect watching the delta foil shape. NASA is kidding us. Luckily Firefly confirms it and the wing model has been modified in order to host new landing gear that as I see in your photo you have deploy ( those 3 light under), but now is available in the model, with help file updated.

About FDM, I'm not the most indicated person here to talk about it. SpaceShuttle can experiment problems in altitude higher that 200.000 ft. We know that Vostok-1 by Vitos can resolve 3 stages, but we can't afford a very expensive solution because 99% of the FG users don't have a computer that could satify such high computation model.

@Hooray. The point that concerned to me here is how ATC are browsing us. When I said http:8080 I was thinking in an auxiliary screen that can satify ATC Global view with some aircraft-airport network filtering. For internal map visualization, we have no special idea-preference. User could use the map he wants, but I think we'll don't provide any special-custom map.

However we want to use canvas for our interactive information system, I'll be very happy to open a new topic in the forum and expose info-examples to the wiki, so there I hope count with your help, expertise and contributions.

The project is open to everyone.

Thanks you.
User avatar
Michat
 
Posts: 1007
Joined: Mon Jan 25, 2010 6:24 pm
Location: Spain
Version: 191b
OS: GNewSense

Re: OpenRadar special use for especific space missions

Postby Thorsten » Tue Mar 03, 2015 6:28 am

About FDM, I'm not the most indicated person here to talk about it. SpaceShuttle can experiment problems in altitude higher that 200.000 ft. We know that Vostok-1 by Vitos can resolve 3 stages, but we can't afford a very expensive solution because 99% of the FG users don't have a computer that could satify such high computation model.


Huh? The FDM isn't what's expensive about Vostok - it's the high polygon count of the model. Any cellphone could compute the FDM these days, computers 20 years ago were fast enough to do that part of the simulation. So please don't give me some lines of nonsense about the insane performance needs.

The problem with the Space Shuttle FDM seems to be that the real thing uses thrust vectoring of the main engine and an RCS to maneuver on ascent, not aerodynamical controls. Of course you have problems if you try to control things aerodynamically above 200.000 ft... And of course if you use a default AP logic in space where the dynamics is completely different, it's going to have some trouble coping.

Well, that's my two cents - if you want to be serious with the space program, fix flight dynamics first. Vostok should demonstrate how it can be done (the 3rd stage maneuvers perfectly well at 300 km altitude during ascent).
Thorsten
 
Posts: 11470
Joined: Mon Nov 02, 2009 8:33 am

Re: OpenRadar special use for especific space missions

Postby Thorsten » Wed Apr 15, 2015 11:39 am

In case you people are still interested - this

Image

may be useful (world map with historic and predicted groundtrack, showing landing site and spacecraft position) and could be adapted to your mission control.

Code is posted below, you need to supply inclination and orbital period - just use standard orbital dynamics formulae from Wikipedia. No warranties.



Code: Select all
var sym_shuttle = {};
var sym_landing_site = {};
var graph = {};
var samples = [];
var history = [];
var track_prediction = [];

var update_loop_flag = 0;


var lat_to_m = 110952.0; # latitude degrees to meters
var m_to_lat = 9.01290648208234e-06; # meters to latitude degrees
var lon_to_m = 0.0; # needs to be calculated dynamically
var m_to_lon = 0.0; # we do this on startup


var delete_from_vector = func(vec, index) {

var n = index+1;

var vec_end = subvec(vec, n);

setsize(vec, n-1);
return vec~vec_end;   
}

var calc_geo = func(lat) {

lon_to_m  = math.cos(lat*math.pi/180.0) * lat_to_m;
m_to_lon = 1.0/lon_to_m;
}


var lat_to_y = func (lat) {

return 200.0 - lat /90. * 200.0;

}

var lon_to_x = func (lon) {

return 400.0 + lon /180. * 400.0;

}

var create_map = func {

var window = canvas.Window.new([800,400],"dialog").set("title", "Trajectory Map");

# we need to explicitly re-define this to get a handle to stop the update loop
# upon closing the window

window.del = func()
{
  #print("Cleaning up...\n");
  update_loop_flag = 0;
  call(canvas.Window.del, [], me);
};


var mapCanvas = window.createCanvas().set("background", canvas.style.getColor("bg_color"));

var root = mapCanvas.createGroup();


var path = "Aircraft/SpaceShuttle/Dialogs/MapOfEarth.png";
var child=root.createChild("image")
                                   .setFile( path )
                                   .setTranslation(0,0)
                                   .setSize(800,400);
sym_shuttle = mapCanvas.createGroup();
canvas.parsesvg(sym_shuttle, "/Nasal/canvas/map/Images/boeingAirplane.svg");
sym_shuttle.setScale(0.2);

sym_landing_site = mapCanvas.createGroup();
canvas.parsesvg(sym_landing_site, "/gui/dialogs/images/ndb_symbol.svg");
sym_landing_site.setScale(0.6);

graph = root.createChild("group");



update_loop_flag = 1;
map_update();


}


var map_update = func {

if (update_loop_flag == 0 ) {return;}

var lat = getprop("/position/latitude-deg");
var lon = getprop("/position/longitude-deg");

var x =  lon_to_x(lon);
var y =  lat_to_y(lat);


var heading = getprop("/orientation/heading-deg") * 3.1415/180.0;

sym_shuttle.setTranslation(x,y);
sym_shuttle.setRotation(heading);

x = lon_to_x(landing_site.lon()) - 10.0;
y = lat_to_y(landing_site.lat()) - 10.0;

sym_landing_site.setTranslation(x,y);


prediction_update();
plot_tracks();

settimer(map_update, 1.0);

}


var plot_tracks = func  {


graph.removeAllChildren();
var plot = graph.createChild("path", "data")
                                   .setStrokeLineWidth(2)
                                   .setColor(0,0,1)
                                   .moveTo(history[0][0],history[0][1]);

      

      for (var i = 1; i< (size(history)-1); i=i+1)
         {
         var set = history[i+1];
         if (history[i+1][0] > history[i][0])
            {
            plot.lineTo(set[0], set[1]);
            }
         else
            {
            plot.moveTo(set[0], set[1]);
            }
         }


var pred_plot = graph.createChild("path", "data")
                                   .setStrokeLineWidth(2)
                                   .setColor(1,0,0)
                                   .moveTo(track_prediction[0][0],track_prediction[0][1]);

      

      for (var i = 1; i< (size(track_prediction)-1); i=i+1)
         {
         var set = track_prediction[i+1];
         if (track_prediction[i+1][0] > track_prediction[i][0])
            {
            pred_plot.lineTo(set[0], set[1]);
            }
         else
            {
            pred_plot.moveTo(set[0], set[1]);
            }
         }

}



var history_init = func {

var lat = getprop("/position/latitude-deg");
var lon = getprop("/position/longitude-deg");
var x =  lon_to_x(lon);
var y =  lat_to_y(lat);

for (var i = 0; i < 1000; i = i+1)
   {
   var set = [x,y];
   append(history,set);
   }
history_update();

}

var history_update = func {

history = delete_from_vector(history,0);

var lat = getprop("/position/latitude-deg");
var lon = getprop("/position/longitude-deg");
var x =  lon_to_x(lon);
var y =  lat_to_y(lat);

append(history, [x,y]);

settimer(history_update, 10.0);
}



var prediction_update = func {

setsize(track_prediction,0);

var earth_motion_degs = 0.00416666666;
var lat = getprop("/position/latitude-deg");
var lon = getprop("/position/longitude-deg");

calc_geo(lat);


var orbiter_motion_north_fps = getprop("/fdm/jsbsim/velocities/v-north-fps");



var orbital_speed_fps = getprop("/fdm/jsbsim/velocities/eci-velocity-mag-fps");
var orbital_period = getprop("/fdm/jsbsim/systems/orbital/orbital-period-s");



var rising_flag = 0.0;

if (orbiter_motion_north_fps > 0.0) {rising_flag = 1;}
else {rising_flag = -1.0};

var inclination = getprop("/fdm/jsbsim/systems/orbital/inclination-deg");
var inclination_rad = inclination * math.pi/180.0;

var sinphi = (lat/ inclination);

sinphi = math.min(sinphi, 1.0);
sinphi = math.max(sinphi,-1.0);

var phi = math.asin(sinphi);

if (rising_flag == -1) {phi = math.pi - phi;}



var lon_rising = lon - phi * 180.0/math.pi;
if (lon_rising < 0.0) {lon_rising = lon_rising + 360.0;}




var dt =  120.0;
var offset = 0.0;

var increment = 2.0 * math.pi * dt/orbital_period;

for (var i = 0; i<40; i = i+1)
   {
   var arg = phi + i * increment;

   var pred_lat = math.asin(math.sin(arg) * math.sin(inclination_rad));
   var pred_lon = math.atan2(math.cos(inclination_rad) * math.sin(arg), math.cos(arg));
   
   pred_lat = pred_lat * 180.0/math.pi;
   pred_lon = pred_lon * 180.0/math.pi;

   pred_lon = pred_lon + lon_rising - earth_motion_degs * i * dt;

   if (i==0)   
      {
      offset = lon - pred_lon;
      }
   pred_lon = pred_lon + offset;

   if (pred_lon > 180) {pred_lon = pred_lon - 360;}
   if (pred_lon < -180) {pred_lon = pred_lon + 360.0;}
   var x =  lon_to_x(pred_lon);
   var y =  lat_to_y(pred_lat);
   append(track_prediction, [x,y]);
   }

}


history_init();
Thorsten
 
Posts: 11470
Joined: Mon Nov 02, 2009 8:33 am

Re: OpenRadar special use for especific space missions

Postby Hooray » Thu Apr 16, 2015 2:01 am

Michat wrote in Wed Feb 25, 2015 7:28 pm: we have roughly 14-15 airports-bases in the FG Space Program network that we wish to monitorize, in two ways: by a general global map (Impostor no data or few (paralel, medirian, and so on); with-and sectors where if I click I get into an usual Open radar especific sector and mission control area.
Another problem is how to monitorize and discriminate our Aircrafts, x-planes, SpaceShuttle, Rockects planes and SpaceShuttle Parts from the MP list. in order to see the real state of our fleet.



All of this can be easily added to Thorsten's existing prototype - it's mainly a matter of integrating snippets of code that are already floating around elsewhere, such as the multiplayer pilot list - equally, custom overlays can be easily added to the map, as well as support for other objects in orbit (think satellites like hubble/the ISS).
Another possibility would be hooking this up to the /ai branch in the property tree to also display MP aircraft that either have a certain minimum altitude (think >= 100k ft or a certain callsign/aircraft type), so that people could use Thorsten's Trajectory Map as the foundation for some kind of "Mission Control Center" - in addition to Thorsten's current prototype, it would also be possible to display altitude/speed diagrams for each space craft (re-entry).
Please don't send support requests by PM, instead post your questions on the forum so that all users can contribute and benefit
Thanks & all the best,
Hooray
Help write next month's newsletter !
pui2canvas | MapStructure | Canvas Development | Programming resources
Hooray
 
Posts: 11606
Joined: Tue Mar 25, 2008 8:40 am


Return to OpenRadar

Who is online

Users browsing this forum: No registered users and 0 guests