OHM Glideslope 2.7 for Orbiter 2010

Will

New member
Joined
Dec 29, 2010
Messages
62
Reaction score
0
Points
0
Location
No idea, but I know my speed!
Very much looking forward to using this, however whenever I try to select the MFD from the list, I get a CTD. I have tried in several scenarios and I have minimal addons (DG IV, Sound, UCGO, Aerobrake, BaseSync, TrackIR), Orbiter version is 100830. Log:
**** Orbiter.log
Build Aug 30 2010 [v.100830]
Timer precision: 3.01856e-007 sec
Found 2 joystick(s)
Devices enumerated: 6
Devices accepted: 5
==> RGB Emulation
==> Direct3D HAL
==> Direct3D T&L HAL
==> Direct3D HAL (ATI Radeon HD 5700 Series)
==> Direct3D T&L HAL (ATI Radeon HD 5700 Series)
Module AtlantisConfig.dll .... [Build 100830, API 100830]
Module AtmConfig.dll ......... [Build 100830, API 100830]
Module DGConfigurator.dll .... [Build 100830, API 100830]
Module TrackIR.dll ........... [Build 100830, API 100830]
TrackIR module found: C:\Program Files (x86)\NaturalPoint\TrackIR5\
TrackIR initialisation failed
Module CustomMFD.dll ......... [Build 100830, API 100830]
Module transx.dll ............ [Build 100824, API 100823]
Module AeroBrakeMFD.dll ...... [Build ******, API 100830]
---------------------------------------------------------------
>>> WARNING: Obsolete API function used: oapiRegisterMFDMode
At least one active module is accessing an obsolete interface function.
Addons which rely on obsolete functions may not be compatible with
future versions of Orbiter.
---------------------------------------------------------------
Module BaseSyncMFD.dll ....... [Build 100616, API 100603]
Module GS2.dll ............... [Build 130106, API 100830]
Module OrbiterSound.dll ...... [Build 121120, API 100830]
Module ExtMFD.dll ............ [Build 100830, API 100830]
Module FlightData.dll ........ [Build 100830, API 100830]
Module Framerate.dll ......... [Build 100830, API 100830]
Module Rcontrol.dll .......... [Build 100830, API 100830]
Module ScnEditor.dll ......... [Build 100830, API 100830]

**** Creating simulation session
DirectDraw interface OK
Direct3D interface OK
Graphics: Viewport: Window 1434 x 872 x 32
Graphics: Hardware T&L capability: Yes
Graphics: Z-buffer depth: 32 bit
Graphics: Active lights supported: 8
Loading 15382 records from star database
Joystick throttle: SLIDER 0
Joystick throttle control detected
Module Sun.dll ............... [Build 100830, API 100830]
VSOP87(E) Sun: Precision 1e-006, Terms 554/6634
Module Mercury.dll ........... [Build 100830, API 100830]
VSOP87(B) Mercury: Precision 1e-005, Terms 167/7123
Module Venus.dll ............. [Build 100830, API 100830]
Module VenusAtm2006.dll ...... [Build 100830, API 100830]
VSOP87(B) Venus: Precision 1e-005, Terms 79/1710
Module Earth.dll ............. [Build 100830, API 100830]
Module EarthAtmJ71G.dll ...... [Build 100830, API 100830]
VSOP87(B) Earth: Precision 1e-008, Terms 2564/2564
Module Moon.dll .............. [Build 100830, API 100830]
ELP82: Precision 1e-005, Terms 116/829
Module Mars.dll .............. [Build 100830, API 100830]
Module MarsAtm2006.dll ....... [Build 100830, API 100830]
VSOP87(B) Mars: Precision 1e-005, Terms 405/6400
Module Phobos.dll ............ [Build ******, API 060425]
Module Deimos.dll ............ [Build ******, API 060425]
Module Galsat.dll ............ [Build 100217, API 100215]
Module Jupiter.dll ........... [Build 100830, API 100830]
VSOP87(B) Jupiter: Precision 1e-006, Terms 1624/3625
Module Io.dll ................ [Build 100217, API 100215]
Module Europa.dll ............ [Build 100217, API 100215]
Module Ganymede.dll .......... [Build 100217, API 100215]
Module Callisto.dll .......... [Build 100217, API 100215]
Module Satsat.dll ............ [Build 100215, API 100212]
Module Saturn.dll ............ [Build 100830, API 100830]
VSOP87(B) Saturn: Precision 1e-006, Terms 2904/6365
Module Mimas.dll ............. [Build 100215, API 100212]
SATSAT Mimas: Terms 113
Module Enceladus.dll ......... [Build 100215, API 100212]
SATSAT Enceladus: Terms 33
Module Tethys.dll ............ [Build 100215, API 100212]
SATSAT Tethys: Terms 101
Module Dione.dll ............. [Build 100215, API 100212]
SATSAT Dione: Terms 59
Module Rhea.dll .............. [Build 100215, API 100212]
SATSAT Rhea: Terms 68
Module Titan.dll ............. [Build 100215, API 100212]
SATSAT Titan: Terms 100
Module Iapetus.dll ........... [Build 100215, API 100212]
SATSAT Iapetus: Terms 605
Module Uranus.dll ............ [Build 100830, API 100830]
VSOP87(B) Uranus: Precision 1e-006, Terms 1827/5269
Module Miranda.dll ........... [Build ******, API 060425]
Module Ariel.dll ............. [Build ******, API 060425]
Module Umbriel.dll ........... [Build ******, API 060425]
Module Titania.dll ........... [Build ******, API 060425]
Module Oberon.dll ............ [Build ******, API 060425]
Module Neptune.dll ........... [Build 100830, API 100830]
VSOP87(B) Neptune: Precision 1e-006, Terms 391/2024
Finished initialising world
Module DeltaGliderIV.dll ..... [Build 121224, API 100830]
Finished initialising status
Finished initialising camera
Finished initialising panels
Finished setting up render state
ERROR: DDraw object is still referenced: 1150
---------------------------------------------------------------
>>> ERROR: Destroy framework objects failed
>>> [OrbiterGraphics::Exit3DEnvironment | .\OGraphics.cpp | 1034]
---------------------------------------------------------------
**** Closing simulation session

