MakeNTU2020 === # 隊伍資訊 隊名: NCTU Nexus Attack ## 個人資訊 姓名:沈昌賢 學校:交通大學 系所:數據所 年級:碩一 email:124357689a@gmail.com 專長:python、C++、物聯網、 作品:平衡車:arduino做為主要模組,並用陀螺儀去判定機身角度,以arduino植入演算法控制機身平衡 影像真實風格化:將影像、影片以不同風格做上色,並保留原本的真實性,做realistic style transfer 飲食:葷 衣服尺寸:M 姓名: 林哲宇 學校: 交通大學 系所: 資工 年級: 大四 Email: zezectf@gmail.com 專長: python, C/C++, html/css/js, 資安, 物聯網, AI 做過的 project: https://hackmd.io/k3m15v2AShqK6ZHBzUyhtg?view 飲食: 葷 衣服尺寸: M 姓名: 林孟賢 學校: 交通大學 系所: 數據所 年級: 碩一 Email: lemonsien@gmail.com 專長: python, C/C++, AI, 區塊鏈 做過的 project: 無人機定位, 在無人機丟失GPS訊號時,根據無人機的空拍影像與預先輸入的地圖比對,得出無人機的GPS 飲食: 葷 衣服尺寸: L 姓名: 游哲維 學校: 交通大學 系所: 電機資訊學士班 年級: 大四 Email: stevenyu.supreme@gmail.com 專長: python, C/C++, AI, OpenGL, Fintech 做過的 project: 股票交易程式,根據過往的股價預測未來的股價,並判斷最佳的買入與賣出時機 飲食: 葷 衣服尺寸: L # 2020 MakeNTU InnOvaTion 報名企劃書 ## 作品名稱 用餐進度管控系統 ## 作品概念 (200字內) 由於目前西式餐廳在進行上菜動作前,都需要由服務生巡查客人的用餐進度,以此來判斷是否需要上下一道菜。外場等待的客人也會希望得知具體的等待時間。 如果有辦法自動偵測客人的用餐進度,即時回報給廚房,就可以減輕服務生與廚師的負擔與減少餐廳人事成本。用餐的進度也能被用來更精準的估計排隊客人的等候時間,提升客人整體用餐的體驗。 此外,根據客人用餐的快慢等,可以進一步分析客人對食物的喜好程度 ## 作品架構 (200字內,包含可能用到的技術與實現方式) 利用攝影機將客人的餐盤的影像擷取下來至樹梅派分析,計算出食物佔整個盤子的百分比來表示目前的用餐進度。並且可以透過計算單位時間的食物減少量,預測食用完畢的時間。 在主機上架一個伺服器,用餐進度可以傳至連接主機的 arduino,透過 LED 顯示用餐是否結束;預測食用完畢的時間則可以傳至連接主機的螢幕,顯示剩餘的等待時間。 ## 特殊硬體需求 2台攝影機、2台樹梅派、1台arduino、綠色led、紅色led,網路線 ## 特殊軟體需求 食物的 object detection 的 pretrain model ## 其他需求 純白色盤子、現場的食物、刀、叉 # 官方資訊 * [材料表](https://docs.google.com/spreadsheets/d/1s8h6erF9AqaUixXMNCCPElUNOWlh7o2fr1TCK8azjK8/edit?fbclid=IwAR1nZrr_8hFoiZ7XO1r6i8LhYMdpONxS9PJVQHZ8aN2d69q55Ox2kafk8ss#gid=0) * [報名處](https://docs.google.com/forms/d/e/1FAIpQLSdGJv4EThPGeIJJdUjoLJ7yTebczppxb-jMZw7gdobowPLlXA/viewform) * [報名企劃書](https://drive.google.com/file/d/1Ih123pk6JWsAj-rXPp95-95qtr6ya1DU/view?fbclid=IwAR3j9mmHVW0sQLaawWSRbeKebPAMVO20vSI1OIZ-q_RbUtKRxKBsG4tMzDk) # 主要細節架構 樹梅派: 用樹梅派連接camera,每個客人都用一個camera去做攝影,並回傳到樹梅派做預測用餐完畢的時間,並回傳主機, 顯示那些客人已經用餐完畢可以上其他餐點。 每個客人都以兩份餐點為主: (前菜:NO.1,主菜:NO.2) 每個餐點的用餐時間的平均值: (前菜:10分鐘,主菜:20分鐘) 每個餐點的用餐階段: (五個指標: 4為完整沒被食用 ~ 0用餐完畢) 閒置門檻:3分鐘,超過3分鐘為閒置狀態,如果用餐間隔太久也算閒置狀態 主機(可用樹梅派): 回傳:(NO.餐點,預測用餐完畢時間,是否閒置) 接收每個樹梅派傳來的(NO.餐點,預測用餐完畢時間,是否閒置), 排序所有客人的預測用餐完畢時間,並將預測最快用餐完畢的的客人排序在最前面,並閃燈,也是以便送餐人員知道送餐排序。 如果店裡有人在排隊,主機可以預測客人排隊的等待時間,讓客人可以耐心等候用餐時間。 ```graphviz graph{ pie1 [label = "樹梅派1"] pie2 [label = "樹梅派2"] camera1 [label = "攝影機1"] camera2 [label = "攝影機2"] plate1 [label = "餐盤1"] plate2 [label = "餐盤2"] computer1 [label = "主機1(筆電/樹梅派)"] arduino [label = "arduino"] leds [label = "給服務生看的 LED 燈"] screen1 [label = "外場顯示等待時間的螢幕"] screen2 [label = "給廚師看的螢幕"] linebot [label = "linebot"] computer1--screen2 leds--arduino arduino--computer1 screen1--computer1 computer1--pie1 computer1--pie2 computer1--linebot pie1--camera1 pie2--camera2 camera1--plate1 camera2--plate2 } ``` # 分工 - [x] 1. 偵測盤子位置 [name=孟賢] - 工作內容: 深度學習找出盤子的位置 - 回傳的格式: 一張圖 - [x] 2. 偵測盤子內食物的量 [name=Steven] - 工作內容: 分析餐盤圖,把餐盤內食物的剩餘量還有資訊回傳到主機1 - 回傳的格式: + 哪一桌(id): 0 代表第 0 桌,1 代表第 1 桌 + 餐桌狀態(status): 0 代表空桌,1 代表有人 + 食物完成比例(finished): 0~100 表示吃了多少比例的食物 + 第幾道菜(dish): 客人正在吃第幾道菜 + 共點幾道菜(order): 目前預設是 2,所以就填 2 + 預估剩餘時間(time_left): 分鐘為單位,填數字 - 範例: [測試網址](http://140.113.68.171:35000/frompie?id=0&status=0&finished=0&dish=1&time_left=5&order=2) - 察看結果(我預設一道菜吃 10 分鐘): [測試網址](http://140.113.68.171:35000/screen1) - [x] 3. 主機1與 arduino 的溝通(給服務生看的) [name=zeze] - 工作內容: 若食物少於一定的量,則啟動 IOT - 完成結果: 回傳的剩餘食物比例小於 20% 亮紅燈,反之亮綠燈 - [x] 4. 主機1與螢幕1的溝通(給外場客人看的) [name=zeze] - 工作內容: 把第 N 位客人需要等待的時間顯示在螢幕上 - [x] 5. 主機1與主機2的溝通 [name=昌賢] - 工作內容: 把所需食物和剩餘的時間從主機1傳給主機2 - 範例: [測試網址](http://140.113.68.171:35000/screen2) - [x] 6. 主機2與螢幕2的溝通(給廚師看的) [name=昌賢] - 工作內容: 把送餐順序sort好顯示在螢幕上(食物、剩餘時間、桌號) - [x] 7. 主機1 上的 linebot(掃描加好友) ![](https://i.imgur.com/Wmj24u9.png)