當前位置:
首頁 > 新聞 > 如何做一個完全體的阿爾法狗

如何做一個完全體的阿爾法狗


在去年3月份一場人機大戰吸引了全世界的眼光,當鏡頭追隨著 李世石、戴密斯甚至是跟這場比賽相關的每一個人時,一個人卻儘可能地避開了所有的視線,儘可能把自己變成隱形人,低調地履行著阿爾法狗「人肉臂」的角色。這就是Aja黃,代替阿爾法狗與李世石對決的人,就是這樣,對局室中包括李世石、裁判等人都會去洗手間,而Aja黃博士連續4局比賽都一直從頭坐到尾。每局比賽都會超過4個小時,這段時間裡他不喝水、不去洗手間,甚至沒有任何錶情。


正如人們所知道的,人機大戰是通過谷歌雲服務連接到酒店的對局室。阿爾法狗的伺服器是在美國中西部,在首爾可以通過監視器看到伺服器,Aja黃坐在棋盤前,擺阿爾法狗的手數,同時輸入手數。而賽後有人分析稱,當時坐在李世石對面的是人而非機器,是否會在無意間對其造成影響?於是我打算做一個完全自動下棋的機器人,我的機器人主要分為三部分,機械部分,電路部分以及 Python/Arduino程序部分。

該機器人可以人機互動,玩家下棋被簧片開關感測器感應,之後運行電腦中python程序,最後通過 Arduino來控制機器人手臂的運動,從而達到人機互動下棋的目的。



1.材料



2個24」acme絲桿


2個0.5「球軸承


2個24「碳鋼棒


一個國際象棋棋盤(1x 14」 - 1.5」x1.5」)


2個5mm x 6.35mm電機聯軸器


1個5mm x 5mm 電機聯軸器


2個57步進電機

一個42步進電機


2個57步進電機架


3個步進電機驅動器


1.75mm直徑 FDM ABS 3D 印表機熔絲(1kg)


一個Trossen ASM-RGS-13伺服電機


1個 1/2「厚,4」寬,2英尺長的pvc棒


1個1「厚,3」寬,1英尺長的PVC棒


3個1/2「厚,1-1 / 2」寬,2英尺長的PVC棒


2x 1/2「厚,1」寬,2英尺PVC棒


2x 1/2「厚,2」寬,1英尺PVC棒

1x 1「厚,2」寬,1英尺PVC棒


100個6號1/2「長螺絲(1/8鑽頭)


100個6號1「長螺絲(1/8鑽頭)


100個6號1-1 / 2「長螺絲(1/8鑽頭)


100個6號4-40螺紋1/2「2.5M長六角螺絲


25個4-40螺紋1「2.5M長六角螺絲


100個4-40螺紋鋼六角螺母


1個4』x 4』長膠合板(底座)


1個1x4 - 8 英尺長膠合板(機械手臂部分)


2個1.5「x3.25」x20「長木頭(支座)

一個Arduino Uno


一個 Mux Sheild(Arduino)


3個麵包板


1卷銅芯導線線


一塊焊料


一卷絕緣膠帶


一條延長線


3個限位開關


3組杜邦線


100個 4.7k歐姆電阻

100個220歐姆電阻


1個24V電源


2條高級跳線(線材規格:M TO M、20 x 6」)


2條高級跳線(線材規格:M TO M、20 x 12」 )


3包按鈕(註:每包100個)


64個簧片開關(後來由於出現失誤,購買100個)


一條帶狀電纜


1/2-10acme絲錐


台鑽


鑽頭

Z字母鑽頭


六角螺絲扳手


熱膠槍


車床(用於切割3個5mm acme絲杠來固定之前的三個電機聯軸器)


3D印表機(列印夾具)


鋸(推薦使用電動)


螺絲刀


電烙鐵


2.構建機械結構







利用3個PVC棒來組成機械手臂移動的軌道,分為定義為X、Y、Z。根據圖紙來安裝X軌道,只要安裝螺絲之間不相互抵觸,那麼圖紙中直徑為1/8螺絲安裝位置也沒有那麼重要了。在做外X軌道之後


你就可以按照圖紙製作Y,Z軌道。這樣就可以保證機械手臂可以有充足的空間在裡面通過。這些可以下載的圖紙裡面包含X、Y、Z軌道的詳細參數、尺寸。按照圖紙詳細的製作機器人。


詳細圖紙下載:0、1、2、 3、4、5、6、 7、8、9


3.固定螺絲和步進電機





每個在前面的絲錐(1/2 - 10「Acme絲錐)在安裝時,保證向下位移5 mm以便安裝電機聯軸器,在聯軸器另外一端連接步進電機,當步進電機轉動時候,絲錐也會轉動,球軸承在X,Y軌道末端,


有助於支撐絲錐,同時保證其順利旋轉。在前面的材料清單裡面可以看到57步進電機,並將其固定在X和Y軌道。至於42步進電機 ,可以使用Z字母鑽頭將它固定在PVC棒,然後固定在軌道。


4.製作夾具




製作夾具則需要清單裡面的3D印表機,Trossen ASM-RGS-13伺服電機以及螺絲(M2、M3)