**** Creating simulation session
DirectDraw interface OK
Direct3D interface OK
Graphics: Viewport: Window 1434 x 872 x 32
Graphics: Hardware T&L capability: Yes
Graphics: Z-buffer depth: 32 bit
Graphics: Active lights supported: 8
Loading 15382 records from star database
Joystick throttle: SLIDER 0
Joystick throttle control detected
Module Sun.dll ............... [Build 100830, API 100830]
VSOP87(E) Sun: Precision 1e-006, Terms 554/6634
Module Mercury.dll ........... [Build 100830, API 100830]
VSOP87(B) Mercury: Precision 1e-005, Terms 167/7123
Module Venus.dll ............. [Build 100830, API 100830]
Module VenusAtm2006.dll ...... [Build 100830, API 100830]
VSOP87(B) Venus: Precision 1e-005, Terms 79/1710
Module Earth.dll ............. [Build 100830, API 100830]
Module EarthAtmJ71G.dll ...... [Build 100830, API 100830]
VSOP87(B) Earth: Precision 1e-008, Terms 2564/2564
Module Moon.dll .............. [Build 100830, API 100830]
ELP82: Precision 1e-005, Terms 116/829
Module Mars.dll .............. [Build 100830, API 100830]
Module MarsAtm2006.dll ....... [Build 100830, API 100830]
VSOP87(B) Mars: Precision 1e-005, Terms 405/6400
Module Phobos.dll ............ [Build ******, API 060425]
Module Deimos.dll ............ [Build ******, API 060425]
Module Galsat.dll ............ [Build 100217, API 100215]
Module Jupiter.dll ........... [Build 100830, API 100830]
VSOP87(B) Jupiter: Precision 1e-006, Terms 1624/3625
Module Io.dll ................ [Build 100217, API 100215]
Module Europa.dll ............ [Build 100217, API 100215]
Module Ganymede.dll .......... [Build 100217, API 100215]
Module Callisto.dll .......... [Build 100217, API 100215]
Module Satsat.dll ............ [Build 100215, API 100212]
Module Saturn.dll ............ [Build 100830, API 100830]
VSOP87(B) Saturn: Precision 1e-006, Terms 2904/6365
Module Mimas.dll ............. [Build 100215, API 100212]
SATSAT Mimas: Terms 113
Module Enceladus.dll ......... [Build 100215, API 100212]
SATSAT Enceladus: Terms 33
Module Tethys.dll ............ [Build 100215, API 100212]
SATSAT Tethys: Terms 101
Module Dione.dll ............. [Build 100215, API 100212]
SATSAT Dione: Terms 59
Module Rhea.dll .............. [Build 100215, API 100212]
SATSAT Rhea: Terms 68
Module Titan.dll ............. [Build 100215, API 100212]
SATSAT Titan: Terms 100
Module Iapetus.dll ........... [Build 100215, API 100212]
SATSAT Iapetus: Terms 605
Module Uranus.dll ............ [Build 100830, API 100830]
VSOP87(B) Uranus: Precision 1e-006, Terms 1827/5269
Module Miranda.dll ........... [Build ******, API 060425]
Module Ariel.dll ............. [Build ******, API 060425]
Module Umbriel.dll ........... [Build ******, API 060425]
Module Titania.dll ........... [Build ******, API 060425]
Module Oberon.dll ............ [Build ******, API 060425]
Module Neptune.dll ........... [Build 100830, API 100830]
VSOP87(B) Neptune: Precision 1e-006, Terms 391/2024
Finished initialising world
Module DeltaGliderIV.dll ..... [Build 121224, API 100830]
Finished initialising status
Finished initialising camera
Finished initialising panels
Finished setting up render state

