油管網紅博主打造“全自動擊球”桌球桿扣動扳機變身丁俊暉
在油管上有這麼一位博主Shane Wighton,他在運動方面經常被妻子血虐。於是,他經常造一些諸如“百發百中弓箭”、“百發百中籃球板”等作弊道具來挑戰他妻子。這一次,Shane Wighton買了設備跟妻子打台球。結果不出意料,Shane Wighton再次被妻子無情嘲諷。
既然正常比賽打不過,那就用科技打敗魔法。Shane Wighton決定發動自己的天賦技能“創造”,打造一根全自動球桿。
這個玩意有多酷呢,球桿的算法會自動計算最優的擊球路徑,桌球檯上方的投影儀會給出最佳擊球位置,使用者只需要扣動扳機即可變身桌球國手。
具體效果如何?咱直接看動圖。
只見使用者拿起球桿,上膛、扣扳機、球桿自瞄、擊球入洞這一系列動作行雲流水。使用者需要做的僅僅是把球桿對準白球,球桿就會自動計算擊球路徑,完成擊球。真正做到“我有手,我上我也行”。
那麼一根自瞄球桿是怎麼製作的呢?
兩大裝置打造自瞄球桿
製作自瞄球桿,需要完成“球桿改造”以及“自瞄系統搭建”等兩項工作。其工作難度,也是只有億點點拉,懂一點高數、機械原理、代碼編程、視覺算法、機器學習,再有一個靈光一點的腦子就行啦。
球桿改造
首先,讓我們看一下球桿改造部分。進行球桿改造,主要需要球桿能夠實現球桿方向自動調節、自動推桿擊球以及接收來自瞄準系統反饋的擊球操作。
關於球桿的方向調節系統,作者分享了他在前期思考時腦海中的畫面就像下圖這樣。他希望球桿能夠擁有靈活的高精度方向調控能力,同時兼具在高速撞擊台球時能保持方向不變的剛度。
這個方向調節體型,小伙伴們心裡有想法嗎?
為了實現球桿能夠滿足使用需求,作者採用了擁有6個自由度的平台並聯機構“Stewart”(斯圖爾特平台),能夠很好的完成球桿調節方向的功能。
確定好調節方向的工具之後,作者開始進入鋼鐵俠造鎧甲模式。先是計算各個元器件的尺寸,在電腦上建模模擬運動效果,編寫代碼。
接著火力全開,自己完成零部件加工、設備安裝等。
這貨家裡簡直就是個小型加工廠,我絲毫不懷疑在資金充足的情況下,他能打造出一具鋼鐵俠鎧甲。
小伙伴們要注意用於控制支腿的伺服電機進行潤滑,不然球桿可能會像下面這樣瘋狂抽搐。。。
搞定方向調節裝置,接下來便是自動推桿擊球功能的實現。相較於斯圖爾特平台的複雜,推桿擊球功能明顯要更加的簡單,使用一個氣缸即可完成。
這樣,通過斯圖爾特平台和氣缸這兩個工具,我們的球桿已經能夠實現多方向調節已經自動推桿,接下來便是安裝單片機以及無線模塊,實現球桿的方向調節及推桿可控。
正所謂,不會機械加工的程序員不是好工程師,作者通過一頓操作,把代碼便攜、零件加工和設備調試等工作全部包攬了。
至此,球桿的改造工作基本完成,接下來要進行的就是自動瞄準系統的製作了。
自瞄系統
製作自瞄系統,一共要完成“視覺定位”、“軌跡計算”這兩大部分。
我們先來說比較容易理解的視覺定位部分。視覺定位系統主要有一台安裝在桌球頂部的攝像機提供畫面支持,攝像機將錄製到的畫面傳輸到電腦,電腦在進行畫面分析。
嗯,這台攝像機還可以進行移動調整錄製角度,全方面無死角的捕捉台球桌上的台球,掌控全局!是不是有種動漫裡面主角開掛的既視感,五條悟直呼內行。
當然,我們還需要一些輔助措施讓電腦將接收到的畫面調整為與實際畫面一致,防止擊球軌跡出錯,導致球不入洞。
作者通過在台球桌上黏貼白點以及QR碼的方式,讓電腦進行基準面調節,實現了台球桌在電腦內畫面始終方正的樣子。
接下來,使用一丟丟魔法代碼,讓計算機識別台球、球洞以及庫邊。
代碼完成。接下來,電腦可以根據基準面反推出球洞、桌面保險桿以及球的位置,再通過視覺算法進行標記,完成目標識別。
這下球和球洞都能識別了,該開始讓球桿自己開始學習擊球了,也就是進入自瞄系統的“軌跡計算”部分。
要想完成軌跡計算,首先要讓電腦知道球桿朝向。萬能QR貼紙再次出現,一張貼紙能讓電腦找到球桿,兩張貼紙讓電腦明白球桿指向,居家diy必備好伴侶。
QR貼紙:我標記了一處地點。
但是等一下,這兩張QR碼只能在電腦上形成也和2D圖像,電腦並不知道球桿的傾斜角呀,這擊球的時候豈不是亂了套?
那怎麼省時省力的獲取傾斜角呢?讓我們看看電腦感知到的畫面中哪些數據跟傾斜角相關。
最後,作者發現電腦能直觀獲得的便是球桿2個QR碼所生成圖像長度的變化,而圖像長度的變化受傾斜角的影響。(這題我會啊,小學時候學的解方程嘛!)
也就是說,我們用一把量角器量得傾斜角的度數,再結合電腦中圖像長度的變化,我們就可以獲得傾斜角和圖像長度的變化關係。將這個變化關係輸入到代碼中,代碼便可以通過圖像長度自動計算球桿的傾斜角。
為了減少用手支撐球桿發生的抖動影響計算機計算傾斜角,作者還給球桿設計了一個支架,增加球桿的穩定性。
這樣架起來的球桿,倒是有幾分砲台的感覺了~
球桿及檯面數據已經識別完成,接下來就是進入擊球軌跡測算的環節。在算法實裝之前,作者先在電腦上做了一個簡單的算法進行球桿的擊球測試。這個算法會告訴作者擊球路徑及角度。
看著好像挺酷的,但是電腦桌面跟台球桌面離那麼遠,不可能每次測試都往電腦瞟一眼呀。
於是乎,作者做了一件非常酷的事情,他將投影儀安裝到台球桌頂部,將電腦畫面投影到桌面上,直接把台球桌變成了星際作戰會議桌。
不得不說,這個投影儀和界面設計,很有衛星追踪的感覺。
接下來,萬事俱備,只欠東風。最後再把算法這些再過一遍,自瞄球桿準備進入作戰狀態!
把老婆叫過來,摩拳擦掌,準備讓她看一眼自己的發明。
天際鷹眼系統已就位,地面已接收到鷹眼運動軌跡數據,球桿出擊!
嗯,怎麼說呢,這麼近距離能夠成功讓球不進洞,也算是一種另類的精準吧。難道說運動天賦差的人做出來的道具也沒有運動天賦嗎?
再把各種公式各種軌跡運算數據重新計算整理,球桿還是時靈時不靈,完全摸不透出錯的規律。
思來想去,軌跡計算公式沒有出錯,球桿的推桿精度沒有出錯,那隻能是在進入計算環節之前的某個環節存在問題。最終,作者將問題鎖定到了用於錄製畫面的攝像機上面。
由於廣角攝像頭的採用,攝像機錄錄製的畫面是存在光學畸變的,即便通過算法進行畸變校正,問題仍然存在。
面對這種畸變,作者最開始想通過物理校準的方式來消除畸變,但連續四天的失敗嘗試,讓他意識到情況不對勁,不論他怎麼做,軌跡測算就是會出現問題。
想來想去沒辦法,他重新聚焦算法,想從算法這一塊入手。這一看直接讓他發現了失誤的源頭——他用於矯正畸變的算法,其實是之前針對另一款攝像機設計的,他只要將算法修改為適用於正在工作的攝像機就好了。
終於,皇天不負有心人,修改完算法之後的擊球軌跡總算正常了,擊球嘎嘎猛。
至此,雖然球桿還未開發自瞄功能,目前也只是充當了自動擊球的作用,但經歷了第一波被老婆嘲諷以後。他決定謹慎行動,先多番測試一下球桿的穩定性。
不得不說,Shane Wighton確實是一個會整活的鬼才。測試算法是枯燥的,於是他想了個辦法,拉別人入夥來一起做測試。
通過在網站上製作一個簡單的小程序,參與測試的人可以獲得自動球桿的控制權以及在桌球檯上標記擊球點進行擊球。
經過多輪測試以後,球桿的擊球獲得了保證,作者同時還獲得了大量的擊球數據,為後面的自瞄算法提供了數據支撐。
所有的基礎問題已經解決,接下來就是完善算法,實現球桿擁有大腦,成為真正的自瞄球桿。
在算法設計當中,作者希望每次擊球開始時,電腦會自動計算所有潛在的擊球路徑,並選擇能夠實現連續擊球進洞的最優路徑。
要想實現計算機能夠提供精準的擊球路徑,大量的機器學習那是必須的。但是迫切想要一雪前恥的心不允許作者花費太多的時間在機器學習上面。
於是乎,作者採用了一個相對來說更便捷高效的方法——繪製有向圖。簡單來說,通過有向圖,作者讓電腦學會了在保證能進球的情況下計算擊球時的最短路徑。
這一頓操作下來,台球桌在電腦眼裡看來已經變成這個樣子了,有種在打海戰時,魚雷追踪船隻的感覺。
接下來,超級大腦已部署,星際目標指引衛星(投影儀)已部署,球桿準備就緒。Shane Wighton再次向他老婆發起了挑戰。
這一次,由Shane Wighton的老婆開球,打了2桿之後,輪到Shane Wighton擊球。然後,便是Shane Wighton的擊球,Shane Wighton的擊球,Shane Wighton的擊球,徹底展示什麼叫做理工直男。
最後,讓我們了解一下作者。Shane Wighton之前就讀於北卡羅來納大學夏洛特分校,擁有機械工程學士學位和計算機科學碩士學位,目前在3D 打印技術開發商和製造商Formlabs 公司擔任首席工程師。
Shane Wighton本人在油管上擁有非常高的熱度,因為他妻子的運動天賦確實過於強大,導致Shane Wighton經常需要製作一些黑科技來找回一點“面子”。
除了自瞄球桿以外,作者還製作了,全自動瞄準弓箭,百發百中籃球板,全自動理髮機等黑科技設備,活脫脫的物理外掛製造家。
原視頻鏈接: