CMUAbstract/cote

simulation time

Closed this issue · 5 comments

I want to know that this is a whole simulation. What is the mechanism of time control
It's like when I ./bent_pipe ../configuration/planet-050-ns-002/, it's always running.
must waiting for the real trigger time?

If I want to deploy a 200 satellite constellation according to the orbital parameters, what are the suggestions for such a simulation? Can we conduct inter satellite communication?

If I want to deploy a 200 satellite constellation according to the orbital parameters, what are the suggestions for such a simulation? Can we conduct inter satellite communication?

I see that the .tle of all scenes in the sample is the same. The main problem is to want to how to specific the orbit parameters of all satellites.

The bent_pipe example simulates a constellation of satellites generated from a single “seed” satellite TLE and a constellation configuration file (the generate-constellation-configuration example provides more details for generating a constellation configuration file, particularly generate-constellation-configuration/scripts/generate_constellation_files.py). It simulates data collection and data transmission to ground stations.

Other examples simulate other systems, e.g. generate-voltage-trace simulates satellite energy collection, energy storage, and energy consumption by various peripherals as they transition between power modes.

Simulation time is controlled by the date-time.dat file (simulation start time), num-steps.dat file (number of simulation time steps to perform), and time-step.dat file (time between each simulation time step). In some cases, you can increase the time step to increase simulation speed at the expense of accuracy.

For the bent_pipe example, simulation could take awhile especially on slower computers (the program is CPU-bound and not memory-bound). Larger numbers of satellites and larger numbers of ground stations will increase execution time.

The bent_pipe example is designed to simulate future constellations generated from a single “seed” satellite TLE, but it easily could be modified to simulate many different deployed satellites using many different satellite TLE files.

A starting point would be to change this line:

std::filesystem::path satelliteFile; // satellite file

into a vector, like this line:
std::vector<std::filesystem::path> groundStationFiles; // ground station files

File parsing (satelliteFile = it->path();) would need to be updated (e.g. satelliteFiles.push_back(it->path());) as well as the // Set up satellites block similar to the // Set up ground stations block.

If you make these changes, please do submit a pull request as a new directory under cote/examples!

Crosslinks are supported; for example, see:

uint8_t Channel::getChannelType() const {

However, crosslinking has not been tested in any of the examples.

The bent_pipe example simulates a constellation of satellites generated from a single “seed” satellite TLE and a constellation configuration file (the generate-constellation-configuration example provides more details for generating a constellation configuration file, particularly generate-constellation-configuration/scripts/generate_constellation_files.py). It simulates data collection and data transmission to ground stations.

Other examples simulate other systems, e.g. generate-voltage-trace simulates satellite energy collection, energy storage, and energy consumption by various peripherals as they transition between power modes.

Simulation time is controlled by the date-time.dat file (simulation start time), num-steps.dat file (number of simulation time steps to perform), and time-step.dat file (time between each simulation time step). In some cases, you can increase the time step to increase simulation speed at the expense of accuracy.

For the bent_pipe example, simulation could take awhile especially on slower computers (the program is CPU-bound and not memory-bound). Larger numbers of satellites and larger numbers of ground stations will increase execution time.

The bent_pipe example is designed to simulate future constellations generated from a single “seed” satellite TLE, but it easily could be modified to simulate many different deployed satellites using many different satellite TLE files.

A starting point would be to change this line:

std::filesystem::path satelliteFile; // satellite file

into a vector, like this line:

std::vector<std::filesystem::path> groundStationFiles; // ground station files

File parsing (satelliteFile = it->path();) would need to be updated (e.g. satelliteFiles.push_back(it->path());) as well as the // Set up satellites block similar to the // Set up ground stations block.

If you make these changes, please do submit a pull request as a new directory under cote/examples!

Crosslinks are supported; for example, see:

uint8_t Channel::getChannelType() const {

However, crosslinking has not been tested in any of the examples.

Thank you for your answer. Next, I'll try to build a new scene and share.
I still need to confirm that crosslink refers to inter satellite links?

Yes, crosslink refers to communication between two satellites (https://github.com/CMUAbstract/cote/blob/master/references/wertz1999space.pdf PDF page 277 Fig. 13-1). You will need to provide rx-*.dat and tx-*.dat for each satellite, since each crosslink channel requires a Transmitter and a Receiver (bent-pipe example only uses tx-*.dat for each satellite).