Any ideas?
 

spiras

Donator
Donator
Joined
Feb 9, 2013
Messages
11
Reaction score
1
Points
0
Thankyou for this MFD, I like it very much and I am spending a lot of time on it.

For the moment, I only have a couple of questions/suggestions,
but I'll provide more feedback as I proceed with usage.

In Deorbit screen mode, the instrument calculates VSpeed and Slope prediction @ EI; what is the altitude of EI? is it possible to edit this value, like in BaseSync?

After entry is passed, the Deorbit page shows a generic warning that suggests to switch the page off in config. It would be nice if this page could instead quit automatically, without the need to mess up in config during descent!

Did you think about the possibility to automatically select the best HAC layout depending on the total energy situation, also adapting radius among a range of predefined values?
 

ADSWNJ

Scientist
Addon Developer
Joined
Aug 5, 2011
Messages
1,667
Reaction score
3
Points
38
Thanks spiras. I treat 120km as the EI for both Earth and Mars. Parameterizing it is easy to do, so expect that for the next update.

Same with the deorbit display disable post EI - good idea. I'd really like to have GS 2.x figure out the deorbit burn position and dV to drop into the EI in optimal position. The math is not too hard, but I want to also do the cross range calc as well, which is harder.

On the HAC parameters... this is hard, because the degree of loss of energy is critically dependent on ship, attitude and altitude. I don't know how to calculate this for a general ship!

What would be epic would be a merge of BaseSync, Glideslope and AeroBrake logic, with LaunchMFD heads up guidance display, to make an ultra land MFD. One can dream!!
 

Enjo

Mostly harmless
Addon Developer
Tutorial Publisher
Donator
Joined
Nov 25, 2007
Messages
1,665
Reaction score
13
Points
38
Location
Germany
Website
www.enderspace.de
Preferred Pronouns
Can't you smell my T levels?
Hi Andrew,

do you remember this?
I've created an abstract model of such binary search in my lib directory. Check it out:
BinSearchArg.hpp
BinSearchArgSubject.hpp
BinSearchArg.cpp

and an example implementation:
DirectAscentOptiEngineLevel.cpp
used in:
AutopilotDirectAscentStd.cpp

As you can see, it's now easy to put there any black box function, whose arguments you need to search for, which produce a given black box function value.
I've also been experimenting with KOST. It's braindead easy and will do just what I've described in that other thread. I'll try to reach you tomorrow.
:goodnight:
 
Last edited:

ADSWNJ

Scientist
Addon Developer
Joined
Aug 5, 2011
Messages
1,667
Reaction score
3
Points
38
Hi Enjo,
Yeah - I've seen the KOST predictor calls, and it's easy like you said. I also did the deorbit math from first principles, as its not too hard to generate effective forces of gravity versus centripetal and iterate with Newton's Method.
 

Enjo

Mostly harmless
Addon Developer
Tutorial Publisher
Donator
Joined
Nov 25, 2007
Messages
1,665
Reaction score
13
Points
38
Location
Germany
Website
www.enderspace.de
Preferred Pronouns
Can't you smell my T levels?
Interesting. In my case I didn't have the luxury of having a derivative of my function, although I think I could obtain it numerically if it made sense.

Anyway for a precision of 0.01s of the output argument, I usually need 20 iterations, which is OK.
 
Last edited:

ADSWNJ

Scientist
Addon Developer
Joined
Aug 5, 2011
Messages
1,667
Reaction score
3
Points
38
Here's the pseudocode of my deorbit algorithm:

Assuming circular starting orbit,

Gravitational force (Fg) is G.Me.Ms / (Re + Alt)^2, and
Centrifugal Force (Fc) is Ms.Vh^2 / (Re + Alt), and
Vertical velocity (Vv) is zero.

(where G is the gravitational constant, Me is Mass of Earth, Ms is Mass of Ship, Re is Average Radius of Earth, Vh is horizontal velocity).

