Each entry in assets.space is a reusable spacecraft definition. Collections decide which teams receive instances of that definition.

Defining the top level

"assets": {
  "space": [
    {
      "id": "SC_001",
      "name": "Pathfinder",
      "orbit": {},
      "physics": {},
      "visualization": {},
      "controller": {},
      "components": []
    }
  ],
  "collections": []
}

id must be unique and stable. Collections, neutral assets, docking, and events can refer to it. name is the user-facing spacecraft name.

The runtime asset identifier shown in Operator is derived from the scenario definition and is not the same value as id.

Configuring an orbit

"orbit": {
  "planet": "Earth",
  "values": [7000.0, 0.0, 51.6, 0.0, 0.0, 0.0],
  "offset": [0, 0, 0, 0, 0, 0.001]
}

values uses:

  1. semi-major axis in kilometers
  2. eccentricity
  3. inclination in degrees
  4. right ascension of ascending node in degrees
  5. argument of periapsis in degrees
  6. true anomaly in degrees

offset uses the same order and units. It is useful when several constructed copies should not start at exactly the same orbital position.

Supported primary bodies include Earth, Moon, and Mars.

Configuring physics

"physics": {
  "override_mass": true,
  "mass": 100.0,
  "center_of_mass": [0, 0, 0],
  "inertia_tensor": [
    [10, 0, 0],
    [0, 10, 0],
    [0, 0, 10]
  ],
  "attitude": [0, 0, 0],
  "attitude_rate": [0, 0, 0]
}

When override_mass is false or omitted, component masses contribute to the spacecraft mass. Use an override only when the total mass properties are known.

Attitude is in degrees. Attitude rate is in degrees per second.

Configuring visualization

"visualization": {
  "mesh": "None",
  "scale": 1.0,
  "offset": [0, 0, 0],
  "reflectivity": 0.5,
  "hide": false
}

Mesh and scale affect rendering. hide: true removes the craft from normal visual discovery while it continues to simulate. Use hidden craft only when the exercise design requires it.

Configuring the controller

"controller": {
  "safe_fraction": 0.1,
  "capture_tax": 0.001,
  "downlink_tax": 0.001,
  "ping_interval": 20.0,
  "reset_interval": 300.0,
  "jamming_multiplier": 1.0,
  "enable_rpo_software": false,
  "enable_intercept": false
}
FieldPurpose
safe_fractionBattery threshold for safe behavior
capture_taxEnergy fraction charged for capture
downlink_taxEnergy fraction charged for downlink
ping_intervalAutomatic ping interval in simulation seconds
reset_intervalOffline interval following a reset
jamming_multiplierScales jammer effect
enable_rpo_softwareEnables rendezvous and proximity operations software
enable_interceptEnables uplink interception records

Rendezvous software still needs appropriate actuators and docking components. A boolean flag cannot replace the hardware.

Next, add component definitions.