下面可以下載到 製作夾具需要的STL文件,根據上圖製作夾具,最後用螺絲(M3)固定在Z軌道。


3D列印文件:1、2、3、 4、5


5.電路部分



Arduino開發板以及之前清單中MUX Shield,共有2個MCP23017晶元以及93個引腳在此項目中使用。有關電路的信息可以通過上圖或者下載下面的文件來獲取信息,有關Arduino開發板引腳需要連接器件:



64個簧片開關


3個步進電機驅動器(每個需要2個引腳)


1個伺服電機


3個限位開關


3個按鈕


6.連接開關


文件下載:<點擊文末的閱讀原文查看>


6.連接開關


材料列表中的電線在棋盤的一側布線,同時連接簧片開關組成了一個簡單的連接。開關一邊連接到棋盤上每個方框的底部,另外一邊連接到Arduino引腳的帶狀電纜。在使用膠水粘黏開關玻璃外殼的時候,只能連接開關裸露在外的導線部分,這樣做是為了解決電路過熱問題。









7.連接步進電機驅動器





通過驅動器上注釋的A +、A-、B +、B-來連接步進電機(ST-6600),步進電機的文檔將顯示彩色導線的連接位置,根據文檔將PIL +和DIR +端連接到Arduino 引腳,PUL-和DIR-端連接到Arduino


接地端。 DC +、 DC- 端連接到24V電源正極以及接地。控制夾具的伺服電機不需要電機驅動器,它直接連接到Arduino引腳。


8.按鈕以及限位開關的安裝






將按鈕以及限位開關各自連接到對應的位置上,其中3個限位開關可以幫助機械手臂在下完棋之後複位,如上圖所示,3個按鈕可以簡單地放在機器人前面的麵包板上。


頂部按鈕是向機器人反饋這樣一組信息,即對手已經走完一步棋。中間按鈕用於複位,底部按鈕用於恢復計數,以防人類玩家在移動棋子過程中混淆。


9.Arduino以及Python程序


這個項目中主要使用兩組程序一組是Arduino,另外一組是Python,下棋過程中核心引擎以及演算法主要是 Python,控制機器人的程序則在Arduino中。


Arduino代碼負責檢測玩家下棋中的移動棋子過程,通過計算將結果發送到Python程序中。Arduino還負責從Python程序中計算到的結果,然後在計算機輸出結果之後通過步進電機進行移動來顯示結果。


Python代碼中存儲國際象棋所需要的信息,如片段定位、判斷國王以及城堡位置等。Python程序還可以利用Minimax風格的AlphaBeta演算法來讓計算機選擇輸出結果。


項目代碼下載點擊文末的閱讀原文查看。


註:在GitHub上下載Arduino和Python代碼後,請將ChessRobotControl.ino文件上傳到您的Arduino Uno,一旦完成,運行Python程序PlayerVsAi.py來玩機器人下棋!


如果沒有機器人也沒有關係,可以將PlayerVsAi.py文件中的robot參數更改為False,然後運行PlayerVsAi.py,來開始遊戲之旅吧。


*參考來源:instructables,飯糰君編譯,轉載請註明來自FreeBuf.COM


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 FreeBuf 的精彩文章:

King Phisher:一款專業的釣魚活動工具包
2017第二屆中國信息安全服務年會:多方解讀國家政策,推進網路安全法與關鍵信息基礎設施保護落地
【FB TV】一周「BUF大事件」:警方打掉市面上最大打碼平台挖掘出全鏈條黑產;思科WebEx視頻會議插件再度發現嚴重RCE漏洞

TAG:FreeBuf |

您可能感興趣

又有一個肌肉警察要火了,夢想成為下一個羅尼庫爾曼!
在川普的美國,做一個穆斯林是怎樣一種體驗?
告訴你一個做魚好吃的方法,做法簡單
看完這6種情況,誰能給我一個養泰迪的理由?
俄羅斯美女泛濫,你想娶一個回家嗎?只要有這樣東西就能搞定一切
為什麼腎病是一個治不好的病?因為沒找對方法,養腎每天這樣做
如何擁有一個完美的庭院?
賽羅四位一體融合還是2個膠囊!那麼一個膠囊可以放幾個奧特曼呢
面相:教你如何通過鼻子的形體來看清一個人
迪迦奧特曼最後一個怪獸是什麼來頭,完全沒想到它的能力這麼逆天
如何喂胖一個新都娃兒,答案都在這裡
一個女人如果把自己的身體完全交給一個男人,會怎麼樣?
阿嬌的腿還有救嗎?教你一個快速瘦腿的方法!
豬蹄整個做紅燒,和老公一人啃一個,這方法很不錯
找一個非洲女孩做妻子,是一種什麼樣的體驗?
痔瘡的「利器」這些方法是治療痔瘡的秘訣,用一個好一個
阿米爾·汗:一個演員改變了一個國家
五個人過凌雲渡為什麼就一具屍體?兩個答案你選哪一個?
看完不同狗狗搭車的樣子,我突然悟出一個道理
想要領養貓咪的親們一定要注意這幾點,看完你就是一個合格的主人