Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ComSat Contracts #562

Closed
1 of 20 tasks
hargn opened this issue Jul 7, 2016 · 20 comments
Closed
1 of 20 tasks

ComSat Contracts #562

hargn opened this issue Jul 7, 2016 · 20 comments

Comments

@hargn
Copy link
Contributor

hargn commented Jul 7, 2016

The goal of this issue is to discuss of the way to add contracts to launch communication satellites and constellations for earth and later other solar system bodies.
As intended by issue #177, the stock satellite contracts should be replaced by RP-0's ones. These contracts could also replace the contracts provided by RemoteTech for the constellations.

I think to inspire myself from this page : https://en.wikipedia.org/wiki/List_of_communications_satellite_firsts to implement a regular progression of contracts around the Earth.

The list of contracts that I intend to implement (WIP) :

Milestones

  • First ComSat :SCORE-like, min Pe=180km, 12h of lifetime
  • First Autonomous ComSat : must have solar panels
  • First Polar Orbit
  • Sun Synchronous Orbit
  • Molniya Orbit
  • Tundra Orbit
  • GEO/GSO, already implemented into milestone contracts
  • High Altitude Orbit

Repeatable

  • All kind of orbit : weights to define (GEO orbits are more frequents eg.)
  • Polar Orbit : 10
  • Sun-Synchronous Orbit : 10
  • Molniya Orbit : 15
  • Tundra Orbit : 15
  • GEO : 15
  • GSO : 15
  • Constellations, like RT contracts (3 or more satellites connected via dishes) ?
  • GNSS constellations, GPS/GLONASS/Galileo-like, QZSS-like, ...
  • Replacement of an actual satellite (with the de-orbitation of the replaced sat ?)
  • Other astral bodies, all kind of orbit, following the progression of milestone and flyby contracts
  • Other astral bodies comsat constellations, following the progression of milestone and flyby contracts

Objectives/Constraints

  • Number of antennaes
  • Kind of antennaes
  • Minimum communication range
  • Monopropellant
  • Minimum energy storage
  • Solar panels (mandatory ?)

Don't hesitate to lead me, thanks

@leudaimon
Copy link
Contributor

leudaimon commented Jul 7, 2016

Cool! If I may suggest some ways this could go, I think Observation satellites as well as communications could be nice. Thus, these contracts can have some families of different useful/historically used orbits as well as the communications capability milestones listed in the OP. These useful orbits can be made into repeatable contracts. In this sense, I would like to see:

  • GEO
  • Low Polar Orbit
  • Molniya/Tundra/other sun-syncronous observation orbits
  • Constellations allowing worldwide coverage would be really nice, but very difficult to achieve (and I think also implement).

For other planets/the moon, Comms relays contracts may be nice and implemented in a similar way to the earth analog, but I believe different increasingly challenging scientific mission profiles is the real deal. These could also be repeatable:

  • any orbit (highly eccentric)
  • any polar orbit (highly eccentric)
  • any low circular orbit (height specified in the contract)
  • low polar orbit (also specified in the contract)

One thing that bothers me in the stock orbit contracts for the moon is that they assign a LAN, which is not very useful in real scientific mission to the moon, is it?

@hargn
Copy link
Contributor Author

hargn commented Jul 8, 2016

I broadly agree with the progression you suggest.
For the ordering, I would place the low polar orbit first (easily feasible), then the Molniya and after the GEO or Tundra orbits.
Can you describe the list of different kind of sun-synchronous orbits and their characteristics?

Else, I think to add other kind of requirements for the contracts :

  • A minimum amount of antennaes
  • A certain type or model of antennae
  • A minimum communication distance (if CC allows it, else I probably should developp new CC Requirements)
  • A minimum energy storage?
  • Must have solar panels
  • A minimum Hydrazine (or other monopropelant) storage

@stratochief66
Copy link
Member

Good ideas! Some that have been discussed in other Issues, other that haven't.

Other Issues pertaining to satellite contracts include: #463 , #177 as you stated.

Ultimately, what is needed is someone interested enough to learn to define contracts, might that be either of you? Even just starting with toy Contracts or studying the the existing ones would be a good place to start that.

@leudaimon
Copy link
Contributor

leudaimon commented Jul 8, 2016

@hargn GEO is definitely the hardest one among all of these. low polar is the easiest, then Molnyia, Tundra and finally GEO (both in terms of dV and avionics capabilites). I'm not sure if there are other interesting synchronous orbits (Molnyia is 1/2 day and Tundra is 1 day orbital period, not sure there are other useful stuff)... One nice touch would be a GPS constellation, but I have no idea what are their orbital parameters.

For these orbital constellations and observation satellites I wonder if with repeatable contracts it's possible to get them to maximize variability and not repeat key orbital parameters (for example, get different regions/biomes to be observed in each contract to get complementar coverage).

