將桌球的軌跡座標作為資料,對其各軸之位置與其變化量作圖,並利用部分資料做線性迴歸,找出重力加速度之值,以進一步用於軌跡預測與球的落點。
Trajectory Plot Test.ipynb
分為兩的部分:
- Part 1
- 以 https://github.com/amrut-prabhu/table-tennis-ball-trajectory 中經處理後的三軸座標中的第 4 筆資料(
3dpts_3.csv
)(已附於此 repo 中)作為原始資料 - 有將原始資料經 Savitzky-Golay filter平滑處理(X, Y, Z, traj_after),後續作圖、線性迴歸等步驟均是用平滑後之資料
- 假設 X、Y 軸無加速度(等速度),以第10列~第28列(Frame)的 X軸座標、Y軸座標和Z軸座標變化量作為線性迴歸依據,分別得到估計之 X軸速度(slope_X)、Y軸速度(slope_Y)及重力加速度(slope_VZ)(線性迴歸之斜率)
- 從第10列(Frame)開始,以所估計出來的速度與加速度,利用函式
trajectory_
預測至球落桌面(zlimit=0)以前之軌跡/座標,並將預測座標與實際座標作圖 - 利用函式
SSE_
計算預測軌跡與實際資料之誤差 - 透過牛頓迭代法和內插法求得預測落點座標,即 Z=0 時 X、Y 之座標與第幾個Frame(以Frame代替時間)
- 以 https://github.com/amrut-prabhu/table-tennis-ball-trajectory 中經處理後的三軸座標中的第 4 筆資料(
- Part 2
- 以模擬物理模型所產生之資料
1V_0.62089_0.73994_0.25882W_31.4159_0_0.csv
(已附於此 repo 中)作為原始資料,此物理模型假設 X、Y 軸無加速度(等速度),重力加速度為 9.8 m/s^2 - 只擷取球第一次落到桌面時之前的數據作為預測、分析依據
- 以第5列~第9列的資料進行線性迴歸,得到 X、Y軸速度(slope_X、slope_Y)及重力加速度(slope_VZ)(為物理模型,因此誤差=0)
- 從第5列開始,以不同的時間差(Δ𝑡=0.01, 0.001, 0.0001, 0.005)和加速度,利用函式
trajectory
,分別進行軌跡(因 X、Y 軸等速度,因此可由第6列座標減去第5列座標,得到 X、Y軸之速度)。由於此物理模型假定桌球半徑為 0.02m,因此在分析落點的 Z軸限制更改為 0.02(zlimit=0.02),此外,對於 X、Y軸也有限制,對應於桌球桌之長度和寬度之限制。Δ𝑡 與程式碼中儲存預測軌跡之對應變數名稱,其對應如下:
- 以模擬物理模型所產生之資料
Δ𝑡(s) | 對應名稱 |
---|---|
0.01 | TTEST |
0.001 | TTEST2 |
0.0001 | TTEST3 |
0.005 | TTEST4 |
-
Part 2(續)
- 針對不同的時間差之預測軌跡,利用函式
SSE
分別計算各軸誤差 - 同樣以牛頓迭代法計算各個時間差下所預測之落點位置與時間,並加以探討
預測結果
- 針對不同的時間差之預測軌跡,利用函式
Δ𝑡 | Time(s) | x(m) | y(m) | z(m) |
---|---|---|---|---|
0.01 | 0.192819 | 0.500981 | 0.092676 | 0.02 |
0.005 | 0.190744 | 0.499692 | 0.0911406 | 0.02 |
0.001 | 0.189079 | 0.498658 | 0.0899082 | 0.02 |
0.0001 | 0.188705 | 0.498426 | 0.0896319 | 0.02 |
實際落點
Δ𝑡 | Time(s) | x(m) | y(m) | z(m) |
---|---|---|---|---|
0.19284 | 0.50098 | 0.092694 | 0.02 |