Apply a hypothetical deorbit burn delta V (Vhd), e.g. -100 m/s.

Iterate by time (dT)...
... Calculate net vertical force Fv = Fc - Fg
... Calculate net vertical acceleration Av = Fv / Ms
... Calculate new Vv after dT = Vv + Av * dT
... Calculate new Alt after dT = Alt + Vv * dT + 0.5 * Av * dT^2
... Calculate new Reentry Angle (ReA) = arctan( -Vv / Vh)
... Calculate new Orbit Time (Ot) = 2 * PI * (Re + Alt) * 1000 / Vh
(assumes Re and Alt are in KM and Vh in m/s, hence * 1000 needed)
... Calculate new EI Anticipation Angle (AntA) = AntA + (dT / Ot) * 360
... Calculate new EI Anticipation Dist (AntD) = AntD + Vh * dT
Until Alt <= Entry Interface


You need to run this algorithm with different values of Vhd (binary chopped) to end up with ReA at EI to match the entry to the Glideslope (e.g. 0.7 degrees), then applying the AntA or AntD gets the retro-burn position.

If you are in an elliptical orbit, then the KOST approach wins, as the algorithm above does not cater for Vv between apoapsis and periapsis.
 
Last edited:

csanders

Addon Developer
Addon Developer
Joined
Jan 18, 2012
Messages
219
Reaction score
0
Points
0
Location
Plymouth
I was curious if you take into account the rotation of the body when you calculate the horizontal angle to HAC? You would need to know 'time of landing', which may or may not be easy to calculate.

The longitude correction should be something like

newLong = oldLong + (rotationAngularVelocity * timeUntilLanding)

where rotationAngularVelocity would be in degrees/second (assuming timeUntilLanding is in seconds)
 

ADSWNJ

Scientist
Addon Developer
Joined
Aug 5, 2011
Messages
1,667
Reaction score
3
Points
38
I was curious if you take into account the rotation of the body when you calculate the horizontal angle to HAC? You would need to know 'time of landing', which may or may not be easy to calculate.

Hmm ... no. I wonder where you need to take it into account. For example - if you are flying a plane from Quebec Canada (53N 71W) to Santiago Chile (33S 70W) .. so 80º south, 1º East, you would fly close to due south, not say 150º to 'lead' the Earth to stay in the same longitudinal plane. But - if you did a sub-orbital hop for the same journey, then I assume you would need to lead the Earth.

Can an astrodynamics guru help here? In targeting your destination, how do you account for the planet's motion when in orbit, or when in atmospheric flight. (Consider a variety of inclinations too.)


-o-o-o-o-

Ok - on further thought, when you take off from Quebec, you are traveling Earth velocity East even though you head due South. The atmosphere is doing the same too, by and large. That's why you don't need to correct for the Earth's rotation on that flight. But from orbit - that's a different matter. For example, if you were in a 90º inclination orbit, pole to pole, and you were landing say at Wideawake, close to the Equator, then your deorbit would need to lead the Earth significantly. At some point, I assume the effects of the atmospheric rotation start to steer you eastwards, right?
 
Last edited:

Cairan

Donator
Donator
Joined
Apr 11, 2008
Messages
601
Reaction score
1
Points
18
Location
Amqui, QC
You need to correct for the rotation of the Earth for the period of time you are not under the influence of the atmosphere... If you generate lift, you are going along the atmosphere, but if not, you are "freewheeling" and the Earth is going to rotate under you. That being said, Coriolis forces are also a factor when you are in the atmosphere, correcting for the different rotational velocity at different latitudes...
 

csanders

Addon Developer
Addon Developer
Joined
Jan 18, 2012
Messages
219
Reaction score
0
Points
0
Location
Plymouth
Wow, that problem got a lot more complex than I originally thought it would be.

That's Orbiter for ya.
 

ADSWNJ

Scientist
Addon Developer
Joined
Aug 5, 2011
Messages
1,667
Reaction score
3
Points
38
You need to correct for the rotation of the Earth for the period of time you are not under the influence of the atmosphere... If you generate lift, you are going along the atmosphere, but if not, you are "freewheeling" and the Earth is going to rotate under you. That being said, Coriolis forces are also a factor when you are in the atmosphere, correcting for the different rotational velocity at different latitudes...

I suspect we are straying into some complex physics here, with laws of motion applied to different frames of reference. Is there an easy way to get into this topic though?
 

blixel

Donator
Donator
Joined
Jun 29, 2010
Messages
647
Reaction score
0
Points
16
I suspect we are straying into some complex physics here, with laws of motion applied to different frames of reference. Is there an easy way to get into this topic though?

