大數據文摘出品
作者:Caleb
春節回家,在家等待你的除了家裡的美食、許久不見的寒暄,肯定還有各種小遊戲。
比如撞球,在文摘菌看來,沒玩過幾局撞球根本不能算是過了年。
但是對於萌新們來說,撞球可能不那麼容易上手,不小心就會把白球打進洞。這個時候,要是有一根百發百中撞球杆就好了!
於是,那個做過百發百中籃球框的小哥便延續了「百發百中DIY系列」,做了一根百發百中撞球杆。
不信?我們先來看看實戰對決。
怎麼樣,是不是so easy?別急,高難度的還在後面:
連這位小哥的老婆,一個撞球高手,都要甘拜下風直呼內行。
在小哥的YouTube視頻下方,網友們也是讚不絕口。有人就表示,「看了這系列的視頻,讓我懷疑自己是不是沒有進化完全」。
還有網友在評論區大呼:「這絕對是YouTube上最聰明的仔!」
DIY一根如此神奇的撞球杆需要幾步?
別急,我們先閉上眼睛,在不考慮任何其他限制條件的情況下,首先你要定位你的目標球,然後,把它打進洞。
對於機器來說,要同時做到這兩件事,就需要控制好角度和力度。
具體要做什麼、做到什麼地步,可以用這張圖來表示,即攝像機捕捉到每個球的位置,再將大腦中制定的擊球曲線轉換到撞球杆的系統中來執行,最後就是bingo,進球啦!
好了,原理搞清楚了,就可以開始製作撞球杆demo了。
要實現球桿的靈活度,我們需要把六根伸縮杆以一種特殊的方式組裝起來,然後讓它們以規定的角度擊球。
不過,要實現這個,就必須利用到史都華平台 (stewart platform),這註定會是一個繁瑣複雜的項目。
可以想到,這個撞球杆是由安裝在一端的伺服系統驅動,這也是這個撞球杆不會由於零件的複雜而被迫製作得龐雜的關鍵所在。
上述步驟都完成的時候,這個撞球杆已經能夠保證運動自如了:
當然,不過要讓它能夠自動識別並作出判斷和動作,還需要一些數學上的計算和代碼植入,還不要忘了給它裝上「發射器」。
到這裡,這個撞球杆demo就基本上成型了,效果嘛,看上去還不賴。
等等,我們知道,在撞球比賽中,不是所有的擊球都是大力出奇蹟,很多時候還需要根據自己的判斷,所以我們還必須教給機器這一點。
於是,小哥裝了一個電源組,微控制器利用壓力記來測量壓力水平,如果壓力值過小會開啟左邊的閥門,壓力過大則會開啟右邊的閥門。
區別嘛,大概就是這樣,在上面的那種情況中白球會更容易一起落入洞中。
把電腦桌面投射到撞球桌上,校準之餘別忘了檢查!
接下來,我們需要在撞球桌上方安裝一個攝像機,讓球和杆都能被精準定位,從而擊球進洞得分。
但是由於現實安裝等各種原因,由攝像機拍攝出的畫面不能保證一定是直角的,這就需要一些角度的修正。
我們知道一些類似於二維碼這類的圖像,對於攝像機這類的機器而言會尤其敏感,於是在撞球桌的四個角上都安裝上了這樣的碼。
在撞球杆上安裝了兩個識別碼,一個可以識別位置,兩個碼一起可以用於方向的識別和校準。
而具體在垂直方向的高度,則需要藉助IMU(慣性測量單元)。
接下來就需要去教給機器如何做出正確的擊球判斷了。但問題是,這種擊球判斷是在電腦上做出的,比如系統表示,要擊中下面這個球就需要在一定的區域內執行,而真正的擊球需要在台桌上進行。
簡單粗暴地來想,其實也可以直接把電腦桌面投射到撞球桌上嘛。
儘管萬事已經具備,但事實卻不怎麼如人意,比如這麼簡單的一個進球,系統卻無法成功得分。
在經過多方檢查,甚至把幾乎所有的步驟全部重新做了一遍,結果發現伺服系統的其中兩個馬達壞掉了……
但在解決了上述問題之後,小哥還發現,撞球的識別位置發生了很小的位移,這種畸變就和廣角鏡頭一模一樣,雖然很小,但也足以讓系統的精度出現問題。
又是幾天的檢查和崩潰,最終小哥發現用於修正角度的代碼適配的攝像機和他正在使用的攝像機不是同一個型號……
這真的是血淚教訓,千萬記得回頭檢查。
「雲進球」的喜悅,你能想像嗎?
為了能夠打贏自己的撞球高手老婆,小哥還在網上發起了一個撞球遊戲。
簡單來說,就是讓網友自己選擇擊球的角度和力度,系統會告訴他把撞球杆放在什麼位置,從而實現遠程撞球比賽。
不少網友都報名前來一試,這也讓小哥品嘗到了撞球的樂趣。
甚至那些撞球老手嘗試到了「雲進球」的喜悅之後也不免舉手雀躍。
視頻中小哥還介紹了更多關於這個項目的原理等部分,感興趣的朋友可以戳下方的完整視頻觀看: