自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

微軟放棄的游戲被復(fù)活:三維彈球現(xiàn)實(shí)版,用Arduino硬核致敬童年

新聞 前端
最近,來(lái)自美國(guó)肯尼索州立大學(xué)(KSU)的4位小哥,就親自動(dòng)手用開(kāi)源電子原型平臺(tái)Arduino,從零開(kāi)始復(fù)現(xiàn)了另一款Windows經(jīng)典小游戲——三維彈球 (3D Pinball)。

 本文經(jīng)AI新媒體量子位(公眾號(hào)ID:QbitAI)授權(quán)轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)聯(lián)系出處。

20年前,電腦還是大背頭的,「休閑小游戲」是屬于Windows的。

紙牌、掃雷、空當(dāng)接龍……滿滿的一波回憶殺。

最近,來(lái)自美國(guó)肯尼索州立大學(xué)(KSU)的4位小哥,就親自動(dòng)手用開(kāi)源電子原型平臺(tái)Arduino,從零開(kāi)始復(fù)現(xiàn)了另一款Windows經(jīng)典小游戲——三維彈球 (3D Pinball)。

微軟放棄的游戲被復(fù)活:三維彈球現(xiàn)實(shí)版,用Arduino硬核致敬童年

從3D建模,到代碼編寫(xiě),再到最后的動(dòng)手施工,他們用最專(zhuān)業(yè)的手段向童年致敬。

正如其中一位小哥說(shuō)的:

建造這樣一個(gè)項(xiàng)目,是我的童年夢(mèng)想。

不僅如此,他們還把整個(gè)過(guò)程做了個(gè)教程——只要9步,你也可以打造一臺(tái)屬于自己的三維彈球。

把「三維彈球」搬到現(xiàn)實(shí)中

我們先來(lái)回憶一波這款經(jīng)典的Windows小游戲。

微軟放棄的游戲被復(fù)活:三維彈球現(xiàn)實(shí)版,用Arduino硬核致敬童年

開(kāi)局,球會(huì)從右下角的管道被彈出,然后就會(huì)在桌面自由滾動(dòng),碰到不同的障礙物會(huì)拿到不同的分?jǐn)?shù)。

只要保證它不從底部中間的縫隙掉出去就可以。

(滿滿的童年回憶啊……)

那么,KSU幾位小哥打造的「三維彈球」,長(zhǎng)啥樣?

模型是這樣的:

微軟放棄的游戲被復(fù)活:三維彈球現(xiàn)實(shí)版,用Arduino硬核致敬童年

實(shí)物長(zhǎng)這樣:

微軟放棄的游戲被復(fù)活:三維彈球現(xiàn)實(shí)版,用Arduino硬核致敬童年

桌面布局可以說(shuō)是完美復(fù)現(xiàn)了小游戲中的場(chǎng)景——從管道的位置,到障礙物的布局,各種細(xì)節(jié)“惟妙惟肖”。

嗯,有內(nèi)味道了。

實(shí)際上手玩耍又是種什么體驗(yàn)?

微軟放棄的游戲被復(fù)活:三維彈球現(xiàn)實(shí)版,用Arduino硬核致敬童年

再來(lái)看下近距離視角。

微軟放棄的游戲被復(fù)活:三維彈球現(xiàn)實(shí)版,用Arduino硬核致敬童年

簡(jiǎn)直一摸一樣有木有!

然而這臺(tái)機(jī)器還有更厲害的地方——全自動(dòng)、多球

微軟放棄的游戲被復(fù)活:三維彈球現(xiàn)實(shí)版,用Arduino硬核致敬童年

看完是不是也想擁有一臺(tái)呢?

別著急,KSU的4位小哥寫(xiě)了份超詳細(xì)教程,手把手教你如何打造現(xiàn)實(shí)版「三維彈球」。

9步,手把手教你打造現(xiàn)實(shí)版「三維彈球」

