HenryBlatbugIII

[1.2.2] StationKeeping - Precise Synchronous Orbits

Recommended Posts

OYVnHEHU4.png

Description

This mod adds an interface in the Tracking Station that lets you precisely adjust the orbits of your ships.  It's intended to assist with creating CommNet networks, e.g. making precise geosynchronous orbits or using multiple relays with exactly the same orbital period.

Select a ship in the tracking station and click on the Station Keeping icon in the toolbar.  If the ship's semimajor axis is within 1% (configurable) of your target semimajor axis (whether that is a geosynchronous orbit or a different target that you've typed in), you can click the button to set your semimajor axis precisely.  The ship will burn the right amount of fuel (using its most efficient engine) to get to the target.  This mod does not include an option to set the other orbital parameters, since a difference in any of the other parameters will not cause the ship to drift farther and farther from its intended position as you timewarp.

Download

https://github.com/swilbur/StationKeeping/releases

Installation

Simply extract the StationKeeping folder to your "Kerbal Space Program/GameData/" folder.

Settings

In StationKeeping/PluginData/StationKeeping/config.xml, there are two options you might want to change:

  • RealSMA: Set this to 1 if you want the mod to show the actual semimajor axis of the orbit (distance from the center of the planet) rather than the KSP default altitude (distance from the surface)
  • Tolerance: By default, this is 1%.  This is how close you need to be to your target orbit before the mod will let you set your orbit.

License

CC BY (Creative Commons Attribution)

Edited by HenryBlatbugIII

Share this post


Link to post
Share on other sites

Sounds like a great mod! Will this be on CKAN?

Share this post


Link to post
Share on other sites

THIS is cool, it would be awesome to have something to maintain orbits easily/realistically without the in-game cheat menu or hyperedit.

Share this post


Link to post
Share on other sites
54 minutes ago, MaxZhao said:

Sounds like a great mod! Will this be on CKAN?

I don't use CKAN myself, so it never crossed my mind.  I just looked it up, and it looks easy to add it to CKAN.  I'll add it tomorrow or so.

Share this post


Link to post
Share on other sites

A possible bug report: my first test case was a set of comm-net sats I already have in orbit - just clean them up, as it were; they've been operating fine so far, but will eventually drift.  But I get told I don't have the required resources, despite them still having quite a bit of xenon left.  I note however that the mod claims it needs an *infinite* amount of EC to do the circulization.  The sats have quite a bit of both storage and generation, but infinite is a bit much.  :wink:

The sats are entirely using parts from this mod, in case it matters:

 

Share this post


Link to post
Share on other sites

Fantastic! I've been hyperediting my satellite SMAs manually, but love the idea of having to burn fuel to do it. Nice work. :D

Share this post


Link to post
Share on other sites
8 hours ago, DStaal said:

A possible bug report: my first test case was a set of comm-net sats I already have in orbit - just clean them up, as it were; they've been operating fine so far, but will eventually drift.  But I get told I don't have the required resources, despite them still having quite a bit of xenon left.  I note however that the mod claims it needs an *infinite* amount of EC to do the circulization.  The sats have quite a bit of both storage and generation, but infinite is a bit much.  :wink:

I found the bug.  It was in how I was attempting to take into account zero-mass propellants (like EC).  It's fixed now and 1.0.1 is uploaded.

Share this post


Link to post
Share on other sites

Thanks for the mod made it in my "only a handfull mods career". In the config it says the version is 1.0, guess this is unimportant but wanted you to know^^

Share this post


Link to post
Share on other sites

Hey HenryBlatbugIII,

 

Nice mod,very useful! :wink:

 

Will you add it on CKAN?

Share this post


Link to post
Share on other sites

You might want to add it to spacedock or curse, it's pretty hard to find this mod otherwise, and it's so damn handy.

Share this post


Link to post
Share on other sites

This mod is the next step in making on-rails maneuver node execution reality! Just that closer to my idea of Kerbal Space Program Manager (or Tycoon...) :cool:

...Any consideration for possibly making that happen? :P It's a bit tedious when you're launching whole comsat constellations and need to coordinate maneuvers node for different satellites so they don't happen at the same time so you can actually execute them. You wind up wasting a whole transfer window. It'd be REALLY nice if nodes could be executed in the background. :wink:

Share this post


Link to post
Share on other sites

Holy crap, this is literally what I asked for a while back on add-on requests! Thank you so much for making this, if only I'd found it sooner...

Share this post


Link to post
Share on other sites

1st off, fantastic. Nice and simple, does one needed thing, without a lot of excess fluff, perfect. :)

Couple issues though

If you have any Rapiers on your craft, such as from an SSTO docked to a station, it won't work because it tries to use them in airbreathing mode because in that mode they have the highest ISP. (Even if they are currently set to rocket mode) It should ignore any engines that require air intake to function. Also, on a similar note, it will not work if all you have is RCS thrusters/vernors because it doesn't treat them as a valid source of thrust, even though they are perfect for performing station keeping.

And a suggestion, and way of getting it to actually burn the orbits to be more circular? If I set SMA to 75km for instance, it often will put it in like a 74.8km by 75.2km orbit, rather than 75km circular. This may not matter for relay sats in huge orbits, but if you're trying to sync say several space stations up so they are in orbit a few KM away from each other it can have a large impact in how much they fluctuate throughout the orbit, even if they do fluctuate around the same SMA overall.

Thx :)

Share this post


Link to post
Share on other sites
3 hours ago, Yargnit said:

And a suggestion, and way of getting it to actually burn the orbits to be more circular?

Judging by the code on Github, what the mod does is emulation of a prograde burn from where your ship currently is to get to the orbit with a target SMA. This ensures that ship does not change its position in space after correction (the initial and new orbits intersect exactly where ship currently is).

But when orbit is going to change to a new one, and the new one isn't intersecting the old one at ship position, then the ship needs to jump. And the question is, where exactly should it jump and how is it physically possible?

Share this post


Link to post
Share on other sites
15 hours ago, Yargnit said:

If you have any Rapiers on your craft, such as from an SSTO docked to a station, it won't work because it tries to use them in airbreathing mode because in that mode they have the highest ISP. (Even if they are currently set to rocket mode) It should ignore any engines that require air intake to function. Also, on a similar note, it will not work if all you have is RCS thrusters/vernors because it doesn't treat them as a valid source of thrust, even though they are perfect for performing station keeping.

Oops, you're right.  I didn't take those possibilities into account.  It should be an easy fix; I'll upload a new version once I find the time to test it.

15 hours ago, Yargnit said:

And a suggestion, and way of getting it to actually burn the orbits to be more circular? If I set SMA to 75km for instance, it often will put it in like a 74.8km by 75.2km orbit, rather than 75km circular. This may not matter for relay sats in huge orbits, but if you're trying to sync say several space stations up so they are in orbit a few KM away from each other it can have a large impact in how much they fluctuate throughout the orbit, even if they do fluctuate around the same SMA overall.

Pand5461 already answered this exactly as I would have.  Since the mod simulates a prograde/retrograde burn, you could use two burns to make it circular:  wait until periapsis and set the SMA to (current periapsis + target SMA)/2, then wait half an orbit and set it to (target SMA).  This method will first set the apoapsis to the correct distance, then circularize.

Share this post


Link to post
Share on other sites
51 minutes ago, HenryBlatbugIII said:

Oops, you're right.  I didn't take those possibilities into account.  It should be an easy fix; I'll upload a new version once I find the time to test it.

Pand5461 already answered this exactly as I would have.  Since the mod simulates a prograde/retrograde burn, you could use two burns to make it circular:  wait until periapsis and set the SMA to (current periapsis + target SMA)/2, then wait half an orbit and set it to (target SMA).  This method will first set the apoapsis to the correct distance, then circularize.

Thanks, and fair enough. :D

 

An odd note btw, if you start keep from a shortcut, Station Keeping uses the "start in" section of the shortcut, not KSP's actual location in the HD when looking for its toolbar icon, so if this doesn't match up for some reason the plugin will not show in game. This took me about 30 min to figure out because I've never seen another mod use this in any way, and KSP doesn't care at all if it is correct.

