OHM Giotto

OrbitHangar

Addon Comments
Joined
Apr 9, 2008
Messages
3,832
Reaction score
13
Points
0

Author: brianj

Giotto - Halley Armada Pt.2

Commemorating the 25th anniversary of the launch of ESA's first deep space mission and the first spacecraft to make a close flyby of a comet. Giotto was part of the international fleet of vessels sent to study Comet Halley during 1986. Giotto was launched on 2nd July 1985 on an Ariane1 launcher from Kourou CSG. It's extended mission included a flyby of comet 26P_GriggSkjellerup in 1992 via an Earth gravity assist.
*
Add-on includes: Giotto spacecraft, comets 1P_Halley, 21P_GiacobiniZinner, 26P_GriggSkjellerup, 45P_HMP(HondaMrkosPajdusakova), flight and operation notes, launch/post-launch/rendezvous* scenarios.
*
Features: Demonstration of realistic attitude control system for spin-stabilized vessel (using torque-free precession of spin axis), simple simulated solar-power/thermal constraints on spacecraft attitude (possible systems failure!), simulated HGA communications pointing constraint, on-board imaging capability (HMC) will save images taken by the spacecraft as .bmp files, simulated particle impact counter, single burn-to-depletion solid fuel kick motor, etc.
*
This is a fairly complex craft to operate, I have tried to make the documentation as clear as possible but this add-on maybe more suitable for experienced Orbinauts and those with a good grasp of IMFD and TransX!

29 Sept 2010 - Updated for Orbiter2010-P1 (build*100830)
*
Launch scenario requires Papyref's "Pack - Kourou CSG"

Also recomended for launch scenario: Stage.dll for Orbiter 2010


DOWNLOAD
 

Urwumpe

Not funny anymore
Addon Developer
Donator
Joined
Feb 6, 2008
Messages
37,617
Reaction score
2,337
Points
203
Location
Wolfsburg
Preferred Pronouns
Sire
Coool stuff.

Can't wait to test it this evening. By the feature list it, looks like one of the best add-ons for this hot summer.
 

Shadow Addict

New member
Joined
Feb 28, 2009
Messages
509
Reaction score
0
Points
0
Location
New Orleans
BrianJ, your addons are always of the highest quality, and this one looks to be even more feature-packed. Can't wait to try it out!
 

BrianJ

Addon Developer
Addon Developer
Joined
Apr 19, 2008
Messages
1,678
Reaction score
902
Points
128
Location
Code 347
Thank you, kind sirs. Hope you have some fun with it.

Actually, I just hope it works and other people can figure out how to use the various features - I gave it the functions I needed it to have, to do what I wanted it to do, but I'm not sure it will be that obvious to other people how it all works.

Anyhow, good luck and happy orbiting!
 

Izack

Non sequitur
Addon Developer
Joined
Feb 4, 2010
Messages
6,665
Reaction score
13
Points
113
Location
The Wilderness, N.B.
All for the better!
It looks like when I get around to this add-on, it's going to going to challenge my ability to plan and execute a complex mission, more so than I've tried before.

This is exactly why I play Orbiter. :cheers:
 

andrew

New member
Joined
Sep 29, 2008
Messages
25
Reaction score
0
Points
0
Location
Ryazan
I can not load Giotto launch scenario

**** Orbiter.log
Build Jun 6 2010 [v.100606]
Timer precision: 5.13222e-007 sec
Found 0 joystick(s)
Devices enumerated: 4
Devices accepted: 3
==> RGB Emulation
==> Direct3D HAL
==> Direct3D HAL (Mobile Intel(R) 4 Series Express Chipset Family)
Module ATLANT~1.DLL .......... [Build 100606, API 100606]
Module ATMCON~1.DLL .......... [Build 100606, API 100606]
Module DGCONF~1.DLL .......... [Build 100606, API 100606]
Module SCNEDI~1.DLL .......... [Build 100606, API 100606]
Module INTERM~2.DLL .......... [Build 090521, API 060425]
---------------------------------------------------------------
>>> 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 CUSTOM~1.DLL .......... [Build 100606, API 100606]
Module BASESY~1.DLL .......... [Build ******, API 060425]
Module LUNART~1.DLL .......... [Build ******, API 060425]
Module ORBITE~1.DLL .......... [Build ******, API 060425]
Module GPCMFD.dll ............ [Build 100621, API 100606]
Module AutoFCS.dll ........... [Build ******, API 050206]
Module UnivPTG.dll ........... [Build 100629, API 100606]
Module RPOP.dll .............. [Build 100620, API 100606]