彈球機(jī)的主要功能模塊包括追蹤得分系統(tǒng),多球彈珠機(jī),還有自主啟動(dòng)開(kāi)關(guān)。上方有一個(gè)USB攝像頭,在自動(dòng)運(yùn)行模式下會(huì)持續(xù)地監(jiān)測(cè)彈球的位置,并根據(jù)球的位置指揮擊打器。

用到的工具和材料清單:

數(shù)控機(jī)床或激光切割機(jī)Dremel和砂紙烙鐵3D打印機(jī)Linux計(jì)算機(jī)USB攝像頭

大量的22/24 AWG線大量的熱縮線3/4英寸的膠合板(波羅的海樺木)一個(gè)電源降壓轉(zhuǎn)換器彈球組件(網(wǎng)上購(gòu)買(mǎi))

左右翻轉(zhuǎn)器組件2個(gè)翻轉(zhuǎn)式擊打器2個(gè)翻轉(zhuǎn)按鈕2個(gè)葉子開(kāi)關(guān)保險(xiǎn)杠總成2個(gè)彈弓組件至少6個(gè)星柱的彈弓至少2個(gè)2英寸的橡皮筋

發(fā)射器機(jī)制44號(hào)刺刀式燈場(chǎng)地中的障礙擲球器翻轉(zhuǎn)開(kāi)關(guān)

Step 1:紙面設(shè)計(jì)和低成本試錯(cuò)

設(shè)計(jì)中最可能出現(xiàn)的問(wèn)題可能就是游戲機(jī)本身的尺寸限制和內(nèi)部結(jié)構(gòu)的安排,一些預(yù)想的彈球擊打方式實(shí)驗(yàn)時(shí)才發(fā)現(xiàn)無(wú)法實(shí)現(xiàn),所以需要先畫(huà)出設(shè)計(jì)草圖,然后在此基礎(chǔ)上不斷改進(jìn)。

微軟放棄的游戲被復(fù)活:三維彈球現(xiàn)實(shí)版,用Arduino硬核致敬童年

團(tuán)隊(duì)在確定最終的游戲場(chǎng)地設(shè)計(jì)之前,經(jīng)歷了多次設(shè)計(jì)的修改和優(yōu)化,每一次改進(jìn),都在便宜的膠合板上做一個(gè)模型來(lái)測(cè)試,一步步靠近最終的設(shè)計(jì)。

微軟放棄的游戲被復(fù)活:三維彈球現(xiàn)實(shí)版,用Arduino硬核致敬童年

一些經(jīng)驗(yàn)教訓(xùn):

進(jìn)行模塊化設(shè)計(jì),不同功能組件要能隨意放置和取消。不要自己設(shè)計(jì)滑輪,借鑒成熟的彈球游戲的場(chǎng)地設(shè)計(jì),這樣能少走很多彎路。

Step 2:在SolidWorks上進(jìn)行設(shè)計(jì)建模

彈球機(jī)的設(shè)計(jì)由兩個(gè)主要的子部分組成,運(yùn)動(dòng)場(chǎng)和支架。球場(chǎng)是標(biāo)準(zhǔn)尺寸——20.25 x42英寸2,由3/4英寸厚度的波羅的海樺木膠合板制成。

微軟放棄的游戲被復(fù)活:三維彈球現(xiàn)實(shí)版,用Arduino硬核致敬童年

游戲場(chǎng)地包括一個(gè)由直徑為2英寸的亞克力管和3D打印的適配器組合而成的第二層。第二層有兩個(gè)主要功能。首先,第二層作為介質(zhì),將球從上層球場(chǎng)直接輸送到左翻板內(nèi)側(cè)。球下落位置的可預(yù)測(cè)性,使得第二層成為一個(gè)的通道,此通道便于多球運(yùn)動(dòng),這是其第二大功能。

微軟放棄的游戲被復(fù)活:三維彈球現(xiàn)實(shí)版,用Arduino硬核致敬童年

