# Was Roadster (Starman) seen in Earth orbit, before the long burn to deep space?

Discussion in comments below this answer tend to conclude that 1st stages come back to Earth and so (essentially) all those tumbling rocket body objects in Heavens Above are 2nd stages, though I suppose a few could be third stages; it's not absolutely impossible.

Since Starman/Roadster was a 2nd stage rocket body orbiting the Earth for six hours, there is some possibility of it being seen from the ground at night.

As far as I remember, 2018-017A, 43205 did receive have a TLE, so this trajectory is calculable. The orbit was elliptical, so it may have spent a good fraction of its short orbital lifetime in the Sun.

A license for the launch was issued by the US Office of Commercial Space Transportation on February 2, 2018. The rocket lifted off from Launch Complex 39A at Kennedy Space Center at 15:45 EST (20:45 UTC) on February 6, 2018, and was initially placed in Earth parking orbit while remaining attached to the Falcon Heavy second stage. After a longer-than-usual six-hour coast phase through the Van Allen radiation belts, thereby demonstrating a new capability requested by the U.S. Air Force for direct geostationary orbit (GEO) insertion of heavy intelligence satellites, the second stage reignited for the Earth-escape trajectory

The notable amateur astronomer, award winning IOTA member and expert asteroid occultation timing-ist Derek C. Breit wrote on the Seesat-l (visual satellite observing) mail list that his video shows the second stage/Roadster before the start of the escape burn. See his post here.

Source

He links there to the video can be found at bottom right in poyntsource.com Download is 256 MB.

A clip from the video was tweeted by Information Security engineer and NASA Solar System Ambassador Tony Rice.

Derek Breit imaged the upper stage of #FalconHeavy passing over California

The time displayed in the full video shows 02:26:01 to 02:32:07 presumably UTC. That would be in the evening, 7:26 to 7:32 PM, Pacific daylight time, and presumably 5 hours, 45 minutes after launch. According to Wikipedia's Falcon Heavy test flight#Flight timeline the 2nd burn started about 15 minutes later at T+ 06:00:00.

• I've added supporting links to the information. Both Derek Breit and Tony Rice seem to be quite credible sources for amateur astronomy observing, I think you've found a bona fide observation of Roadster in orbit, great work! – uhoh Nov 3 '18 at 2:17

Yes, the Catalina Sky Survey did in fact observe Starman:

• Thanks for your answer. Many telescopes were abel to pick up Roadster in deep space in the following weeks, but this question is only about those first six hours right after launch when was still in a low orbit around the Earth. I don't think this sky survey applies in this case. If you are interested you can have a look at the answers to When was the last time that Starman/Roadster was seen? – uhoh Nov 3 '18 at 1:43

I will augment @JohnHoltz's excellent answer with some data.

I took the coordinates for LC-39 and Morgan Hill California (red and black dots, respectively) and put them in the Python package Skyfield along with the last of a group of ten TLEs for Roadster I received via Celestrak's standard request form (2018-017A, 43205).

You can see that both passes went nicely over California with plenty of altitude.

Time in hours is since 06-feb-2018 00:00 UTC. The black circle in the horizon plot is the horizon, traces outside it are below the horizon. Radius is 1 - elevation/90°. North is up, East to the right.

Thick lines in the altitude and distance plots represent the periods when Roadster was above the horizon for Morgan Hill California.

TLE = """1 43205U 18017A   18038.22157858  .00505133 -52681-6  23951-2 0  9997
2 43205  29.0196 286.7252 3400758 181.1849 342.1043  8.76376464    24"""

import numpy as np
import matplotlib.pyplot as plt
from skyfield.api import Loader, Topos, EarthSatellite

halfpi, pi, twopi = [f*np.pi for f in (0.5, 1, 2)]

Earth    = data['Earth']

# https://en.wikipedia.org/wiki/Falcon_Heavy_test_flight
# Liftoff T+00:00:00   February 6, 2018 at 20:45:00 UTC
# Liftoff T+00:00:00   February 6, 2018 at 20:45:00 UTC
# SECO 1  T+00:08:31   February 6, 2018 at 20:53:31 UTC
# SES 2   T+06:00:00   February 7, 2018 at 02:45:00 UTC

minutes  = np.arange(53.5, 360+45, 0.1)
hours    = 20 + minutes/60.
times    = ts.utc(2018, 2, 6, hours)

posn     = geocen.position.km
altitude      = np.sqrt((posn**2).sum(axis=0)) - 6378.137
path     = geocen.subpoint()

lat, lon   = [degs*getattr(path, thing).radians for thing in ('latitude', 'longitude')]
jumps      = (np.abs(lon[1:]-lon[:-1]) > 60)
jumps      = np.hstack((jumps, jumps[-1:]))
lat[jumps] = np.nan

print posn.shape

# http://www.satobs.org/seesat/Feb-2018/0060.html
# https://en.wikipedia.org/wiki/Morgan_Hill,_California 37.130556, -121.654444
Morgan_Hill          = Topos(37.1306, -121.6544, elevation_m=107)
obslat, obslon       = [getattr(Morgan_Hill, attr).degrees for attr in ('latitude', 'longitude')]

# https://en.wikipedia.org/wiki/Kennedy_Space_Center_Launch_Complex_39
Kennedy_LC39         = Topos(28.608397, -80.604345, elevation_m=10)
launchlat, launchlon = [getattr(Kennedy_LC39, attr).degrees for attr in ('latitude', 'longitude')]

if True:
plt.figure()
plt.plot(lon, lat)
plt.plot([launchlon], [launchlat], 'or')
plt.plot([obslon], [obslat], 'ok')
plt.show()

above  = r <= 1.0
x, y   = [r*f(az.radians) for f in (np.sin, np.cos)]
th     = np.linspace(0, twopi, 361)
xc, yc = [f(th) for f in (np.sin, np.cos)]

distkm = dist.km
distkmvis = distkm.copy()
distkmvis[~above] = np.nan

if True:
plt.figure()
plt.plot(x, y)
plt.plot(x[:1], y[:1], 'or')
plt.plot(x[-1:], y[-1:], 'ok')
plt.plot(xc, yc, '-k')
plt.xlim(-2, 2)
plt.ylim(-2, 2)
plt.show()

if True:
plt.figure()

plt.subplot(2, 1, 1)

plt.plot(hours, distkmvis, '-k', linewidth=3.0)
plt.plot(hours, distkm,    '-b', linewidth=1.0)
plt.plot(hours[:1],  distkm[:1],    'or')
plt.plot(hours[-1:], distkm[-1:],   'ok')
plt.ylim(0, None)
plt.title('line-of-sight distance (km)')

plt.subplot(2, 1, 2)

altitudevis = altitude.copy()
altitudevis[~above] = np.nan
plt.plot(hours, altitudevis, '-k', linewidth=3.0)
plt.plot(hours, altitude,    '-b', linewidth=1.0)
plt.plot(hours[:1],  altitude[:1],    'or')
plt.plot(hours[-1:], altitude[-1:],   'ok')
plt.title('altitude (km)')
plt.ylim(0, None)

plt.show()

if True:
plt.figure()
plt.subplot(2, 1, 1)
plt.plot(hours, alt.degrees)
plt.plot(hours, az.degrees)
plt.subplot(2, 1, 2)
plt.plot(hours, dist.km)
plt.show()

if True:
plt.figure()
plt.subplot(2, 1, 1)
plt.plot(hours, lat)
plt.plot(hours, lon)
plt.xlabel('06-feb-2018 UTC hours', fontsize=16)
plt.ylabel('lat, lon (degs)', fontsize=16)
plt.subplot(2, 1, 2)
plt.plot(hours, dist.km)
plt.xlabel('06-feb-2018 UTC hours', fontsize=16)
plt.ylabel('', fontsize=16)
plt.show()