**** Creating simulation session
DirectDraw interface OK
Direct3D interface OK
Graphics: Viewport: Fullscreen 1280 x 800 x 16
Graphics: Hardware T&L capability: No
Graphics: Z-buffer depth: 16 bit
Loading 8816 records from star database
Module Sun.dll ............... [Build 100215, API 100212]
VSOP87(E) Sun: Precision 1e-006, Terms 554/6634
Module Mercury.dll ........... [Build 100215, API 100212]
VSOP87(B) Mercury: Precision 1e-005, Terms 167/7123
Module Venus.dll ............. [Build 100215, API 100212]
Module VENUSA~1.DLL .......... [Build 100606, API 100606]
VSOP87(B) Venus: Precision 1e-005, Terms 79/1710
Module Earth.dll ............. [Build 100215, API 100212]
Module EARTHA~2.DLL .......... [Build 100606, API 100606]
VSOP87(B) Earth: Precision 1e-008, Terms 2564/2564
Module Moon.dll .............. [Build 100217, API 100215]
ELP82: Precision 1e-005, Terms 116/829
Module Mars.dll .............. [Build 100215, API 100212]
Module MARSAT~1.DLL .......... [Build 100606, API 100606]
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 100215, API 100212]
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 100215, API 100212]
VSOP87(B) Saturn: Precision 1e-006, Terms 2904/6365
Module Mimas.dll ............. [Build 100215, API 100212]
SATSAT Mimas: Terms 113
Module ENCELA~1.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 100215, API 100212]
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 100215, API 100212]
VSOP87(B) Neptune: Precision 1e-006, Terms 391/2024
Finished initialising world
Module MULTIS~1.DLL .......... [Build ******, API 050206]
Module HAMMAG~2.DLL .......... [Build ******, API 060425]
Module HAMMAG~1.DLL .......... [Build ******, API 060425]
Module DELTAG~1.DLL .......... [Build 100607, API 100606]
Module LUAINL~1.DLL .......... [Build 100606, API 100606]
Module SPACEC~1.DLL .......... [Build ******, API 060425]
---------------------------------------------------------------
>>> WARNING: Obsolete API function used: VESSEL::SetBankMomentScale
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.
---------------------------------------------------------------
Finished initialising status
Finished initialising camera
Finished initialising panels
---------------------------------------------------------------
>>> WARNING: CWD modified by module OrbiterSound - Fixing.
---------------------------------------------------------------
Finished setting up render state
**** WARNING: Mesh not found: .\Meshes\.msh
**** Respawning Orbiter process



Stage .dll for Orbiter 2010, Multistage2 , Papyref's "Pack - Kourou CSG" installed.
Giotto fligth scenarios works well.
 

BrianJ

Addon Developer
Addon Developer
Joined
Apr 19, 2008
Messages
1,678
Reaction score
902
Points
128
Location
Code 347
Hi there,
hmmmm, quite confusing! Are you sure the orbiter.log text that you posted relates to the Giotto launch scenario?

...........
Finished initialising world
Module MULTIS~1.DLL .......... [Build ******, API 050206]
Module HAMMAG~2.DLL .......... [Build ******, API 060425]
Module HAMMAG~1.DLL .......... [Build ******, API 060425]
Module DELTAG~1.DLL .......... [Build 100607, API 100606]
Module LUAINL~1.DLL .......... [Build 100606, API 100606]
Module SPACEC~1.DLL .......... [Build ******, API 060425]
...........
These modules look like they are from Papyref's "Hammaguir" add-on, I can't see why they would be loaded in the Giotto launch scenario.

