import ffmpeg
import subprocess
import os
import re
import json
import csv
from pathlib import Path
import plotly.express as px
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
Slow Mo video¶
Analysis¶
The first evidence of a rocket plume is in frame 268 at timecode: 30.197917
and the last frame containing the rocket is frame 288 at timecode: 30.314583
So for the rocket to clear the frame in this video took:
30.314583 - 30.197917
0.1166659999999986
Video 2- handheld - full flight¶
Analysis¶
The first frame here showing rocket plume is at frame 25 at a timecode of 18.145000
and the rocket has cleared the viewport by frame 31 at time 18.245000 - so this covers a similar range to the slowmo video for the launch
The bottle is then re-acquired by frame 91 at time 19.245000 - exactly a second later
By frame 176 at time 20.663333 the rocket has reached apogee and is starting to descend
Around frame 208 at time 21.196667 the rocket is clearly descending and leaning over to the right
At frame 245 t=21.813333 the rocket starts executing a flip to a nose down orientation
and by frame 265 t=22.146667 the rocket is pointing downwards and precessing slightly around the z axis
at around frame 388 t=24.198333 it is possible that the rocket crashes into the building
import pandas as pd
frame_data = [
{"Frame": 25, "Time (s)": 18.145000, "Description": "First frame showing rocket plume"},
{"Frame": 31, "Time (s)": 18.245000, "Description": "Rocket has cleared the viewport"},
{"Frame": 91, "Time (s)": 19.245000, "Description": "Bottle re-acquired"},
{"Frame": 176, "Time (s)": 20.663333, "Description": "Rocket at apogee, starting to descend"},
{"Frame": 208, "Time (s)": 21.196667, "Description": "Rocket clearly descending and leaning right"},
{"Frame": 245, "Time (s)": 21.813333, "Description": "Rocket starts executing flip to nose down"},
{"Frame": 265, "Time (s)": 22.146667, "Description": "Rocket pointing downwards, precessing around z-axis"},
{"Frame": 388, "Time (s)": 24.198333, "Description": "Possible rocket crash into building"},
]
df = pd.DataFrame(frame_data)
t_zero = df['Time (s)'].min()
df['∆T (s)'] = df['Time (s)'] - t_zero
df
Frame | Time (s) | Description | ∆T (s) | |
---|---|---|---|---|
0 | 25 | 18.145000 | First frame showing rocket plume | 0.000000 |
1 | 31 | 18.245000 | Rocket has cleared the viewport | 0.100000 |
2 | 91 | 19.245000 | Bottle re-acquired | 1.100000 |
3 | 176 | 20.663333 | Rocket at apogee, starting to descend | 2.518333 |
4 | 208 | 21.196667 | Rocket clearly descending and leaning right | 3.051667 |
5 | 245 | 21.813333 | Rocket starts executing flip to nose down | 3.668333 |
6 | 265 | 22.146667 | Rocket pointing downwards, precessing around z... | 4.001667 |
7 | 388 | 24.198333 | Possible rocket crash into building | 6.053333 |
df.to_csv("mission-timeline.csv")