眼動應用其實實現(xiàn)的主要功能是:實時注視估計和跟蹤。注視估計是識別任何給定時刻的視線,而跟蹤是連續(xù)跟隨視線的能力。
這個眼動儀是研究性質的,不建議,也不適合投入生產實踐。文章中諸多細節(jié)也未給出,硬件改裝也未給出。安全性和合規(guī)性也未給出,有復現(xiàn)的,研究的,注意相關文件的補充。
ESP32-CAM是采集眼動數(shù)據(jù)的,接著通過串口或者網絡把這個數(shù)據(jù)傳到電腦里面,這個時候有一個Python后端在運行,把視頻流解碼,然后使用一個上位機來控制這個后端。
這個東西只要25
傳輸上面,一個是無線的2.4G:
測試
一個有線的-看上去是USB,其實是串口,比特率高的不行(30W)
這里我就放了seeed的板子
首先項目第一步要跑起來這個后端:
安裝windows的包管理
> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser > Invoke-RestMethod -Uri https://get.scoop.sh | Invoke-Expression
成功
scoop install pipx pipx ensurepath
接著安裝pipx
pipx install poetry
這個代碼在運行的時候不可以翻墻,我這里是手機熱點安裝成功。
pipx ensurepath
自動加路徑
poetry install --no-root
最后在包下面安裝所有的依賴
需要注意要使用高版本的解釋器
這里會出現(xiàn)很多吃這個問題
我們只要把上面的包重新卸載安裝就好
這個是所有的后端需要的庫
完成后,直接開啟
會有一個集成的API列表出現(xiàn)
這個API寫了什么呢?
這段JSON描述了一個跟蹤系統(tǒng)的配置,關鍵組件的簡要說明:
Enabled: 指示跟蹤系統(tǒng)當前是否啟用。在這里,設置為false,表示已禁用。
Algorithm: 描述了跟蹤系統(tǒng)使用的算法。
以下是按順序列出的算法:
每種算法可能具有特定的參數(shù)和配置。
LEAP
BLOB
HSRAC
RANSAC
HSF
Camera: 描述了與捕獲輸入有關的參數(shù):
Capture Source: 當前為空,這意味著此處未指定。
Rotation: 指定捕獲圖像的旋轉。
Threshold: 相機操作的閾值。
Focal Length: 相機鏡頭的焦距。
Flip X/Y Axis: 指示是否沿著X或Y軸翻轉圖像的標志。
Region of Interest (ROI): 指定捕獲圖像中感興趣的區(qū)域,由其X、Y坐標、寬度和高度定義。
細節(jié)什么的,以后再寫,現(xiàn)在看固件,使用platformio開發(fā)
默認固件就是最便宜的開發(fā)板
使用USB的話可以直接切換工程
這些是需要的所有庫,會自動安裝
這個USB其實就是串口轉USB,為了速度,30W的比特率
這個是相機的數(shù)據(jù)
fb = esp_camera_fb_get(); // 從相機獲取幀緩沖區(qū) if (fb) { len = fb->len; // 獲取幀的長度 buf = fb->buf; // 獲取幀的數(shù)據(jù) } else { log_e("Camera capture failed with response: %s", esp_err_to_name(err)); // 如果獲取幀失敗,則記錄錯誤信息 err = ESP_FAIL; // 設置錯誤碼 }
這個是一幀數(shù)據(jù)的樣子
這段代碼的作用是循環(huán)地從攝像頭捕獲幀并將其傳輸?shù)酱?a target="_blank">端口。如果捕獲幀失敗,則會記錄錯誤信息并繼續(xù)循環(huán)。在每次傳輸之后,會計算延遲并記錄幀大小和延遲信息。
代碼進行了解耦,就三部分,恒流源的LED和相機以及串口
這個是代碼的循環(huán)
該函數(shù)的作用是不斷循環(huán)監(jiān)聽串口通信。如果串口可用,它將嘗試解析接收到的 JSON 命令,并將其傳遞給命令管理器進行處理。如果串口不可用(可能因為正在使用USB接口),則會調用 send_frame() 函數(shù)發(fā)送攝像頭幀。
串口
函數(shù) SerialManager::run(): 不斷循環(huán)監(jiān)聽串行端口上是否有數(shù)據(jù)可用。如果有數(shù)據(jù)可用,則讀取并解析 JSON 命令,然后交給 CommandManager 處理。
這個代碼有趣
把代碼的頭對比好,來控制機器
初始化眼動跟蹤器的網絡相關功能(如果未啟用 USB API)
看代碼,串口沒有控制功能,單純的輸出圖像數(shù)據(jù)。
測試可以到70FPS,這個數(shù)據(jù)有點假
后端開啟,再打開追蹤的GUI
連接
這個是我的攝像頭太垃圾了,沒有調焦
開始捕獲了
追蹤中
這個上位機的代碼呢,也可以自己開發(fā):
第一步在這里改成小寫以免打包失敗(一定改)
記住進這個地方,不然讀取不到打包文件
poetry run pyinstaller eyetrackapp.spec
在dist里面找到exe啟動
最新的更新有了新算法
ONNX是一個開放式的規(guī)范,定義了可擴展的計算圖模型、標準數(shù)據(jù)類型以及內置的運算符。該文件在存儲結構上可以理解為是一種層級的結構。
最新的代碼還是加入了神經網絡
可能對于大多數(shù)人來講,這些東西太過于復雜。但是沒辦法,就這么個情況,很多人倒是需要這個眼動儀,過段日子就可以小批量的賣一波了。
審核編輯:劉清
-
CAM
+關注
關注
5文章
200瀏覽量
42971 -
上位機
+關注
關注
27文章
941瀏覽量
54790 -
python
+關注
關注
56文章
4792瀏覽量
84627 -
串口轉USB
+關注
關注
0文章
2瀏覽量
1996 -
ESP32
+關注
關注
18文章
971瀏覽量
17201
原文標題:ESP32眼動追蹤實現(xiàn)-EyeTrackVR
文章出處:【微信號:TT1827652464,微信公眾號:云深之無跡】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論