送餐機器人畢業專題
必做:環境初始化
-
請先在/web/config.json裡面設定軟硬體運行的ip及port
-
設定資料庫資訊:
請在路徑"C:"下新增"rescarDB.txt":
"C:\rescarDb.txt"
先在你要放檔案的位置使用以下指令以下載專題資料夾
git clone https://github.com/Liuming9124/rescar.git
cd "剛剛的資料夾名稱"
Neo4j 自學資訊
Fastapi 自學資訊
點餐系統環境建置
1. 需有 npm 環境 (for nodejs)
2. 透過 npm install 下載以下packages
由於需要將網頁資料放在web資料夾裡 請先將當前位置改到web裡面,請下指令
"cd web"
接下來透過以下指令安裝模組
"npm install"
模組詳細資料請見/web/package.json
3. 執行以下指令將網頁開啟
"nodemon server.js"
if nodemon not found -> "npm install -g nodemon"
-g means global
透過網址以造訪頁面
localhost:7000/home
要進去點餐頁面請先生成桌號代碼,生成QR碼之後點擊QR碼即可開始點餐
Neo4j 資料庫搭建
常用指令:
-
建立節點:
- n:變數名稱
- lable:標籤(通常都用標籤查詢資料)
- (key,value):節點相關的資料會用此方法儲存
- 注意:每次下指令時會有許多變數,請勿將變數名稱重複使用!!!
- 每個小括號內放一個Node,若要一次使用多個請用逗號隔開
-
建立關係
-
create (node1)-[rel:'關係']->(node2)
- 思考方式:
- A與B有關係 A->B,但是只有箭頭不足以表示關係為何,因此我們要為關係命名
-
A-[關係變數名稱:'like']->B
- 因此我們可以知道A與B的關係為A喜歡B
-
查詢NODE
- 語法: match (var:type{key:'value'}) return var
透過elementId可進行查詢:
(1)
(2) 直接將回傳值進行轉換
-
找出特定類別(test)的節點,該節點與其他節點沒有relation(可用於刪除特定沒用到的資料)
本資料庫使用指令
-
create(n:menu{name:'menu'})
-
創建類型
Create (:type {name:'壽司'}),(:type{name:'拉麵'}),(:type{name:'刺身'}),(:type{name:'定食'}),(:type{name:'甜點'})
-
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
-
綁定type與item的關係:從壽司開始
- merge:先查看node使否存在,若否則建立,若是則查詢
- 創建眾多節點時,可以透過Unwind將多項資訊包裝在一起並用As建立別稱
使用unwind時必須結合【with】使用,為固定用法,否則會報錯

-
建立QRcode對應URL的關係
-
新增訂單
- status:狀態(下訂、製作中、待配送、待結帳、已結帳)
- status == 0 1 2 3 4

-
查詢訂單:根據時間排序
-
根據訂單查詢訂單明細
-
查詢時間在特定區間內的訂單資料
-
查詢目前響服務鈴的客戶桌號
-
客戶發起服務鈴
-
商家完成服務鈴
-
結帳
硬體:
https://fastapi.tiangolo.com/zh/tutorial/
請先參考fastapi的tutorial將環境先建置完成
如果沒看上面的tutorial,一定要安裝的:
運行fastapi
1.先進入到/hardware的資料夾
cd /hardware
2.啟動fastapi指令: –host 機器人IP位址 –port 機器人開放post –reload 程式碼有修正會自動重啟
-
note: 127.0.0.1 代表本機,可以在自己的電腦上先測試,若要進行遠端控制請配置一個區網下的真實IP才可以進行遠端連線。
uvicorn main:app --host 127.0.0.1 --port 8000 --reload
logs
1. 軟硬體logs紀錄
有兩筆logs,分別放在:
- /web/logs.txt
- /hardware/logs.txt
2. logs 整合
檔案放在/rescar/checkLogs.py,執行該程式碼後logs會整合web及hardware的logs並打印出來以供參考,方式採用read,不會出現搶占硬體資源的情況。
待處理 :