為贏過(guò)老婆打造自動(dòng)瞄準(zhǔn)弓,閉眼也能百發(fā)百中,零件電路算法全自制
豐色 夢(mèng)晨 發(fā)自 凹非寺
量子位 報(bào)道 | 公眾號(hào) QbitAI
油管上一位小哥最近有個(gè)煩惱:老婆射箭技術(shù)太好,我很菜又想贏怎么辦?苦練6個(gè)月、6年?No No No,不如花時(shí)間做一個(gè)自動(dòng)瞄準(zhǔn)的弓箭,一勞永逸!這就是這位DIY達(dá)人的思考方式該死的勝負(fù)欲。不得不說(shuō),小哥花了6周還真做出來(lái)了,最終這把弓箭就像狗見了肉貓見了耗子兔子見了蘿卜直奔目標(biāo)。不看都能射中:換個(gè)蘋果,沒(méi)問(wèn)題:運(yùn)動(dòng)的靶子也能彈無(wú)虛發(fā):小哥一把視頻傳到Y(jié)ouTube上,就引來(lái)了數(shù)百萬(wàn)網(wǎng)友的圍觀,“Brilliant”、Incredible”、“Awesome”滿天飛,膜拜之聲不絕于耳。當(dāng)然,為了贏老婆,小哥也不是沒(méi)想過(guò)直接買一把自動(dòng)瞄準(zhǔn)的弓箭作弊,可惜網(wǎng)上沒(méi)有賣的。作為一名硬核工程師 程序員,完全不能允許2021年還有這種事情,必須自己做!零件電路算法全自制
首先買一把輕型的弓,畢竟還要往上加很多零件,太重了就舉不動(dòng)了。自動(dòng)瞄準(zhǔn)的思路小哥已經(jīng)想好了:先來(lái)一個(gè)自動(dòng)瞄準(zhǔn)裝置負(fù)責(zé)移動(dòng)弓,再來(lái)一個(gè)自動(dòng)釋放裝置,在系統(tǒng)判定的時(shí)機(jī)自動(dòng)放箭。瞄準(zhǔn)用的視覺系統(tǒng)由8個(gè)高速攝像頭組成,每秒鐘可以更新50次的那種。除了弓箭和攝像頭是買來(lái)的,其他零件都是自己設(shè)計(jì)、自己造出來(lái)的,電路是自己焊的,連瞄準(zhǔn)的算法也是自己用Python寫的。真是全能啊。都做好后,上下、左右方向都能自動(dòng)調(diào)整,發(fā)射時(shí)機(jī)也不用人操心。終于大功告成,上靶測(cè)試一下。呃…準(zhǔn)不準(zhǔn)先不說(shuō),因?yàn)楣约阂苿?dòng)到合適位置的時(shí)機(jī)無(wú)法預(yù)料,猝不及防地自動(dòng)發(fā)射讓拉弓的手總打到自己臉。小哥后續(xù)解釋道其實(shí)把弓拉滿就可以避免這個(gè)問(wèn)題,但在測(cè)試期間為了避免射出去的箭力道太大誤傷到房間里其他物品,只好選擇拉到半滿犧牲一下自己了。再來(lái)看看準(zhǔn)頭。有點(diǎn)偏,而且每次都是往左上偏。這種情況雖然有簡(jiǎn)單的辦法解決:人為加一個(gè)修正,每次都往右下一點(diǎn)瞄。小哥多年的開發(fā)經(jīng)驗(yàn)告訴他,這樣做會(huì)為將來(lái)更多Bug埋下伏筆。不過(guò)也管不了這么多了,先臨時(shí)加上這個(gè)“非常蠢的修正”,把老婆叫來(lái)比一場(chǎng)吧。結(jié)果是……0:3完敗。他不甘心,一切都正常只是箭有點(diǎn)偏,那一定是代碼的問(wèn)題。再加上還要馴服移動(dòng)靶子,與其修改代碼不如全刪了重寫,于是小哥又Coding了一周。好了,再試試。拉好弓,“咳咳,老婆扔靶子”:小哥按下啟動(dòng)按鈕,剩下的就交給跟蹤系統(tǒng)了:系統(tǒng)每300毫秒檢查一下靶子運(yùn)動(dòng)的拋物線軌跡傳給計(jì)算機(jī),然后通過(guò)一個(gè)“乏味”的小計(jì)算來(lái)確定弓的移動(dòng)位置,同時(shí)考慮到箭頭到達(dá)目標(biāo)的時(shí)間以及箭的彎曲路徑。隨著數(shù)據(jù)的更新,弓不停的移動(dòng),終于它瞄準(zhǔn)時(shí)機(jī),一箭發(fā)射:完美錯(cuò)過(guò)……代碼還是有問(wèn)題,改!說(shuō)好了只需一分鐘修復(fù),小哥花了一個(gè)小時(shí),老婆表示懶得等了。沒(méi)人給他發(fā)靶子了,不過(guò)這也難不住他:再造一個(gè)自動(dòng)投靶器唄。據(jù)小哥后來(lái)回憶,這個(gè)投靶器在整個(gè)6周的開發(fā)過(guò)程中至少投了上千次靶子。好了好了再試!emmm……不是發(fā)太早就是發(fā)太晚、甚至連靜態(tài)靶子都射不中了……Bug Bug全是Bug連投靶器也有Bug。再次修理了一番之后,還是差一點(diǎn)點(diǎn)。小哥一番檢查確定機(jī)器和自動(dòng)瞄準(zhǔn)系統(tǒng)都沒(méi)有問(wèn)題,到底哪不對(duì)?他打算換個(gè)思路。除了科技還有氪金
小哥通過(guò)慢鏡頭回放箭的飛行過(guò)程發(fā)現(xiàn),這箭它咋不是筆直射出去的呢?原來(lái)不是自動(dòng)瞄準(zhǔn)系統(tǒng)出了問(wèn)題,而是他買的這把入門級(jí)反曲弓不行。根據(jù)反曲弓的原理,用力拉弦時(shí)箭身也會(huì)受到外力發(fā)生輕微彎曲形變,松手發(fā)射之后箭身受力取消,會(huì)在彈性恢復(fù)力的作用下有恢復(fù)原狀的趨勢(shì)。這股力又會(huì)讓箭身向反方向彎曲,同時(shí)改變箭的飛行方向。反方向彎曲到了一定程度又會(huì)再次回彈,又改變飛行方向。小哥參考另一個(gè)油管頻道SmartEveryDay的視頻搞明白了這個(gè)問(wèn)題。在這樣的反復(fù)循環(huán)中,箭就不是筆直的射向目標(biāo),而是不斷搖擺著前進(jìn)。在專業(yè)射箭運(yùn)動(dòng)中,箭矢的抗彎曲度程度稱為“撓度(Spine)”,撓度也影響著箭飛行時(shí)搖擺的程度,不同磅數(shù)的弓要搭配不同撓度的箭才容易射中目標(biāo)。
小哥覺得雖然增強(qiáng)一下算法,把撓度也考慮進(jìn)去就能解決這個(gè)問(wèn)題,但這不符合他野生鋼鐵俠的風(fēng)格呀。
畢竟鋼鐵俠除了懂技術(shù)還有錢。小哥決定氪金!買一把能把箭射直的復(fù)合弓。把瞄準(zhǔn)裝置挪到復(fù)合弓上后,最開始擔(dān)心的那個(gè)問(wèn)題還真出現(xiàn)了:整套系統(tǒng)太重了,舉不動(dòng)。不過(guò)這也難不倒他,小哥又給自己搞了一套裝甲,用整個(gè)上半身的力量支撐弓的重量。這下整套系統(tǒng)可以說(shuō)從自動(dòng)瞄準(zhǔn)弓進(jìn)化成了瞄準(zhǔn)機(jī)器人,留給人的任務(wù)就只有拉弓了。再找老婆比賽!為了贏得更穩(wěn),小哥還調(diào)整到了精準(zhǔn)模式,等瞄準(zhǔn)裝置完全停止運(yùn)動(dòng)再發(fā)射。這一回3:0完勝。不過(guò)小哥還不過(guò)癮,再次挑戰(zhàn)移動(dòng)靶,成功!再來(lái)更難的挑戰(zhàn),能不能射中樂(lè)高小人頭上頂著的超小“蘋果”。
有多小呢?直徑還不如箭桿大。從結(jié)果來(lái)看雖然能射中,就是樂(lè)高小人消耗極快。
下一步挑戰(zhàn)更遠(yuǎn)距離
這位小哥名叫Shane Wighton,曾在美國(guó)一家3D打印機(jī)公司(Formlabs)做了八年工程師,擁有機(jī)械工程學(xué)士學(xué)位和計(jì)算機(jī)科學(xué)碩士學(xué)位。畢業(yè)學(xué)校雖不怎么有名(北卡羅來(lái)納大學(xué)夏洛特分校),但從四歲起就開始在老爸的帶領(lǐng)下?lián)v鼓塑料模型焊接了。才華橫溢、熱愛制作的他已經(jīng)從公司辭職,現(xiàn)在似乎在全職做YouTuber。他的頻道自從去年疫情爆發(fā)期間推出以來(lái),不到一年半的時(shí)間總訂閱人數(shù)已超300萬(wàn)。應(yīng)該有不少人看過(guò)他的作品吧。就比如這個(gè)自動(dòng)理發(fā)器:還有這種百發(fā)百中的籃筐和臺(tái)球桿(似乎小哥對(duì)自動(dòng)瞄準(zhǔn)這個(gè)事有些執(zhí)念):最后回到自動(dòng)弓箭,雖然Shane覺得現(xiàn)在效果已經(jīng)夠酷了,但他想要的是能和真正的射箭高手同臺(tái)競(jìng)技。接下來(lái)他要挑戰(zhàn)在45米距離射中樂(lè)高小人頭上的蘋果。因?yàn)榫嚯x會(huì)把微小的偏差放大,要達(dá)成這個(gè)目標(biāo)就需要開發(fā)全新的自動(dòng)瞄準(zhǔn)弓2代。而改進(jìn)方法在他腦袋里已經(jīng)設(shè)計(jì)好了。原視頻地址:
https://www.youtube.com/watch?v=1MkrNVic7pw參考鏈接:[1]https://bowaddicted.com/how-to-properly-tune-a-recurve-bow/
[2]https://www.youtube.com/watch?v=O7zewtuUM_0
?[3]https://www.patreon.com/stuffmadehere— 完 —