question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Data structure for Falcon Heavy (and BFR)

See original GitHub issue

Sorry if you already debated this before, I was thinking what to expect about the 3 cores of Falcon Heavy.
For launches now we should get something like:

{
	"core_serial": "???",
	"rocket": {
		"rocket_id": "falcon_heavy",
		"rocket_name": "Falcon Heavy",
		"rocket_type": "FH1"
	},
	"land_success": null,
	"landing_type": "ASDS",
	"landing_vehicle": "OCISLY",
	"reused": true,
	"reuse": {
		"core": false,
		"side_core1": true,
		"side_core2": true,
		"fairings": false,
		"capsule": true
	}
}

There is a multiple core reuse but not multiple core_serial and landing data.

  • Option 1: Brand new properties

Following the reuse naming and keeping backward compatibility one could simply add:

{
	"core_serial": "B10xx",
+	"side_core1_serial": "B10yy",
+	"side_core2_serial": "B10zz",
	"rocket": {
		"rocket_id": "falcon_heavy",
		"rocket_name": "Falcon Heavy",
		"rocket_type": "FH1"
	}
}

The same for landing data:

{
	"land_success": null,
	"landing_type": "ASDS",
	"landing_vehicle": "OCISLY",
	"land_side_core1_success": null,
	"landing_side_core1_type": "RTLS",
	"landing_side_core1_vehicle": "LZ-1",
	"land_side_core2_success": null,
	"landing_side_code2_type": "RTLS",
	"landing_side_code2_vehicle": "LZ-2"
}

But feel bloated.

  • Option 2: Core properties can be array

{
	"core_serial": [ "B10xx", "B10yy", "B10zz" ],
	"land_success": [ null, null, null ],
	"landing_type": [ "ASDS", "RTLS", "RTLS" ],
	"landing_vehicle": [ "OCISLY", "LZ-1", "LZ-2" ]
}

Feel strange and can break things.

  • Option 3: Payloads-like solution

For multiple payloads there is an array, so something similar for the first stage could be possible adding a rocket.cores array:

{
	"rocket": {
		"rocket_id": "falcon_heavy",
		"rocket_name": "Falcon Heavy",
		"rocket_type": "FH1",
		"cores": [
			{
				"core_serial": "B10xx",
				"land_success": null,
				"landing_type": "ASDS",
				"landing_vehicle": "JRTI"
			},
			{
				"core_serial": "B10yy",
				"land_success": null,
				"landing_type": "RTLS",
				"landing_vehicle": "LZ-1"
			},
			{
				"core_serial": "B10zz",
				"land_success": null,
				"landing_type": "RTLS",
				"landing_vehicle": "LZ-2"
			}
		]
	}
}

If there is no core_serial, land_success, landing_type and landing_vehicle (which for multiple core seems incorrect anyway) I should find them in rocket.cores.

  • Future (BFR + ITS)

This question will arise again for BFR and ITS launches, where the latter is a second stage (not a payload) with his own serial, reuse, land_success, landing_type, landing_vehicle (and maybe landing_planet and his own payloads array).

Looking at vehicles endpoint and structure,

{
	"id": "falcon_heavy",
	"name": "Falcon Heavy",
	"type": "rocket",
	"stages": 2,
	"boosters": 2,
	"first_stage": {
		"reusable": "true",
		"engines": 27,
		"cores": 3
	},
	"second_stage": {
		"engines": 1,
		"payloads": {
			"option_1": "dragon",
			"option_2": "composite fairing"
		}
	}
}

a launches schema supporting more configurations could be:

Falcon Heavy

{
	"rocket": {
		"rocket_id": "falcon_heavy",
		"rocket_name": "Falcon Heavy",
		"first_stage": {
			"cores": [
				{
					"core_serial": "B10xx",
					"reuse": false,
					"land_success": null,
					"landing_type": "ASDS",
					"landing_vehicle": "JRTI"
				},
				{
					"core_serial": "B10yy",
					"reuse": true,
					"land_success": null,
					"landing_type": "RTLS",
					"landing_vehicle": "LZ-1"
				},
				{
					"core_serial": "B10zz",
					"reuse": true,
					"land_success": null,
					"landing_type": "RTLS",
					"landing_vehicle": "LZ-2"
				}
			]
		},
		"second_stage": {
			"payloads": [
				{
					"cap_serial": "zzzzz",
					"payload_type": "Dragon 1.2",
					"reuse": true,
					"land_success": null,
					"orbit": "TLI"
				}
			]
		}
	}
}

BFR + ITS

{
	"rocket": {
		"rocket_id": "bigfalconrocket",
		"rocket_name": "Big Falcon Rocket",
		"rocket_type": "BFR",
		"first_stage": {
			"cores": [
				{
					"core_serial": "xxxxx",
					"reuse": true,
					"land_success": null,
					"landing_type": "RTLS",
					"landing_vehicle": "LZ-1"
				}
			]
		},
		"second_stage": {
			"second_stage_id": "its",
			"second_stage_type": "ITS",
			"second_stage_serial": "yyyyy",
			"reuse": true,
			"land_success": null,
			"landing_type": "ASDS",
			"landing_vehicle": "OCISLY",
			"payloads": [
				{
					"payload_type": "Satellite",
					"orbit": "LEO"
				}
			]
		}
	}
}

Issue Analytics

  • State:closed
  • Created 6 years ago
  • Comments:10 (5 by maintainers)

github_iconTop GitHub Comments

1reaction
jakewmeyercommented, Nov 22, 2017

This is likely the schema I’ll go with, and the reuse section order will correspond to the order of cores listed in the array.

{
    "flight_number": 50,
    "launch_year": "2017",
    "launch_date_unix" : 1509392040,
    "launch_date_utc": "2017-10-30T19:34:00Z",
    "launch_date_local": "2017-10-30T15:34:00-04:00",
    "rocket": {
      "rocket_id": "falcon9",
      "rocket_name": "Falcon 9",
      "rocket_type": "FT",
      "first_stage": {
        "cores": [
          {
            "core_serial": "B1042",
            "reused" : false,
            "land_success": true,
            "landing_type": "ASDS",
            "landing_vehicle": "OCISLY"
          }
        ]
      },
      "second_stage": {
        "payloads": [
          {
            "payload_id": "KoreaSat 5A",
            "reused" : false,
            "customers": [
              "KT Corporation"
            ],
            "payload_type": "Satellite",
            "payload_mass_kg": 3700,
            "payload_mass_lbs": 8157.104,
            "orbit": "GTO"
          }
        ]
      }
    },
    "telemetry": {
      "flight_club": null
    },
    "reuse": {
      "core": false,
      "side_core1": false,
      "side_core2": false,
      "fairings": false,
      "capsule": false
    },
    "launch_site": {
      "site_id": "ksc_lc_39a",
      "site_name": "KSC LC 39A",
      "site_name_long" : "Kennedy Space Center Historic Launch Complex 39A"
    },
    "launch_success": true,
    "links": {
      "mission_patch": "http://spacexpatchlist.space/patches/spacex_f9_044_koreasat_5a_graphic.png",
      "reddit_campaign": "https://www.reddit.com/r/spacex/comments/73ttkd/koreasat_5a_launch_campaign_thread/",
      "reddit_launch": "https://www.reddit.com/r/spacex/comments/79iuvb/rspacex_koreasat_5a_official_launch_discussion/",
      "reddit_recovery": null,
      "reddit_media": "https://www.reddit.com/r/spacex/comments/79lmdu/rspacex_koreasat5a_media_thread_videos_images/",
      "presskit": "http://www.spacex.com/sites/spacex/files/koreasat5apresskit.pdf",
      "article_link": "https://spaceflightnow.com/2017/10/30/spacex-launches-and-lands-third-rocket-in-three-weeks/",
      "video_link": "https://www.youtube.com/watch?v=RUjH14vhLxA"
    },
    "details": "KoreaSat 5A is a Ku-band satellite capable of providing communication services from East Africa and Central Asia to southern India, Southeast Asia, the Philippines, Guam, Korea, and Japan. The satellite will be placed in GEO at 113° East Longitude, and will provide services ranging from broadband internet to broadcasting services and maritime communications."
}
0reactions
petroshcommented, Dec 25, 2017
  • Love your new entries on payload_id and orbit 😜
  • "rocket_type": "FT" we mean full thrust cores, or we want FH?
  • Nice you put day 31 because 0 gives error on date parsing. Worth adding in future a boolean NET flag, if true launch date is intended “not early than”?
Read more comments on GitHub >

github_iconTop Results From Across the Web

Falcon Heavy - Wikipedia
Falcon Heavy is a partially reusable heavy-lift launch vehicle that is produced by SpaceX, ... stage for Falcon 9, is a carbon fiber...
Read more >
Elon Musk explains why SpaceX's Falcon Heavy rocket is risky
Musk said the BFR is being designed with a reusable first-stage booster plus a reusable upper-stage spaceship, making it more economical than ...
Read more >
What is the difference between SpaceX's BFR and its Falcon ...
SpaceX's BFR is fully reusable, whereas the Falcon Heavy will only be partly reusable, making the BFR cheaper overall, despite being larger. Both...
Read more >
Falcon Heavy Test Flight - YouTube
Following its first test launch, Falcon Heavy is now the most powerful operational rocket in the world by a factor of two.
Read more >
SpaceX Explores Commercial Options for Updated BFR ...
SpaceX has yet to debut the Falcon 9 Block 5 version and demonstrate its re-use over numerous mission cycles to achieve the company's...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found