Try deleting the contents of orbiter.log and run the Giotto launch scenario, then see what the orbiter.log says. Is it the same?

Also, you can try:
1. Use a clean installation of Orbiter 2010, with only "Pack-Kourou CSG" + "Stage.dll for Orbiter 2010" + "Giotto" installed (Kourou CSG includes multistage2.dll and spacecraft3.dll)

2. Edit your Giotto launch scenario and start removing the vessel entries one at time, working up from the bottom of the vessel list until you are left with only the Ariane1 vessel.

Let me know how you get on :)

Cheers,
Brian
 

astrosammy

Dash!
Addon Developer
Donator
Joined
Apr 27, 2008
Messages
2,124
Reaction score
0
Points
36
Location
ICAO ID: EDFB
Beautiful probe! It's a great feeling to hear that impacts. But I only managed to flyby at a distance of 66000 km, making the camera useless. After the kick motor burn I waited until the dv value sinked to a minumum (wich was 6 m/s 10 days after launch) and did my first correction. Here begins the same problem that I have on all my interplanetary flights: the dv doesn't stop to increase... I just entered 46503.0021 as target MJD and Halley as target in IMFD's course program, is there any better way to do it?

---------- Post added at 01:04 ---------- Previous post was at 00:28 ----------

Ok, got it. I opened align planes MFD and waited until I came close to a node. BOOM, the dv decreased at that point.
 

RAF Blackace

Member
Joined
Apr 23, 2010
Messages
64
Reaction score
1
Points
6
Phew, figured it out at last.

Fantastic mission and scenario. I really enjoyed that.

It took me a few days and aborted missions before I figured it out. I found that I was worrying too much about the dv during Earth Eject and after the solid rocket burn. I soon realised that this is not that important providing your within a few hundred.

Adjusting the Tin time in IMFD after the burn I could reduce the required dv and once clear of Earth SOI it reduced even more as expected. I eventually ended up with a tin time of 46504.131. I had previously aborted every mission because I ran out of RCS fuel due to constantly trying to keep it as low as possible during departure. Once I reached the first node the error slowed to nearly nothing and I eventually intercepted Halley with just less than half the RCS fuel remaining. I intercepted Halley at a distance of just a few hundred meters.

Intercept images attached.

Loved it mate, great work. Thanks.

Just one small minor issue. I had to edit the fairing config to get it right in the ariane1_v14.ini file.

[FAIRING]
N=2
MESHNAME="ariane123\ariane1_fairing"
OFF=(0,0.83,34.43)

you had the first two values in OFF as 0,0 and not 0,0.83. Your values made the fairing displaced from the centre. Changing it to 0.83 corrected it.
 

Attachments

  • HMC_19860315_030853.jpg
    HMC_19860315_030853.jpg
    14.3 KB · Views: 35
Last edited:

BrianJ

Addon Developer
Addon Developer
Joined
Apr 19, 2008
Messages
1,678
Reaction score
902
Points
128
Location
Code 347
Hi RAF Blackace,
glad you had some fun with it and managed to get those cool shots of Halley :)
I think a flyby of only a few hundred metres would have had the (real) engineering team panicking a bit :-D but well done on the precise navigation!
Thanks for the heads-up about the fairing offset.

I'm still chuffed I managed to get the attitude control program for Giotto to work! But thats another story...

Cheers,
BrianJ
 

boogabooga

Bug Crusher
Joined
Apr 16, 2011
Messages
2,999
Reaction score
1
Points
0
BrianJ,

The spin-stabilized attitude control is brilliant.

Would it be possible or difficult to make it into a vessel-independent MFD?
Perhaps some could use the attitude control on other axisymmetric vessels.
 

BrianJ

Addon Developer
Addon Developer
Joined
Apr 19, 2008
Messages
1,678
Reaction score
902
Points
128
Location
Code 347
BrianJ,

The spin-stabilized attitude control is brilliant.