I don't think this is exactly the same thing, but have a look at this post by dgatsoulis. It includes a PDF that explains some of the ideas to take into account as far as how much a base will "move" by the time you get there.
 

Enjo

Mostly harmless
Addon Developer
Tutorial Publisher
Donator
Joined
Nov 25, 2007
Messages
1,665
Reaction score
13
Points
38
Location
Germany
Website
www.enderspace.de
Preferred Pronouns
Can't you smell my T levels?
I'm happy that you were able to implement this logic. It's fun, isn't it? :)

Apply a hypothetical deorbit burn delta V (Vhd), e.g. -100 m/s.

The latest version of MFDButtonsPage now has a RegisterFunctionCont method, which makes the button press continuous, like in TransX. Makes a better user experience IMHO. If you decide to use it, I advice setting the velocity decrement as a percentage of your current velocity to make it planet-generic.

---------- Post added 02-20-13 at 08:27 AM ---------- Previous post was 02-19-13 at 04:10 PM ----------

You need to run this algorithm with different values of Vhd (binary chopped)

Ah, scratch what I've written then. You automate it completely.
However I'd like to share my latest experience if you perform the binary chopping then. I don't know if you used my code for that, but there, I've made an incorrect assumption that the epsilon should be checked against the "diff" value - ie. the function's value. It should be checked agains the I/O argument's difference between this and previous iteration. Otherwise, your results get choppy when you get close to your target - your precision decreases. Another positive of checking the argument's increments, and not the value, is that then you know exactly how many iterations you'll need, because the number of iterations is 2-3 times natural logarithm of the slices you'll perform, so 3*log(maxArg / eps), where in your case the maxArg would be for example 3/4 of orbital velocity. This way you may automatically limit the maximal iterations needed, above of which, the algorithm must break. So in summary - you'll have a fixed argument's precision, and you''ll know how many iterations you'll need.
I'll post the code later.

---------- Post added at 10:06 AM ---------- Previous post was at 08:27 AM ----------

I suspect we are straying into some complex physics here, with laws of motion applied to different frames of reference. Is there an easy way to get into this topic though?

The number one solution would be to extract Aerobrake's prediction algorithms and provide them as a library for other tools.

---------- Post added at 08:24 PM ---------- Previous post was at 10:06 AM ----------

And the code:
http://sourceforge.net/p/enjomitchsorbit/code/253/tree/lib/Math/BinSearchArg.cpp
 
Last edited:

Staiduk

New member
Joined
May 13, 2012
Messages
276
Reaction score
0
Points
0
Location
Alberta
Oh, my old gremlin returns!
I try activating GS2 in the launchpad; I get "The Procedure entry point_invalid_parameter_noinfo_noreturn could not be located in the dynamic link library MSVCR100.dll".

You generally get this if you don't have MSVCR100.dll; but I do. I just downloaded the latest version. There are a few MFD's and addons that do this. Does anyone know which version of MSVCR100 works?

Thanks. :)
 

orb

New member
News Reporter
Joined
Oct 30, 2009
Messages
14,020
Reaction score
4
Points
0

Staiduk

New member
Joined
May 13, 2012
Messages
276
Reaction score
0
Points
0
Location
Alberta
No - I googled the .dll; top of the list was 'DLL.com' or some such. There were 4 variations; I tried each in turn. Installed each to Orbiter/Modules and Windows/System32 in turn - no dice on all. Trying yours now. :)

Nope...still no dice. I hate when this happens.
 

orb

New member
News Reporter
Joined
Oct 30, 2009
Messages
14,020
Reaction score
4
Points
0
Nope...still no dice. I hate when this happens.

Delete the others you "installed" earlier from the Orbiter and subdirectories. Orbiter will use the one that is available locally first, and then the one that is installed in the system, not the other way around, so if you haven't deleted those you downloaded from DLL.com, they are still being loaded and used by Orbiter.

And that's what also usually happens when you get your files from DLL.com or other similar sites, than from the official distributor.
 

Staiduk

New member
Joined
May 13, 2012
Messages
276
Reaction score
0
Points
0
Location
Alberta
OK, thanks for the info, Orb. :) Doing it now.

---------- Post added at 04:39 AM ---------- Previous post was at 04:09 AM ----------

Nope, still nothing. I used 'Search' to find all copies of the .dll on my c: drive, then deleted all of them before re-using the file you provided. It still doesn't work - there must be something buggy in my computer somewhere but I haven't got the foggiest clue where or how to look. :(
 
Top