Share this post


Link to post
Share on other sites
1 hour ago, HenryBlatbugIII said:

Pand5461 already answered this exactly as I would have.

I just realized, however, that you may rather easily calculate the deltaV for burn that makes the orbit "as circular as possible", given the craft's current position and wanted SMA. In fact, for the most circular orbit, the craft must be at the apsis of the new orbit.

That should be like this, I guess:

double AdditionalE = OrbitE - TargetE;

Vector3d pos = v.orbit.getRelativePositionAtUT (Planetarium.GetUniversalTime ());
Vector3d vel = v.orbit.getOrbitalVelocityAtUT (Planetarium.GetUniversalTime ());

Vector3d up = pos / pos.magnitude;
double Vmag = Math.Sqrt(vel.sqrMagnitude + 2*AdditionalE);

Vector3d HorizV = vel - up*Vector3d.dot(vel, up);
HorizV *= Vmag / CircularV.magnitude; // set new velocity directed exactly horizontally

double DeltaV = Vector3d.Magnitude( HorizV - vel );

v.orbit.UpdateFromStateVectors (pos, HorizV, v.mainBody, Planetarium.GetUniversalTime ());
v.orbit.semiMajorAxis = Target;

 

Share this post


Link to post
Share on other sites

So far this seems to be working for me in KSP 1.3.  YMMV of course.

This mod is a must have for most of my games.  

Share this post


Link to post
Share on other sites
On 9/26/2017 at 9:16 PM, Murdabenne said:

Any official update for 1.3?  Or a simple recompile?

Appears to be working just fine in 1.3.1

Share this post


Link to post
Share on other sites

Hi there, I have a couple of questions about this mod.

Would there be compatibility issues between Station Keeping and a mod like Kessler Syndrome which adds an option to enable vessel orbital decay? And if the mods are compatible, does Station Keeping include some mechanic for resource usage to maintain a given orbit?

Basically what I'm asking is if Station Keeping can be used alongside Kessler Syndrome to essentially become the old "Orbital Decay" mod.

Share this post


Link to post
Share on other sites
On 5/22/2017 at 4:10 AM, Pand5461 said:

Judging by the code on Github, what the mod does is emulation of a prograde burn from where your ship currently is to get to the orbit with a target SMA. This ensures that ship does not change its position in space after correction (the initial and new orbits intersect exactly where ship currently is).

But when orbit is going to change to a new one, and the new one isn't intersecting the old one at ship position, then the ship needs to jump. And the question is, where exactly should it jump and how is it physically possible?

It could act like HyperEdit, the ship just jumps to a new position that are in-line with the old one and the center of the orbit. Also would be very nice to be able to adjust the inclination. With the 1% margin for adjust (or even lower), it won't be too much cheating, since this will be used only for aesthetics and obsessed people :P

Share this post


Link to post
Share on other sites

Just popping in to say that this (very handy little) mod works in 1.4.1 after a simple recompile against the latest version. Maybe someone wants to step in and maintain it?

(My version's for my own use; I won't be distributing it. But this was the first time I ever tried compiling a KSP mod, and if I can do it, I think most people should be capable...)

Share this post


Link to post
Share on other sites
On 3/18/2018 at 4:27 AM, UnanimousCoward said:

Just popping in to say that this (very handy little) mod works in 1.4.1 after a simple recompile against the latest version. Maybe someone wants to step in and maintain it?

(My version's for my own use; I won't be distributing it. But this was the first time I ever tried compiling a KSP mod, and if I can do it, I think most people should be capable...)

I have no idea how to do this and really would prefer not to get all the programs and stuff just to recompile one mod. Hopefully somehow we can get a recompiled  version legit

Share this post


Link to post
Share on other sites
On 18/03/2018 at 6:27 AM, UnanimousCoward said:

Just popping in to say that this (very handy little) mod works in 1.4.1 after a simple recompile against the latest version. Maybe someone wants to step in and maintain it?

(My version's for my own use; I won't be distributing it. But this was the first time I ever tried compiling a KSP mod, and if I can do it, I think most people should be capable...)

Mind sharing with the rest of the class?

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.