當(dāng)坡道和左內(nèi)線上的翻轉(zhuǎn)開(kāi)關(guān)背對(duì)背地觸發(fā)時(shí),舵機(jī)會(huì)釋放出兩個(gè)球,這些球會(huì)下滾到第二層上方的兩個(gè)管子中的一個(gè),與坡道射出的球發(fā)生碰撞。因此,在多球模式下,這些管子將球會(huì)送入第二層,進(jìn)入入左邊的內(nèi)管。

微軟放棄的游戲被復(fù)活:三維彈球現(xiàn)實(shí)版,用Arduino硬核致敬童年

3/4英寸膠合板厚度的選擇是為了給工程提供足夠的剛性,并允許在承重接頭處有更大的緊固件嚙合。選用波羅的海樺木作材料,因?yàn)樗馁|(zhì)量高,雜質(zhì)少,屬于硬木,不易損壞,易于使用激光雕刻,一般來(lái)說(shuō),對(duì)于較重的木制結(jié)構(gòu)是首選。

微軟放棄的游戲被復(fù)活:三維彈球現(xiàn)實(shí)版,用Arduino硬核致敬童年

支架是游戲場(chǎng)地的安裝裝置,并容納了定制的電子裝置。電子裝置直接固定在底板上,延伸的延伸到游戲面板底部。通過(guò)觀察窗可以看到電子裝置在支架的兩側(cè)。

此外,該支架還可以通過(guò)側(cè)面的可拆卸的插銷(xiāo)對(duì)球場(chǎng)進(jìn)行間距調(diào)節(jié)。游戲臺(tái)傾斜角度范圍為0-8度,每?jī)啥仍O(shè)置一個(gè)調(diào)節(jié)檔位。更高的球道坡度可以使游戲節(jié)奏更快,難度更高。

Step 3:用數(shù)控機(jī)床或激光雕刻制作主體

盡管你可以手工切削出游戲臺(tái)的整體結(jié)構(gòu),但這樣誤差交大,后續(xù)安裝連接多有不便,浪費(fèi)材料。

這幾個(gè)美國(guó)小哥用一臺(tái)大型5軸數(shù)控機(jī)床進(jìn)行銑削,最后再用木楔進(jìn)行細(xì)節(jié)調(diào)整。

微軟放棄的游戲被復(fù)活:三維彈球現(xiàn)實(shí)版,用Arduino硬核致敬童年

Step 4:電子器件和電源選擇

大多數(shù)彈球機(jī)的 “高壓 “在35V-48V的范圍,這取決于你買(mǎi)的電磁鐵的品牌,同時(shí)你要選擇一個(gè)能支持這種磁鐵線圈的電源。

其次,你需要考慮到 “低電壓 “的電源,用于給燈或其他較小的電器元件等東西供電。我們選擇的低電壓是6.3v的電壓,但這不一定是一成不變的。這要看你買(mǎi)的是什么LED,以及你是否用這個(gè)電源給其他的電器東西供電。一般6.3V應(yīng)該就可以滿足需要。

微軟放棄的游戲被復(fù)活:三維彈球現(xiàn)實(shí)版,用Arduino硬核致敬童年

如果沒(méi)有低壓電源,那還需要一個(gè)降壓轉(zhuǎn)換器將高電壓(如48V)降到小元件的額定電壓。

此外,使用的元件的電阻大小,決定了電流大小。所以,電源總功率要視情況而定。

如果你的組件沒(méi)有達(dá)到正確的功耗額定值,這些元件在很短的時(shí)間內(nèi)產(chǎn)生很大的電流。

在這種情況下,單個(gè)擊打器內(nèi)部線圈可能會(huì)產(chǎn)生3-4安電流,兩個(gè)加起來(lái)8安培左右,會(huì)導(dǎo)致元件燒毀。

微軟放棄的游戲被復(fù)活:三維彈球現(xiàn)實(shí)版,用Arduino硬核致敬童年

你應(yīng)當(dāng)計(jì)算出 “最壞的情況下 “的電流大小,然后給出一個(gè)合理的安全范圍,挑出一個(gè)對(duì)應(yīng)的電源。

Step 5:建立I/O接口電路

開(kāi)關(guān)輸入部分:

微軟放棄的游戲被復(fù)活:三維彈球現(xiàn)實(shí)版,用Arduino硬核致敬童年

開(kāi)關(guān)輸入板負(fù)責(zé)將所有的值從游戲場(chǎng)地中讀入到Arduino。這個(gè)單獨(dú)的電路非常簡(jiǎn)單,但需要對(duì)很多輸入進(jìn)行放大處理。

因?yàn)锳rduino有一個(gè)內(nèi)部的上拉電阻,所以你可以如上圖那樣接線。

這里最大的問(wèn)題是要確保每個(gè)開(kāi)關(guān)都有連接器,以防有一個(gè)開(kāi)關(guān)因?yàn)槟撤N原因單獨(dú)取出調(diào)試。

這個(gè)項(xiàng)目中使用了標(biāo)準(zhǔn)針腳連接,可以很容易地將所有的東西同時(shí)插入到Arduino中。

燈光控制部分:

電路由一個(gè)BJT晶體管(2n222222)、幾個(gè)電阻和LED組成。

微軟放棄的游戲被復(fù)活:三維彈球現(xiàn)實(shí)版,用Arduino硬核致敬童年

晶體管作為一個(gè)數(shù)字 “開(kāi)關(guān)”,可以打開(kāi)或關(guān)閉,把它這個(gè)連接到前面提到的6.3v電源上,就得到了一個(gè)光源和單獨(dú)可尋址的LED。

不能直接將LED直接連接到Arduino上的原因是,Arduino無(wú)法提供多個(gè)LED要求的額定電流。

微軟放棄的游戲被復(fù)活:三維彈球現(xiàn)實(shí)版,用Arduino硬核致敬童年

正確的辦法是把Arduino作為一個(gè)數(shù)字開(kāi)關(guān),控制BJT。這樣就可以將LED的數(shù)量擴(kuò)大到我們需要的數(shù)量。

電磁控制部分:

總體思路與LED板相同:從Arduino發(fā)送一個(gè)信號(hào),能夠打開(kāi)/關(guān)閉任何一個(gè)電磁鐵(翻板、彈弓、彈出式保險(xiǎn)杠)。因?yàn)檫@些元件比LED功率更大,所以需要一些更大的晶體管:MOSFET。

電路元件清單:

1k電阻10k電阻330電阻IRF44V MOSFET1N4004 二極管47微法電容

微軟放棄的游戲被復(fù)活:三維彈球現(xiàn)實(shí)版,用Arduino硬核致敬童年
微軟放棄的游戲被復(fù)活:三維彈球現(xiàn)實(shí)版,用Arduino硬核致敬童年

電磁鐵需要連接到48V的電壓才會(huì)啟動(dòng)。

因?yàn)殡姼胁荒芩查g改變電流,這就帶來(lái)了一個(gè)問(wèn)題。工作時(shí),線圈會(huì)通過(guò)很高電流,而關(guān)閉時(shí),如果沒(méi)有一個(gè)地方分散電流,可能會(huì)破壞元件,非常危險(xiǎn)。

這里使RC緩沖器電路和二極管來(lái)解決這個(gè)問(wèn)題。要使它們覆蓋盡量多的電磁控制并聯(lián)支路。

擊打器和其他線圈的電路略有不同。這是因?yàn)?,在彈球游戲中,玩家有時(shí)會(huì)按住按鈕,以保持擊打器長(zhǎng)時(shí)間啟動(dòng)。如果要用同樣的功率線圈,很快就會(huì)燒毀。

在此電路中的第二個(gè)線圈可以實(shí)現(xiàn)快速第一次翻轉(zhuǎn)。一旦翻轉(zhuǎn)完成,一個(gè)機(jī)械機(jī)構(gòu)會(huì)打開(kāi)EOS開(kāi)關(guān),迫使電流通過(guò)兩個(gè)線圈。

Step 6:組裝所有元件

根據(jù)你游戲場(chǎng)地的大小,焊接時(shí)間或長(zhǎng)或短。這個(gè)項(xiàng)目花了大約兩天的時(shí)間焊接,并把所有器件安裝到位。

最終有5種連接器插到板子上:

高功率的螺線管電源與電磁鐵專(zhuān)用開(kāi)關(guān)的連接與LED的連接與開(kāi)關(guān)的連接一些輔助電源(5V、48V等)。

所有這些都插到了一個(gè)3D打印的連接板上,里面封裝了所有電路設(shè)備。當(dāng)需要開(kāi)蓋檢測(cè)故障的時(shí)候,只需要拔掉5個(gè)大的連接器,然后把整個(gè)裝置舉起來(lái)。

Step 7:安裝Arduino軟件驅(qū)動(dòng)

在這臺(tái)機(jī)器上,需要在與Arduino相連的計(jì)算機(jī)上安裝以下依賴(lài)項(xiàng):

ROSrosserial_arduino ROS packageOpenCV (c++)TkinterApscheduler

整個(gè)軟件系統(tǒng)依靠ROS架構(gòu)作為后端來(lái)回傳遞消息。

四個(gè)主要節(jié)點(diǎn)在彈珠機(jī)運(yùn)行在自主模式下時(shí),進(jìn)行異步通信,以控制彈珠機(jī)的流程。

微軟放棄的游戲被復(fù)活:三維彈球現(xiàn)實(shí)版,用Arduino硬核致敬童年

這些節(jié)點(diǎn)分別是Input_Output.ino、track_metal.cpp、run_low_level.py和GUI.py。

當(dāng)不在自主模式下運(yùn)行時(shí),可以省略track_metal.cpp節(jié)點(diǎn)。

源代碼和詳細(xì)解釋在本項(xiàng)目的Github主頁(yè)放出。

Step 8:更改Pin、將代碼上傳到Arduino、更新USB攝像頭

如果你自己動(dòng)手制作彈球機(jī),并使用了本項(xiàng)目的源碼,要注意的是,你的Arduino的Pin需要更新兩處:
Arduino/Input_Ouptut/Input_Ouptut.io,以及src/Classes/playfield.py。

微軟放棄的游戲被復(fù)活:三維彈球現(xiàn)實(shí)版,用Arduino硬核致敬童年

此外還需要調(diào)整腳本,刪除對(duì)開(kāi)關(guān)和LED的調(diào)用。

playfield.py會(huì)記錄有多少個(gè)項(xiàng)目,需要手動(dòng)設(shè)置每個(gè)項(xiàng)目的Pin。

之后就可以將代碼上傳到Arduino中。此步驟必須安裝上一步中提到的rosserial_arduino,并正確設(shè)置Arduino IDE與ROS綁定。

最后,要做的是更新代碼中你自己使用的攝像頭名稱(chēng)。只需在 src/Track/track_metal.cpp 中找到 “std::::string camera_metal.cpp “這一行:

“std::::string camera_string = “/dev/v4l/by-id/usb-046d_Logitech_Webcam_C930e_6D6BFE5E-video-index0”;”

將字符串更新為攝像機(jī)的名稱(chēng),可能是”/dev/v4l/by-id/“

所有步驟完成后,重新編譯才可以工作。

Step 9:玩起來(lái)吧!

如果一切正常,那么找到到 “啟動(dòng) “目錄,然后輸入 “roslaunch 
automatic_pinball_c.report

這行代碼啟動(dòng)所有與彈球機(jī)相關(guān)的節(jié)點(diǎn),包括GUI節(jié)點(diǎn)和跟蹤球的位置的節(jié)點(diǎn)。

此外,你可以使用’roslaunch manual_pinball.report’不運(yùn)行任何自主部分,只體驗(yàn)手動(dòng)模式。

來(lái)自KSU畢業(yè)班的四位“造夢(mèng)者”

那么,將童年回憶搬到現(xiàn)實(shí)的四位“造夢(mèng)者”,都是何許人也?

[[331571]]

Kevin Kamperman,今年畢業(yè)于KSU,目前正在佐治亞理工學(xué)院研究所實(shí)習(xí),從事無(wú)人機(jī)相關(guān)的研究。

春季畢業(yè)的時(shí)候,Kevin Kamperman還被KSU評(píng)為今年的“榮譽(yù)畢業(yè)生”。

[[331572]]

Cody Meier,同樣也是今年畢業(yè)于KSU,主修的專(zhuān)業(yè)是機(jī)械電子、機(jī)器人和自動(dòng)化工程。

[[331573]]

Omar Salazar和上一位小哥是同專(zhuān)業(yè),也是主修機(jī)械電子、機(jī)器人和自動(dòng)化工程。

他在采訪視頻中表示,這個(gè)項(xiàng)目加強(qiáng)了他在團(tuán)隊(duì)合作方面的能力。

[[331574]]

最后一位叫Tyler Gragg的小哥,可謂是“機(jī)器人制造”的狂熱愛(ài)好者,在個(gè)人介紹文字中,還特意寫(xiě)道“Let’s Make Robots”,參與不少機(jī)器人項(xiàng)目。

Tyler也榮登了學(xué)校“光榮榜”。

嗯,是四位非常優(yōu)秀的“造夢(mèng)者”了。

那些年,經(jīng)典的Windows小游戲

紙牌、掃雷、空當(dāng)接龍…….這些Windows經(jīng)典游戲至今仍然擁有眾多粉絲。

它們現(xiàn)在都何去何從了呢?

微軟放棄的游戲被復(fù)活:三維彈球現(xiàn)實(shí)版,用Arduino硬核致敬童年

微軟如今把這些經(jīng)典游戲放在了WindowsStore中,然而「三維彈球」的就沒(méi)有那么幸運(yùn)了。

其實(shí),從Win7開(kāi)始,微軟團(tuán)隊(duì)將原先的軟件全部移植到64位系統(tǒng)中。

然而,「三維彈球」卻出現(xiàn)了嚴(yán)重bug,為了節(jié)省時(shí)間,微軟直接放棄了這個(gè)游戲。

但四位小哥的這個(gè)項(xiàng)目,卻賦予了這款經(jīng)典之作新的生命。

這個(gè)星球有趣的人可真多啊。

傳送門(mén)

現(xiàn)實(shí)版「三維彈球」項(xiàng)目地址:

https://www.instructables.com/id/Arduino-Pinball-Machine-That-Plays-Itself/

Github源代碼地址:

https://github.com/Tdoe4321/AutoPinball

通用彈球游戲設(shè)計(jì)制作教程:

https://howtobuildapinballmachine.wordpress.com

責(zé)任編輯:張燕妮 來(lái)源: 量子位
相關(guān)推薦

2011-10-31 10:49:46

蘋(píng)果收購(gòu)三維地圖

2010-09-03 09:28:30

2014-05-19 09:40:48

SDN

2023-08-31 22:09:45

微軟MacIDE

2021-03-16 09:53:35

人工智能機(jī)器學(xué)習(xí)技術(shù)

2024-07-03 13:32:28

2009-11-10 12:55:26

VB.NET三維模型

2013-04-17 16:22:53

2023-09-12 11:30:44

自動(dòng)駕駛技術(shù)

2009-11-10 12:48:17

VB.NET三維模型

2011-12-06 09:38:17

增強(qiáng)現(xiàn)實(shí)移動(dòng)游戲

2014-08-26 16:04:30

2019-04-01 11:39:31

程序員技能開(kāi)發(fā)者

2009-05-08 10:19:11

2011-03-17 11:24:15

2011-06-07 17:20:29

掃描儀推薦

2010-01-27 15:41:00

2013-02-01 10:34:59

大數(shù)據(jù)智能分析

2025-03-24 09:41:22

2022-03-21 09:55:27

Linux 發(fā)行版Ubuntu基督教
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)