Energy production (already present in contracts), attitude control and antenna range are definitely three nice aspects to add.

@stratochief66 I could try to work a little on this, looking at implemented contracts it doesn't look terribly complicated. However, I don't have much time available...

@PhineasFreak
Copy link
Contributor

GPS constellation parameters:

  • Six orbital planes, each populated with 4 satellites (plus two spares - 36 satellites overall).
  • Apoapsis: ~20230 km
  • Periapsis: ~20230 km
  • Inclination: 55° (from equator)
  • Eccentricity: ~0 (since they are circular orbits)
  • RAAN: 0° to 360° (each satellite is separated from the other by 60°)
  • Orbital period: 11h 57m 59s (one sidereal day)

Sources:

GPS Satellite Constellation Nominal Orbit Parameters

GEOFFREY BLEWITT: BASICS OF THE GPS TECHNIQUE

GNSS Satellite Orbits

@Zarbizaure
Copy link
Contributor

Zarbizaure commented Jul 9, 2016

Speaking of RP-0 contracts...RP-0 lacks rover and base contracts too. I added in #563 a ESA-like base contract (2030+ project, the "moon village"), but we still don't have rover contracts. I don't really know how to check the state of the vehicle (on wheel, distance travelled, etc...) but it would be interesting to recreate real rovers contracts, from unmanned ones (Lunokhod, Pathfinder/Sojourner, Opportunity/Spirit, Curiosity, Mars 2020...) to manned rovers (Lunar Roving Vehicle, Mars Rovers proposal like Watney's one...).

About the satellite contracts: with the growth of cubesat and smaller and smaller satellites there will be entire satellite fleet launched in LEO in just few launchs in the near future. Is there a way to do it in RP-0? Like "launch 10 unmanned probes in a specific LEO orbit in one launch, with a low mass per probe". I already hear you say; we don't have cubesat parts! And that's the problem, currently RO doesn't include stuff for tiny modern rocketry.

@leudaimon
Copy link
Contributor

@PhineasFreak Cool! Maybe getting a repeatable contract to launch into one of those 6 planes (I'm gessing they are at equidistant LANs, is that right?), regardless of RAAN to make things easier on the player would be nice

@Zarbizaure I saw the lunar contracts you created, some nice ideas there. Something really simple and that would be nice is to add a repeatable uncrewed lander, with a random biome.

@jrossignol, is it possible to create a random DATA list (like biomes) but have the contract sampling randomly only from the objects not yet taken in a completed contract of that type (technically, random sample without reposition)? This would be cool for constellations of sats and also for landing contracts to exhaust the available biomes

I'm starting a really busy week, but I'll try to implement some of those satellite ideas as soon as I get some free time.

@jrossignol
Copy link
Contributor

@leudaimon - In 1.14.x, you would do:

DATA
{
    type  = Biome
    uniquenessCheck = CONTRACT_ALL
    theBiome = Moon.Biomes().Random()
}

But this does the selection first, then the uniqueness check against existing contracts, so it can be problematic. Luckily, that's changing in 1.15.x:

DATA
{
    type  = Biome
    uniquenessCheck = CONTRACT_ALL
    theBiome = Moon.Biomes().SelectUnique()
}

Which does the uniqueness check to filter the list down, then randomly selects a value from the list. Finally, if it's something that is deterministic (known at game startup), then you can do this (in 1.15.x only):

DATA_EXPAND
{
    type  = Biome
    theBiome = Moon.Biomes()
}

The above basically creates a copy of the contract type for each biome, which means with the mission control changes in 1.15.x the player can see the different contracts/biomes before they are offered.

@hargn
Copy link
Contributor Author

hargn commented Jul 11, 2016

Thanks all for the info, these are a lot of ideas here, I will compile all of it to make the best contracts I can.

There is also the sun-synchronous orbit : https://en.wikipedia.org/wiki/Sun-synchronous_orbit, but I can't believe the tide effect that keep the satellite always oriented to the sun is well implemented into KSP.

Else I have seen a way to make variables where to put the list of biomes for an astral body. At each contract completion, the involved biome is removed from this list. So we can have repeatable scientific contracts. We can also look for the state of the art : https://github.com/jrossignol/ContractPack-FieldResearch/blob/master/GameData/ContractPacks/FieldResearch/BiomeStudy.cfg.
EDIT : Well seen @leudaimon, I just come to see the CC 1.15.x pre-release

But for me, it is not in the topic (as for the rover contracts), I think we should create another issue for the scientific satellites : this one is for communication satellites.

@PhineasFreak
Copy link
Contributor

@leudaimon yes, you could ignore the LAN restriction and just launch into a specific plane (like the stock "orbit" contracts).

@hargn we can include SSO contracts even if they are not supported yet but this could easily change if Principia gets an official release. Then the contracts will be already there, ready to unlease all the fun to the player!

@hargn
Copy link
Contributor Author

hargn commented Jul 11, 2016

I've updated the OP to reflect our ideas as a TODO list. Don't hesitate to comment it.

@PhineasFreak @jrossignol can we play with groups in order to know the actual list of GPS satellites currently active in order to know which planes have to be completed?
There is not only the GPS constellation, Galileo is coming, and India, China and Japon have there own GNSS that cover only a region of the globe. We can inspire ourselve to add more GNSS constellations.
Maybe we could also think about satellite replacement contracts?

@leudaimon i'm currently working on the two first milestones contract, if you want to implement other ones, you are welcome.

Else, I think it could be desirable to add a new branch where to put our first contracts before to merge them into the master one.
Who can do this?

@leudaimon
Copy link
Contributor

Cool @hargn, it's a really nice TODO. If I may give a suggestion, I don't think polar orbits are that common for communication satellites, even though they are useful for spy/observation satellites. Additionally, you are right regarding the ComSat vs. Scientific missions, they are better kept separated. Besides, at least for early-mid game, Comsats on earth and scientific missions in other bodies would be nice. Once I get some time I'll get to make a new issue OP to deal with scientific sats. I'll try to keep an eye at the advances here and in the ComSat contract building, and give input/help.

@hargn
Copy link
Contributor Author

hargn commented Jul 11, 2016

I know that the polar and sun-synchronous orbit are less common for commsats.
Update : weights for differents kind of orbits added.

I thought too about spy satellites that we could add to the scientific/observation satellites : SSO are commonly used I believe, and we can also design contracts to send spying satellites near other commsats as the Olymp-K russian sat did twice https://en.wikipedia.org/wiki/Intelsat_901. The spy sat should stay close to the commsat for a while (1d to 1w eg.)

@leudaimon
Copy link
Contributor

It's very cool have all these ideas coming out, even though I think it would be nice to start with a simpler set of contracts that allows the earth-based stock satellite contracts to be disabled. Here I have the Polar/GSO - Tundra and Molnyia/GEO set with milestones and repeatables in mind, with increasingly demanding antenna reach, maneuverability and power. Once this set is ready, other more advanced stuff can be added. What do you think?

@Zarbizaure Zarbizaure mentioned this issue Jul 11, 2016
12 tasks
@PhineasFreak
Copy link
Contributor

@hargn i believe that you can specify a "maxCompletions" for the contract so that it requires a minimum amount of satellites in order to complete it (although i do not know how to limit the orbital parameters to be within the limits of the GNSS constellation).

Galileo uses the same principles as the GPS but with vastly different operational parameters (higher orbits, half of the obital planes but with the same inclination). India's NAVIC uses GEO satellites to provide coverage so these can be done similarly as with the World First GEO contract and China's BeiDou system uses a mixture of these (both MEO and GEO).

@hargn
Copy link
Contributor Author

hargn commented Jul 12, 2016

I've started to write the two first contracts in the Milestones series.
For the second one, I would to check if the power storage is growing due to solar panels so I've requested a new contract parameter to CC. Here is the issue : jrossignol/ContractConfigurator#534.

I'm leaving on vacation for the next 10 days so I may to not work a lot on this issues during this period.
Can someone create the branch CommSatContract so I can push my work on it please?

@leudaimon
Copy link
Contributor

@hargn, Have you taken a look at RP-0/GameData/RP-0/Contracts/Satellite/WeatherContracts.cfg? I just noticed the low polar orbit contract, as well as some stuff similar to what you have in mind, is there. Maybe it would be nice to combine efforts, adjust some contracts there to make them more general and also contemplate commSats.
The GOES geosynchronous sats there look rather strange to me: orbital period matching solar instead of sidereal day, the inclination is low and very specific, PeA and ApA are not specified, allowing for a huge range of different orbits with different utilities. With some tweaking that could be changed into a set of repeatable contracts for GSOs both with communications and earth observation/weather applications. What do you think @dxdy-name?

@hargn
Copy link
Contributor Author

hargn commented Jul 15, 2016

@stratochief66 @PhineasFreak @NathanKell
Can you create a new branch where we can work on this issue.
I did some work : https://github.com/hargn/RP-0/tree/ComSatContracts and I need a new branch in order to deliver my work via a PR.
As what I did requires the next release of CC (1.15.2), it can't be merged directly into the master branch. If I can create it, please explain to me how I can do.
Thanks

@PhineasFreak
Copy link
Contributor

@hargn sorry for being late! Since you have already created a new branch for the contracts (ComSatContracts) you can create a PR from that one and push it to the RP-0 master. The KSP-RO people will have to wait of course for a formal release of CC 1.15 to fully merge it but you can work on it freely in the mean time.

@pap1723
Copy link
Contributor

pap1723 commented Dec 22, 2018

A lot of this was implemented in the contract Overhaul.

@pap1723 pap1723 closed this as completed Dec 22, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants