FTBUG-研究專用系統
概述
- 大部分的實驗與研究設計,在主要的系統需求上,一般是類似的。
- 這個研究系統的目標是讓 研究與實驗能有效地展開,資料能夠被感測,收集,分析,並能將資料公開給大家使用
文件狀態
系統需求
- 土壤濕度感測
- 定時量測
- 針對特定區域範圍給水
- 拍照
- 分析生長指標
- 照片,感測值,生長指標需能保持歷史紀錄
- 照片,感測值,生長指標需能被存取與分析,進行後續研究
- 系統記錄與資料存取架構
情境要求
- 能定時,定點進行澆水任務,照相,儲存
- 能順利接軌後續分析工作
規格
系統設計
- 量測紀錄記錄在 DB, 照片放檔案系統
- 主要程式語言使用 Python (版本待訂)
- RPI 主環境: RASPBIAN
- DB:? (量測資料未自動收值時, 初期先存在 MS Access; 需評估自動收值後所需的資料空間需求)
- Script 自動化:Camera Commander
- 時間自動化:使用 系統 crontab 發命令給 Camera Commander
- Log 設計: file based log, 使用 logrotate 做每日 log
- python module
- 跟氣象站介接
- 跟外部資料介接
- 提供資料給其他系統
- FBTUG 子專案-Camera Commander
- FBTUG 子專案-辨識與機器學習
系統架構

FBTUG Cloud Manager 設計
FarmBot 預計用 JSON 格式上傳,預期包含 檔名,照相位置,時間,辨識補充資料 等
JSON Example
{
"Metadata":{
"PathName":"Case1/I20170407105501-0.jpg",
"TimeStamp":"20170407105501",
"Area":"地點#1",
"Position":"拍照位置",
"Camid":"相機編號",
"XYZPosition": "X-100 Y-200 Z-300",
"Temperature":35,
"Humandity":65
},
"Shape":{
"Width":400,
"Height":600,
"Size":35000
},
"ColorSpace":{
"Format":"RGB",
"Channels":3
},
"Identify":{
"PlantsArea":{
"Green":0.3432,
"Red":0.1282
},
"WeedsDetect":{
"Weeds-type":5,
"Weeds-ratio":0.1532
},
"SeedsStatus":{
},
"WateringStatus":{
}
}
}
感測,照片資料格式定義
一圖多 Tag 架構
- Tag 用 JSON 格式,可多個檔案以因應不同系統陸續產生的資料
圖檔名定義
- IYYYYMMDDhhmmss-%seq.jpg, seq 從零開始編起
- ex: I20170407105501-0.jpg
Tag 檔名定義
- T%圖檔名_%tagseq.json, tagseq 從零開始編起
- ex: T20170407105501-0_0.json
Tag0 資訊
- 照相位置,時間,環境資訊,取照片原因等其他資訊
- JSON
- {
- "Metadata":{
- "PathName":"Case1/I20170407105501-0.jpg",
- "TimeStamp":"20170407105501",
- "Area":"地點#1",
- "Position":"拍照位置",
- "Camid":"相機編號",
- "XYZPosition": "X-100 Y-200 Z-300",
- "Temperature":35,
- "Humandity":65
- },
- "Shape":{
- "Width":400,
- "Height":600,
- "Size":35000
- },
- "ColorSpace":{
- "Format":"RGB",
- "Channels":3
- }
- }
Tag1 資訊
- 影像處理後的輸出資訊,比方說 N01-植栽覆蓋率 (unit %)
- JSON
- "Identify":{
- "PlantsArea":{
- "Green":0.3432,
- "Red":0.1282
- },
- "WeedsDetect":{
- "Weeds-type":5,
- "Weeds-ratio":0.1532
- },
- "SeedsStatus":{
- },
- "WateringStatus":{
- }
- }
系統介面
- RPI<->FBTUG Cloud Manager
- Mount file system 到 local, 圖存在 file system 中
- 將對應的 photo tag 用 JSON 格式也存一份一對一的檔案
- 將 JSON 上傳 Cloud Manager
給水控制
- 需知道育苗盤容量,乾土到滿水土所需的水量,以提供給水控制設計參考
系統實現
- RPI 環境 github : https://github.com/FBTUG/DevZone/tree/master/firmware/rpi_env
系統安裝
- 安裝 RASPBIAN
- Download and install RASPBIAN JESSIE WITH PIXEL 4.4
- Setup
- 第一次開機
- Raspberry Pi Configuration
- 手動連上 wifi
- Enable Camera,SSH
- 可參考 https://www.raspberrypi.org/documentation/remote-access/ssh/
- check out DevZone
- mkdir farmbot; cd farmbot
- git clone https://github.com/FBTUG/DevZone.git
- run installation script
- ./DevZone/firmware/rpi_env/script/setup.sh
[實際安裝問題解決-by Joe]
setup.sh 內的 minicom 在安裝時, 如有show error message -- "package minicom is not available"
- 請執行以下 command --(可以先試item 2, 如果可行的話就略過此點)
- sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get dist-upgrade -y && sudo apt-get install minicom
2. 如果還是failed, 請更改 \etc\apt\source.list (權限問題, 請下 chmod a+w source.list 才能更改)
在source.list 新增以下的path --
- deb-src http://archive.raspbian.org/raspbian/ wheezy main contrib non-free rpi
- deb http://mirrordirector.raspbian.org/raspbian/ wheezy main contrib non-free rpi
- deb http://archive.raspbian.org/raspbian wheezy main contrib non-free rpi
重新下command:
sudo apt-get update
sudo apt-get install minicom
系統討論會議-1
時間: 2017/4/7,QNAP會議摘要,哈爸與 Jarvis
快速結論:
1. 哈爸會將討論的系統大架構,說明記錄在共筆
2. 分工方式為,Jarvis 會補充 QNAP 內的一些架構說明以及協助設計界接的 API
3. 基本 FarmBot <-> QNAP 介面為: file system based photo, JSON upload by RaspAPI
系統討論會議-2
時間: 2017/4/8,哈爸與幸延
快速結論:
- 氣象站會有 RespAPI, G0v 專案也會匯集氣象站的資料,提供 Api, 需要時可以考慮要用哪一個
- 已經請幸延提供 API 相關資訊,以提供系統設計參考
- 目前研究 QNAP 平台是否能融合 FBTUG, Open Hack Farm 情境,提供單一後台平台
Q&A
Q1: 為何不使用 FarmBot 原廠系統,還需要另外做?
A: FarmBot 原廠系統主要設計針對使用者情境,對研究相當不方便。由於系統也相當龐大,修改相對不容易。所以目前的方向是,能使用原廠功能的部分,還是盡可能使用跟原廠同步,針對研究需求,我們會建構與維護另外一個研究系統。個別系統會有不同的 SD card, 換卡就能換系統
Q2: 一圖多 tag 架構,上傳到 Cloud Manager 要如何管理?
A:
參考
- FreeBird - 台灣優秀開源團隊的一站式開源專案