最近工作單位的老師希望可以實作一個機器人範例,其主要是可以整合機電實做和機器學習,做一個可以與人類猜拳的機器人 起初老師的構想是可以用影像辨識的方式來讓機器人可以偵測人出拳的手勢(石頭,剪刀或布).但考量到我本身的影像辨識熟練度不高,樣本蒐集和機器學習的時間也都很花時間. 雖然我也覺得影像辨識類的範例可能比較容易激起學生的興趣,但如果省略掉樣本蒐集和機器學習這些比較枯燥的步驟,似乎課堂上知識面內容又過於薄弱. 因此我的想法是初版的機器人範例先不要用影像,而是以感知機為基礎建立一個多層的人工神經網路,將每隻手指的彎曲度(彎曲感測器)做為輸入,用來判斷可能的手勢.這個題目本身在資料蒐集和機器學習的時間可以大幅化簡,但卻還是保留. 系統流程: 大致上來說,整個遊戲的流程會由使用者按下"開始"鈕開始.經過3秒鐘的倒數計時,機器人本身會用亂數決定一個手勢(剪刀,石頭,或布)並將機器手移動成該手勢.此時機器人也會檢查使用者的手勢,並決定遊戲勝負,最後則更新記分板. 系統架構: Arduino Uno: 機器人運作控制核心 Servo:帶動機械運動的伺服機馬達 FlexSensor: 用來偵測手指彎曲程度的感測器 (可參閱 https://madeinti.blogspot.com/2020/04/blog-post.html ) User Interface: 遊戲啟動按鈕,分數提示...等 輸入及顯示裝置 記分板, 左邊數字為機器人勝場數,右方為玩家的勝場數 機器手機構設計: 為了簡化設計,雖然人有5支手指,但對於猜拳遊戲來說,我們可以把"食指中指"及"無名指小指"視為兩個群組,而大拇指獨立一組.所以我們可以用3個伺服機就能表現出猜拳的三種動作. 硬體完成: ANN人工神經網路-Arduino實做: 我們在Arduino中實做出上圖的網路架構,以食指,無名指和大拇指的彎曲感測做為網路輸入,最終輸出石頭,剪刀,布三種手勢的輸出權重. 使用陣列資料結構描述網路架構, 陣列中將每個節點輸...
留言
張貼留言