先前那個測速球啊.. 萊恩大兵做了一些拋接實驗, 要來估算球的速度.
[前情提要]
萊恩大兵發願要做一顆能測量投手球速的棒球. 這期間做了不少研究與實驗, 可參考這幾篇文章知道來龍去脈.
* 自動報球速的棒球, (2) 第一版試作品 (Arduino, NanoWii, microSD, MPU6050)
* 自動報球速的棒球, (1) 概念與雛形 (Arduino, MPU-6050, HC-06)
=-=-=-=-=-=-=- 分隔線 -=-=-=-=-=-=-=-=
先講一下這次實驗的設定條件.
(1) MPU6050 的 accel sensitivity 是設在 +/- 8g.
參考這篇的計算,
+/-16g 的靈敏度只能測到最快 ~90km/hr 的速度,
+/- 8g 最快只有 63km/hr,
以拋接壘球來說, 這範圍應該是夠用的.
(2) 速度計算公式
MPU6050 吐出來的數據 (ax/ay/az) 值會在 -32768 ~ 32767 之間.
將它轉成 g 值的公式則為 g = (N * accel sens) / 32767,
而 accel sens 設為 +/- 8g, 1g = 9.8 m/s^2, 因此,
加速度 a = (N * 8) * 9.8 / 32767 m/s^2
(3) ax/ay/az sampling rate
MPU6050 會每 10ms 丟出一筆 (ax, ay, az) 數據出來. 程式會將數據即時寫到 MicroSD 卡上.
(4) 分析工具
這部份是手工作業. 萊恩大兵將數據匯入 Google Doc 試算表, 再來做計算, 分析與圖表.
=-=-=-=-=-=-=- 分隔線 -=-=-=-=-=-=-=-=
第一段: 30.3 km/hr
第二段: 80.6 km/hr (這數字已超過量測上限)
第三段: 53 km/hr
第四段: 76.1 km/hr (這數字已超過量測上限)
=-=-=-=-=-=-=- 分隔線 -=-=-=-=-=-=-=-=
這邊要講實驗細節與分析方法了.
首先, 萊恩大兵做了一些實驗, 來了解各不同情境下, ax/ay/az 三軸的數據線型, 各是長得什麼模樣?
(1) ax 向前, ay 水平, az 和地心引力同向, 持球, 手舉高
(2) ay 向前, ax 水平, az 和地心引力同向, 持球, 手舉高
(3) az 向前, ay 水平, ax 和地心引力同向, 持球, 手舉高
(5) ax 向前, ay 水平, az 和地心引力同向, 持球, 手平伸
* (5) 和 (1) 很類似, 差別只有手持球的高度
(6) ay 向前, ax 水平, az 和地心引力同向, 持球, 手平伸
* (6) 和 (2) 很類似, 差別只有手持球的高度
(7) ay 向前, ax 水平, az 和地心引力同向, 持球, 手平伸
* (7) 和 (3) 很類似, 差別只有手持球的高度
(8) ay 向前, ax 水平, az 和地心引力同向, 持球, 手平伸
* (8) 和 (4) 很類似, 差別只有手持球的高度
(9) 是從 (1) 變成 (5)
(10) 是從 (2) 變成 (6)
(11) 是從 (3) 變成 (7)
(12) 是從 (4) 變成 (8)
(13) 手拿球, 左手丟右手
(14) 兩人拋接, 壘球投手距離
=-=-=-=-=-=-=- 分隔線 -=-=-=-=-=-=-=-=
根據這些線型, 萊恩大兵歸納出來的計算方法是:
* (8) 和 (4) 很類似, 差別只有手持球的高度
(9) 是從 (1) 變成 (5)
(10) 是從 (2) 變成 (6)
(11) 是從 (3) 變成 (7)
(12) 是從 (4) 變成 (8)
(13) 手拿球, 左手丟右手
(14) 兩人拋接, 壘球投手距離
=-=-=-=-=-=-=- 分隔線 -=-=-=-=-=-=-=-=
根據這些線型, 萊恩大兵歸納出來的計算方法是:
[1] 找出整個出手施力的過程
以 (14) 的第一段拋接為例, 原數據線圖如下:
肉眼判斷, 這個出手施力的過程會是 (496th ~ 571th), 線圖為:
[2] 扣掉 ax/ay/az 三軸的平均偏移值來做 normalize
繼續以 (14) 的第一段拋接為例, 偏移值就拿 (396th ~ 495th) 的數據做平均. 再將上一段的圖做 normalize. 新的線圖為:
[3] 再針對 normalized 的線圖去積分出三軸的分速度, 最後再總合出總速度.
實際計算時, 發現會有幾個變數..
以 (14) 的第一段拋接為例, 原數據線圖如下:
肉眼判斷, 這個出手施力的過程會是 (496th ~ 571th), 線圖為:
[2] 扣掉 ax/ay/az 三軸的平均偏移值來做 normalize
繼續以 (14) 的第一段拋接為例, 偏移值就拿 (396th ~ 495th) 的數據做平均. 再將上一段的圖做 normalize. 新的線圖為:
調整過後, 會發現 ax/ay/az 比較靠近 x 軸了.
[3] 再針對 normalized 的線圖去積分出三軸的分速度, 最後再總合出總速度.
![]() |
| 算出的最高末速為 ~30.3 km/hr |
(a) 平均偏移值不好計算
繼續以 (14) 的第一段拋接為例. 同一張線圖, 抓施力前的 126 筆數據 (370th ~ 495th) 來做平均偏移值, 最後計算出來的速度為 37.4 km/hr, 和先前的 30.3 km/hr 相比, 就差了快 7 km/hr.![]() |
| 取前 126 筆數據做平均偏移值 |
![]() |
| 算出的最高末速為 ~37.4 km/hr |
肉眼看線圖是可以分辨出 持球靜止/施手出力/球飛行/球進捕手手套 的段落. 但是, 要從數據找個規則, 精確抓出施力的過程就不容易了. 10ms 一筆數據, 100 筆就是一秒鐘了. 取多取少, 算出來的速度值會差很多.
![]() |
| 施力過程取樣 106 筆數據 |
![]() |
| 算出的最高末速為 ~38 km/hr |
檢討.. 該抓多少筆數據來作施力的過程與計算平均偏移值呢?
來算一下. 利用 V^2 = Vo^2 + 2aS 的公式來反推.
壘球投手拋球, 持球抬臂到出手,
球走的軌跡大約 1.5m.
球的初速為 0 m/s.
則
a = 2g 時, 末速 V = 9.39 m/s 或是 33.81 km/hr, 施力時間會是 0.319s 或是 319ms.
a = 3g 時, 末速 V = 11.5 m/s 或是 41.41 km/hr, 施力時間會是 0.261s 或是 261ms.
a = 4g 時, 末速 V = 13.28 m/s 或是 47.81 km/hr, 施力時間會是 0.226s 或是 226ms.
a = 5g 時, 末速 V = 14.85 m/s 或是 53.46 km/hr, 施力時間會是 0.202s 或是 202ms.
a = 6g 時, 末速 V = 16.27 m/s 或是 58.57 km/hr, 施力時間會是 0.184s 或是 184ms.
a = 7g 時, 末速 V = 17.57 m/s 或是 63.25 km/hr, 施力時間會是 0.171s 或是 171ms.
也就是.. 球速慢一點話, 應該抓 32 筆數據, 球速快一點則抓 18 筆數據. 先前幾次的計算, 都抓到 60 筆數據, 看來是抓太多了.
重新計算 (14) 的四段拋接球速, 都抓 25 筆數據來計算, 會得到速度值為:
這一輪的算出來的速度值, 看起來比較合理了. 至於準不準, 就得另外拿測速槍做比對了.
這次的實驗進展就這些, 總結一下, 這次遇到的幾個問題:
(a) 量測的精度不夠
MPU6050 每 10ms 吐一筆數據, 對付 34 km/hr 的速度, 也僅能抓到 32 筆數據. 若球速再高一點, 能抓到的數據變少, 相對誤差就會變大了.
所以像 (13) 的圖, 球飛行時, 數據是直線, 就是量測精度不夠造成的.
(b) 需要有個好方法來決定數據線圖裡, 哪邊是施力開始? 哪邊又是施力結束? 而且這方法是要能編寫成程式來執行的.
(c) MPU6050 的量測範圍不夠.
(d) 不確定這些量測數據, 有無需要過一遍卡爾曼濾波?
(d) 球殼太脆弱, 才只是拋接壘球而已, 球殼骨架就斷掉了.
(2014/10/16, 更新) 這篇文章在臉書上得到不少朋友的迴響, 擷圖如下.
[萊恩大兵的其它文章]
自製大四軸
* 自製大四軸, 零組件篇, (1) 遙控器 (Drone, Quadcopter, Futaba, Maker, Arduino, Animatronic Eye)
* 自製大四軸, 零組件篇, (2) 飛控板 (Drone, Quadcopter, MultiWii, Arduino, Futaba, Maker)
* 自製大四軸, 零組件篇, (3) 自行雷切木質機架 (Drone, Quadcopter, Maker, Laser Cut)
自動報球速的棒球
藍色小鋪一起來做
* 藍色小鋪一起來做, 用 beacon 控制開關的枱燈
* 藍色小鋪一起來做, 講解 BLE CC2540 UART 通訊範例程式 (Bluetooth, CC2540, UART)
* 藍色小鋪一起來做, 藍牙枱燈專案實作 (上) (Bluetooth, CC2540)
* 藍色小鋪一起來做, 藍牙枱燈專案實作 (下) (Bluetooth, CC2540)
小惡魔 無線溫度感測器
[萊恩大兵的其它文章]
自製大四軸
* 自製大四軸, 零組件篇, (1) 遙控器 (Drone, Quadcopter, Futaba, Maker, Arduino, Animatronic Eye)
* 自製大四軸, 零組件篇, (2) 飛控板 (Drone, Quadcopter, MultiWii, Arduino, Futaba, Maker)
* 自製大四軸, 零組件篇, (3) 自行雷切木質機架 (Drone, Quadcopter, Maker, Laser Cut)
自動報球速的棒球
* 自動報球速的棒球, (1) 概念與雛形 (Arduino, MPU-6050, HC-06)
* 自動報球速的棒球, (2) 第一版試作品 (Arduino, NanoWii, microSD, MPU6050)
* 自動報球速的棒球, (3) 拋接實驗的數據分析 (Arduino, NanoWii, microSD, MPU6050)
* 自動報球速的棒球, (2) 第一版試作品 (Arduino, NanoWii, microSD, MPU6050)
* 自動報球速的棒球, (3) 拋接實驗的數據分析 (Arduino, NanoWii, microSD, MPU6050)
* 做實驗, 寫入 EEPROM 的速度能否跟得上 MPU6050 的數據產出? (Arduino, MPU-6050, EEPROM)
* 筆記, NanoWii, 一些經驗分享 (Arduino, NanoWii, MPU6050)
* Murmur, 很小很強大的穿戴式裝置模組 (Realtag, Bluetooth, CC2540, MPU6050, BMP180)
* 筆記, NanoWii, 一些經驗分享 (Arduino, NanoWii, MPU6050)
* Murmur, 很小很強大的穿戴式裝置模組 (Realtag, Bluetooth, CC2540, MPU6050, BMP180)
CC2540 Bluetooth Low Energy
* 筆記, CC2540 Bluetooth Low Energy, (1) 開發環境 架設 (Bluetooth, CC2540)
* 筆記, CC2540 Bluetooth Low Energy, (2) 跑第一個範例程式 (Bluetooth, CC2540)
* 筆記, CC2540 Bluetooth Low Energy, (3) SimpleBLEPeripheral 簡單介紹 (Bluetooth, CC2540)
* 筆記, CC2540 Bluetooth Low Energy, (4) 在智慧手機上執行範例程式 (Bluetooth, CC2540)
* 筆記, CC2540 Bluetooth Low Energy, (5) 偵測與發送 iBeacon 訊號 (Bluetooth, CC2540, iBeacon)
* 實作, iBeacon 發訊器 x 防丟器 (Bluetooth, CC2540, iBeacon)
* 實作, iBeacon 尋寶遊戲 (Bluetooth, CC2540, iBeacon, iOS app)
* 實作, BLE + iOS app, 遙控燈泡君 (Bluetooth, CC2540, iOS app)
* 做實驗, 用 iBeacon 做自動控制的可行性 (Bluetooth, iBeacon, CC2540, Automation, URL Scheme, iOS app)
* 筆記, CC2540 Bluetooth Low Energy, (2) 跑第一個範例程式 (Bluetooth, CC2540)
* 筆記, CC2540 Bluetooth Low Energy, (3) SimpleBLEPeripheral 簡單介紹 (Bluetooth, CC2540)
* 筆記, CC2540 Bluetooth Low Energy, (4) 在智慧手機上執行範例程式 (Bluetooth, CC2540)
* 筆記, CC2540 Bluetooth Low Energy, (5) 偵測與發送 iBeacon 訊號 (Bluetooth, CC2540, iBeacon)
* 實作, iBeacon 發訊器 x 防丟器 (Bluetooth, CC2540, iBeacon)
* 實作, iBeacon 尋寶遊戲 (Bluetooth, CC2540, iBeacon, iOS app)
* 實作, BLE + iOS app, 遙控燈泡君 (Bluetooth, CC2540, iOS app)
* 做實驗, 用 iBeacon 做自動控制的可行性 (Bluetooth, iBeacon, CC2540, Automation, URL Scheme, iOS app)
藍色小鋪一起來做
* 藍色小鋪一起來做, 用 beacon 控制開關的枱燈
* 藍色小鋪一起來做, 講解 BLE CC2540 UART 通訊範例程式 (Bluetooth, CC2540, UART)
* 藍色小鋪一起來做, 藍牙枱燈專案實作 (上) (Bluetooth, CC2540)
* 藍色小鋪一起來做, 藍牙枱燈專案實作 (下) (Bluetooth, CC2540)
小惡魔 無線溫度感測器
* 小惡魔, (1) 溫度感測 + 物聯網 (Electric Imp, Xively, LM35, Internet of Things)
* 小惡魔, (2) 溫度感測 + 物聯網 + 事件觸發 (Electric Imp, Xively, LM35, Internet of Things)
* 小惡魔, (2) 溫度感測 + 物聯網 + 事件觸發 (Electric Imp, Xively, LM35, Internet of Things)
108 大眼仔
Plot Clock
* 實作, 電容感應音樂樹
* 修理, 樂高馬達 8883 (LEGO 8883 Power Functions M-Motor)
* 修理, (part 2) 樂高馬達 8883 (LEGO 8883 Power Functions M-Motor)
* 修理, 液晶螢幕 (LCD)
* 108 大眼仔, 初登場 (Arduino, SG-90, Maker Faire Taipei 2014, Animatronic Eye)
* 108 大眼仔, 進化, (1) 專屬程式庫 (Arduino, SG90, Animatronic Eye)
* 108 大眼仔, 進化, (2) 當我們串在一起 (Arduino, SG90, Animatronic Eye, I2C)
* 108 大眼仔, 進化, (3) 檢查 Gmail 信箱 (Arduino, SG90, Animatronic Eye, Temboo)
* 108 大眼仔, 進化, (4) 看著我的臉 (Arduino, SG90, Animatronic Eye, OpenCV, Processing, I2C)
* 108 大眼仔, 進化, (5) 迎著人來人往 (Arduino, SG90, Animatronic Eye, OpenCV, Processing, I2C)
* 108 大眼仔, 檢討筆記, 我要一個打十個 (Arduino, SG90, Animatronic Eye)
* 108 大眼仔, 進化, (1) 專屬程式庫 (Arduino, SG90, Animatronic Eye)
* 108 大眼仔, 進化, (2) 當我們串在一起 (Arduino, SG90, Animatronic Eye, I2C)
* 108 大眼仔, 進化, (3) 檢查 Gmail 信箱 (Arduino, SG90, Animatronic Eye, Temboo)
* 108 大眼仔, 進化, (4) 看著我的臉 (Arduino, SG90, Animatronic Eye, OpenCV, Processing, I2C)
* 108 大眼仔, 進化, (5) 迎著人來人往 (Arduino, SG90, Animatronic Eye, OpenCV, Processing, I2C)
* 108 大眼仔, 檢討筆記, 我要一個打十個 (Arduino, SG90, Animatronic Eye)
* Murmur, 有趣的零件售價
* Murmur, Arduino 保險桿 (Arduino, bumper, 3D printing)
* Murmur, 許一個 maker 分享網站
* Murmur, 物聯網新概念- The Physical Web (Internet of Things, The Physical Web)
* Murmur, 關於 HP Sprout 的一點想法
* Murmur, 說中文很難嗎? (Toy, Reed Switch, Voice Recorder Module)
* Murmur, 停車場自動繳費機的兩三事 (Kiosk)
* Murmur, 為什麼是 WiFi? 關於小米空氣清淨器的一點看法.. (Internet of Things)
* Murmur, 機器人是時尚元素? (Robot, Fashion)
* Murmur, Arduino 保險桿 (Arduino, bumper, 3D printing)
* Murmur, 許一個 maker 分享網站
* Murmur, 物聯網新概念- The Physical Web (Internet of Things, The Physical Web)
* Murmur, 關於 HP Sprout 的一點想法
* Murmur, 說中文很難嗎? (Toy, Reed Switch, Voice Recorder Module)
* Murmur, 停車場自動繳費機的兩三事 (Kiosk)
* Murmur, 為什麼是 WiFi? 關於小米空氣清淨器的一點看法.. (Internet of Things)
* Murmur, 機器人是時尚元素? (Robot, Fashion)
* 開箱, 鋼彈小劇場 (Pepper's Ghost, GUNDAM)
* 開箱, 偉力控二號機, 小四軸飛行器 (CG022, Quadcopter)
* 偉力控二號機, 修理防護罩與飛行心得 (CG022, Quadcopter)
* 偉力控二號機, 我想有個家 (CG022, Quadcopter)
* 偉控力二號機, 換馬達 (CG022, Quadcopter)
* 偉力控二號機, 盒子上的洞 (CG022, Quadcopter)
* 開箱, 偉力控二號機, 小四軸飛行器 (CG022, Quadcopter)
* 偉力控二號機, 修理防護罩與飛行心得 (CG022, Quadcopter)
* 偉力控二號機, 我想有個家 (CG022, Quadcopter)
* 偉控力二號機, 換馬達 (CG022, Quadcopter)
* 偉力控二號機, 盒子上的洞 (CG022, Quadcopter)
* 修理, 樂高馬達 8883 (LEGO 8883 Power Functions M-Motor)
* 修理, (part 2) 樂高馬達 8883 (LEGO 8883 Power Functions M-Motor)
* 修理, 液晶螢幕 (LCD)











































沒有留言:
張貼留言