Would it be possible or difficult to make it into a vessel-independent MFD?
Perhaps some could use the attitude control on other axisymmetric vessels.
Thanks! I was pretty pleased I could get it working in the end. And it was a useful bit of beta-testing of Orbiter's Angular Momentum simulation.

Thing is, it depends on the vessel having the right Prime Moments of Inertia - if your spin axis is Z, then PMI.x must equal PMI.y - otherwise I think the calculations get much more complex. It needs to be axissymmetric, as you say.

Given that constraint, it would be certainly be possible to make an MFD for it. But not that easy - the logic for handling any RCS thruster configuration would be a bit complex(my initial thought).

But I suspect there aren't that many spin stabilised spacecraft being made these days, so I'm not sure how much use such an MFD would get?

I'm kind of busy with other stuff at the moment, but if anyone wants to have a go, I'll happily send the Giotto code over.

Cheers.
 

boogabooga

Bug Crusher
Joined
Apr 16, 2011
Messages
2,999
Reaction score
1
Points
0
Could you please elaborate om the math behind the spin attitude control a little?

If I wanted to emulate "by hand" what would I do?
 

BrianJ

Addon Developer
Addon Developer
Joined
Apr 19, 2008
Messages
1,678
Reaction score
902
Points
128
Location
Code 347
Hi,
well, it is kind of possible to do it manually and maybe get close enough to your target attitude for IMFD or AttitudeMFD to fine tune it (or maybe fine tune it manually - for very small attitude adjustments, you can pretty much ignore the precession effects).

As you probably know, for a spin-stabilized vessel (spinning along its Z axis), if you give it a quick "pitch up" RCS impulse, the Z axis will start to describe a circle in space - the Z axis is precessing around the "precession axis".
IIRC, if the vessel is spinning clockwise, the precession of the Z axis will also be clockwise. A bigger RCS impulse will give a larger circle.

To stop the precession, you should null-out all X and Y axis rotation (AttitudeMFD might help?).

So in manual-control terms, if you want to yaw right, you can give a small pitch-up RCS impulse, wait until the Z axis has described a half-circle to the right then stop precession. Then repeat as necessary.

Or, to give another example, if you want to pitch-up, give a small yaw-left RCS impulse, wait until the Z axis has described a half-circle upwards, then stop precession, then repeat etc.

You end up with the Z axis making a series of small half-circles over towards your target attitude.

Mathematically - if you can put the "Z axis target" unit vector in local vessel frame, then you know the "precession axis target" vector will be exactly between the spin axis (which is Z or (0,0,1) in this example) and the "Z axis target".

Once you know the precession axis target vector in local vessel frame, you can calculate the required X and Y axis rotation rates.

Once you know the required X and Y axis rotation rates, you can set the Pitch/Yaw RCS accordingly.

Here's some pseudo-code....
Code:
if......
pr_axis_target = Precession axis target vector in vessel frame
(pr_axis_target.x, pr_axis_target.y, pr_axis_target.z)

theta_x = angle between vessel Z axis and projection of precession axis onto vessel XZ plane
theta_y = angle between vessel Z axis and projection of precession axis onto vessel YZ plane

then....
[B]tan(theta_x) = pr_axis_target.x/pr_axis_target.z
tan(theta_y) = pr_axis_target.y/pr_axis_target.z[/B]

and.....
Code:
if.....
PMI = Vessel's prime moments of inertia PMI.x, PMI.y, PMI.z
ang_vel.z = Vessel's angular velocity around Z axis
rot_required_x = Required angular velocity around X axis
rot_required_y = Required angular velocity around Y axis

then....
[B]rot_required_x = (tan(theta_x)*ang_vel.z*PMI.z)/PMI.x
rot_required_y = (tan(theta_y)*ang_vel.z*PMI.z)/PMI.y[/B]

....set Pitch RCS to achieve rot_required_x
....set Yaw RCS to achieve rot_required_y

Sorry, if this isn't very clear!
Hope it gives a basic idea of the principle involved.

Cheers,
Brian
 
Last edited:
Top