FBTUG 子專案-Camera Commander

最後編輯:2017-05-12 建立:2017-02-20 歷史紀錄

 

WUULONG S緣起

  • FarmBot camera 這邊預期會有不少衍伸的應用與功能需求,看到 3dp Arduino 的部分經由標準的 command 介面,來切割各個子功能,於是想做一個標準的控制介面,讓 Camera 相關的應用能跟其他各式各樣的應用接合

 

介面

  • 需訂立 介面規格,應該是 command based, 處理命令的輸入與 status report
  • 至於 image, video 的介面,可以有基本的 file, streaming 功能,其他看應用需要在逐步增加。
  • Command 介面預計可以接受 命令列,也可以接受 socket

 

命令定義

命令格式說明: 為跟 FarmBot 統一,用空白分隔。

為了能更加整合 FarmBot 原有 Arduino commands, 目前相容原有 Commands

意思是用原有的 FarmBot commands 會直接送到 Arduino 並取得結果回傳,當個 repeater 的概念。也因為如此,目前 G, F, R, E 開頭的命令都保留給 Arduino

*

命令細部說明與參考資料

N01-植栽覆蓋率

  • https://github.com/ch-tseng/farmbot --> countPlantsArea.py

系統架構

 

使用 python, python-camera, opencv

 

Prototype

Features:

# 1. Support CLI

# 2. start/stop socket command interface

# 3. support socket input command and response

# 4. CLI and socket command can be support at the same time.

 

python camera_commander_prototype.py

----- FarmBot Camera Commander V0.0.4 -----

FCC>help

 

Documented commands (type help <topic>):

========================================

help net_open quit r83 stop

 

FCC>r83

V0.0.4

FCC>net_open

FCC>starting up on localhost port 10000

waiting for a connection...

connection from 127.0.0.1,58884

received:R83

 

demo code: echo data back to client

V0.0.4

stop

quitFCC>quit

 

 

--- 執行 client

python echo_client.py

connecting to localhost port 10000

sending "R83

"

received "V0.0.4

"

closing socket

 

-- 使用 netcat 來測試也可以

echo "R83" | nc localhost 10000

V0.0.4

 

周期執行系統設計

  • 直接用 crontab 中指定週期與要執行的命令。
  • camera commander 將支援 script process 的功能成某一個命令
  • 所以在 crontab 中只需類似 echo "runscript watering.scr" | nc localhost 10000

 

test_serial.py

既然 FarmBot 的 Arduino 是 G-Code processor, 只需從 UART 餵給 Commands 就可以驅動

 

所以如果我們有一個程式能夠把編好的Commands檔案 讀進來,一個一個命令去執行,那好像就是簡單的自動化了

就是這個:test_serial.py

 

目前所有讀進來的命令,都直接往 Arduino 送,所以只支援 Arduino code 內支援的 command set, 也就是 FarmBot Arduino Commands

 

本程式有幾個簡單的驗證功能

 

test_serial_cmdgen.py

那如果再有一個程式,能夠產生走到每個植物上,然後澆水的命令檔,那好像就能自動澆水了

就是這個:test_serial_cmdgen.py

 

希望支援矩陣模式的種植安排,以及直接預設好位置的種植安排。

可產生到每個植物位置,然後執行幾個命令的 script 產生

 

video_count_sprout.py

要是有隻程式,分析記錄發芽縮圖軟體的影像,每個小時計算已發芽的總數,然後輸出分析結果。來畫出一個發芽總數的圖表。

發芽縮圖範例影片

 

code

'exe_cmd [ -h ] [ -v ] [ -d ] [ -t ] [-g]'

-v: video pathname

-d: output directory

-t: start time, ex: 20170507010203'

-g: frames gap time in seconds. default: 3600'

-r: reference frame. default: first frame'

 

1. Video 轉出 images - OK

2. 配上對的時間檔名 - OK

3. 每個檔案去跑一下 CH 的種子計算 - OK

 

程式需使用 CH 的 library 目前需要執行在這個目錄上,請手動配置

https://github.com/ch-tseng/farmbot

輸出範例:

  • f1/image_20170504101133.jpg,0
  • f1/image_20170504111133.jpg,0
  • f1/image_20170504121133.jpg,3
  • f1/image_20170504131133.jpg,2
  • f1/image_20170504141133.jpg,4
  • f1/image_20170504151133.jpg,0
  • f1/image_20170504161133.jpg,0
  • f1/image_20170504171133.jpg,0
  • f1/image_20170504181133.jpg,0
  • f1/image_20170504191133.jpg,0
  • f1/image_20170504201133.jpg,0
  • f1/image_20170504211133.jpg,0
  • f1/image_20170504221133.jpg,0
  • f1/image_20170504231133.jpg,0
  • f1/image_20170505001133.jpg,0
  • f1/image_20170505011133.jpg,0
  • f1/image_20170505021133.jpg,0
  • f1/image_20170505031133.jpg,0
  • f1/image_20170505041133.jpg,0
  • f1/image_20170505051133.jpg,0
  • f1/image_20170505061133.jpg,13
  • f1/image_20170505071133.jpg,96
  • f1/image_20170505081133.jpg,111
  • f1/image_20170505091133.jpg,80
  • f1/image_20170505101133.jpg,79
  • f1/image_20170505111133.jpg,86
  • f1/image_20170505121133.jpg,92
  • f1/image_20170505131133.jpg,105
  • f1/image_20170505141133.jpg,112

 

遠端 SSH 連入,會有沒有 X 的問題,暫時用以下技巧躲過

在本地端使用 X Window 環境,在 Mac 上可以使用 XQuartx

在本地終端機

> xhost +

> ssh pi@[ip]

> export DISPLAY=:0.0

> python video_count_sprout.py

 

參考