原文譯自http://wiki2.dfrobot.com.cn/HUSKYLENS_V1.0_SKU_SEN0305_SEN0336
—————————
1. 產品簡介HuskyLens二哈識圖是一款簡單易用的AI視覺感測器,內置6種功能:人臉識別、物體追蹤、物體識別、巡線追蹤、顏色識別、標籤(二維碼)識別。僅需一個按鍵即可完成AI訓練,擺脫繁瑣的訓練和複雜的視覺演算法,讓你更加專注於項目的構思和實現。 HuskyLens板載UART / I2C介面,可以連接到Arduino、Raspberry Pi、LattePanda、micro:bit等主流控制器,實現硬體無縫對接。HuskyLens直接輸出識別結果給控制器,你無需折騰複雜的演算法,就能製作非常有創意的項目。
2. 技術規格- 處理器:Kendryte K210
- 圖像感測器:
- SEN0305 HuskyLens: OV2640(200W圖元)
- SEN0336 HuskyLens PRO: OV5640(500W圖元)
- 供電電壓:3.3~5.0V
- 電流消耗:320mA@3.3V, 230mA@5.0V(電流值為典型值;人臉識別模式;80%背光亮度;補光燈關閉)
- 連線介面:UART,I2C
- 顯示幕:2.0寸IPS,解析度320*240
- 內置功能:人臉識別,物體追蹤,物體識別,巡線追蹤,顏色識別,標籤識別
- 尺寸:52mm*44.5mm
3. 介面與按鍵說明
3.1 介面小提示: USB介面與4pin介面,任接一個,即可對HuskyLens供電。 由於板載了電源自動切換電路,USB介面與4pin介面可以同時接電源,且優先使用USB介面上的電源。 請確保電源電壓與功率足夠,防止HuskyLens工作異常。
3.2 功能按鍵與學習按鍵功能按鍵與學習按鍵的基本操作如下:
4. 升級韌體使用本產品之前,強烈建議你升級到最新版本的韌體,特別是Kickstarter的眾籌支持者。 4.1 windows系統建議使用windows 10作業系統升級HuskyLens的韌體,簡單方便。操作步驟如下: - 下載K-Flash軟體。點擊下載K-Flash。(如果K-Flash無法打開請先點擊下載運行環境 安裝再運行K-Flash)。
- 下載USB轉串口晶片CP2102的驅動程式。點擊此處 選擇適合您的驅動。(注:也可使用Mind+中的一鍵安裝驅動功能安裝此驅動。)
- 下載最新的韌體. 點擊下載V0.4.6Stable版本
在本教程中,使用HUSKYLENSWithModelV0.4.6Stable.kfpkg韌體。 - 運行K-FLASH軟體, 然後點擊“...”按鈕,載入韌體。
- 請按照以下參數值,來設置 K-Flash軟體:
- Device: 選擇您電腦上的COM口,其名字含有“Silicon Labs CP210x USB to UART Bridge”字樣
- Baud rage: 2000000
- Chip: In-Chip
- 不勾選 "Open terminal after flash"
- 點擊“Flash”按鈕。燒錄過程大概需要5分鐘左右。韌體中有大更新,因此上傳時間會有點長。
- 出現彈窗,提示“Successful”,則韌體的升級就完成了。
4.2 linux或mac系統使用linux或mac系統,也可以升級HuskyLens的韌體。以ubuntu 18.04.4為例進行演示。 根據你的作業系統類型,安裝合適的CP2102N驅動程式。點擊此處 下載。 ubuntu 18.04.4中,HuskyLens插上即可識別,可不安裝驅動。 在本教程中,使用HUSKYLENSWithModelV0.4.6Stable.kfpkg固件。 建議把整個HuskyLens/HUSKYLENSUploader倉庫複製到本地,方便操作。 如你的作業系統中還沒有安裝 pip3,請先安裝。命令列如下:
sudo apt install python3-pipmac系統中,安裝pip3的命令列如下: /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.co ... l/master/install.sh)"brew install python3sudo pip3 install pyserialcd HUSKYLENSUploadersudo python3 kflash.py -b 2000000 HUSKYLENSWithModelV0.4.6Stable.kfpkg5. 常規參數設置5.1 設置中文語言功能表介面的預設語言為英文。本教程使用中文語言介面。要將功能表介面的語言設置為中文,請按照如下步驟操作: 向右撥動“功能按鍵”,至螢幕頂端顯示“General Settings”。 向下短按或長按”功能按鍵“,進入“General Settings”的二級功能表參數設置介面。 向右撥動“功能按鍵”,選擇“Language”參數(位於最後一個),然後短按“功能按鍵”,再向右撥動“功能按鍵”選擇“簡體中文”,再短按“功能按鍵”,此時HuskyLens會自動切換到中文語言。
5.2 進入常規設置進入常規設置的二級功能表並調整各個參數的操作方法如下: 調整各個參數:向左或向右撥動“功能按鍵”,選擇需要設置的參數,然後短按“功能按鍵”進入所選參數的設置,向左或向右撥動“功能按鍵”調整所選參數,再短按“功能按鍵”,確認該參數 保存並退出:參數調整完畢後,向左撥動“功能按鍵”,直至選擇“保存並返回”,然後短按“功能按鍵”,螢幕上會顯示“是否保存參數”的提示,默認選擇“確認”,此時,短按“功能按鍵”即可保存設置好的參數,並自動退出“常規設置”的二級功能表介面。
小提示: - 常規設置裡的各項參數,都是通過左右撥動“功能按鍵”和按下“功能按鍵”來進行選擇和設置的。
- 設置好參數之後,務必選擇“保存並返回”,才能將設置好的參數保存下來
5.3 常規設置的參數項常規設置的二級功能表參數設置介面,包含了10個不同的參數。 協定種類 HuskyLens支持三種不同串列傳輸速率的串口協定(9600,115200,1000000),也支援I2C協定。此外,還支援自動識別協定,也就是,HuskyLens會自動切換成串口或I2C協議。建議使用自動識別協定,簡單方便。默認設置為自動識別。 螢幕亮度 螢幕可以調節亮度,範圍為1~100。預設值為80。 功能表自動隱藏 如果有一段時間不操作HuskyLens,那麼螢幕上的功能表會自動隱藏。你可以設置這個等待時間,範圍為1~100秒。預設值為10秒。 LED開關 HuskyLens板載了2個LED補光燈。你可以打開或者關閉補光燈。預設值為關。 LED亮度 LED補光燈可以調節亮度,範圍為1~100。預設值為50。 RGB開關 HuskyLens板載了一顆RGB指示燈,你可以打開或者關閉RGB指示燈。預設值為開。 RGB亮度 RGB指示燈也可以調節亮度,範圍為1~100。預設值為20。 初始化設置 通過初始化設置,把Huskylens恢復到出廠狀態 版本號 當前固件的版本資訊 語言 目前HuskyLens支援中文和英文兩種語言。通過語言設置,選擇你需要的語言。
6. 顏色與座標6.1 顏色指示各個功能中,螢幕中央的方框、“+”字的顏色定義是統一的,有助於你瞭解當前HuskyLens所處的狀態。 [td]顏色 | 狀態 | 由橙色漸變到黃色,再由黃色漸變到橙色 | 未學習過,待學習 | 黃色 | 正在學習中 | 藍色 | 已學習過,且識別到學習過的東西 |
RGB指示燈目前僅用於人臉識別功能的狀態指示,顏色定義如下: [td]顏色 | 狀態 | 藍色 | 未學習過,偵測到人臉 | 黃色 | 正在學習中 | 綠色 | 已學習過,且識別到學習過的人臉 | 6.2 坐標系當HuskyLens識別學過的物體時,在螢幕上會有彩色方框將其框選,你可以得知這些方框的座標、長寬。HuskyLens的坐標系如下所示, 這有助於你瞭解彩色方框的座標值。 7. 各功能說明7.1 人臉識別本功能可以偵測任何臉部輪廓;識別、追蹤學習過的人臉。
識別單個人臉默認設置為學習並識別單個人臉。
操作設置向左撥動“功能按鍵”,直至螢幕頂部顯示“人臉識別”。
學習與識別偵測人臉: 把HuskyLens對準有人臉的區域,螢幕上會用白色框自動框選出檢測到的所有人臉,並分別顯示“人臉”字樣。 若此時螢幕中央的“+”字沒有對準任何人臉框,則另一面的RGB燈不亮。 若此時螢幕中央的“+”字對準在任意人臉框內,則另一面的RGB燈亮藍色。 小提示: 如需讓HuskyLens學習或識別自己的臉,也就是自拍,此時看不到螢幕,那麼可以根據RGB指示燈的不同顏色來確定狀態。
學習人臉: 將HuskyLens螢幕中央的“+”字對準需要學習的人臉,短按“學習按鍵”完成學習。如果識別到相同的臉,則螢幕上會出現一個藍色的框並顯示”人臉:ID1“。這說明已經可以進行人臉識別了。 然而,上述操作只是讓HuskyLens學習了人臉的一個角度(維度),但實際上人臉是立體的,因此人臉有多個角度。如果人臉角度變化了,比如正臉換成了側臉,那HuskyLens不一定能識別出來。為解決這個問題,HuskyLens內置有持續學習的功能,能錄入人臉的各個角度,讓HuskyLens越學越準確。 錄入各個角度人臉的操作方法如下:(注:開始學習新的人臉之前,先要讓HuskyLens忘記已經學習過的人臉。操作方法參考“忘記學過的人臉”章節。) 將HuskyLens螢幕中央的“+”字對準需要學習的人臉,長按“學習按鍵”不鬆開,此時螢幕中會在人臉上顯示黃色框並標識“人臉:ID1”,說明HuskyLens正在學習人臉。然後,將HuskyLens螢幕中央的黃色框依次對準同一個人的臉的不同角度,如正臉、側臉(也可以是同一個人的多張照片),錄入此人臉的各個角度。學習過程中,RGB燈為黃色。 接著,鬆開“學習按鍵”,結束學習。如果HuskyLens識別到學習過的人臉,則螢幕上,這個人臉會被藍色的框選中,並顯示”人臉:ID1“。 小提示: 如果螢幕中央沒有“+”字,說明HuskyLens在該功能下已經學習過了(已學習狀態)。如要讓HuskyLens學習新的人臉,則需要讓HuskyLens忘記已學的人臉。
人臉識別: HuskyLens學習過的人臉資訊會自動保存起來。後續,當HuskyLens檢測到學習過的人臉時,會將該人臉用藍色方框框選出來並標識“人臉:ID1”,邊框大小會隨著人臉大小而變化,並自動追蹤人臉。此時RGB指示燈為綠色。
忘記學過的人臉: 如果螢幕中央沒有“+”字,說明HuskyLens在該功能下已經學習過了(已學習狀態)。如要讓HuskyLens學習新的人臉,則需要刪除之前學習過的人臉資訊,也就是讓HuskyLens忘記已學的人臉。 刪除已學東西的操作方法如下: 在當前功能下,短按“學習按鍵”,螢幕提示“再按一次遺忘!”。在倒計時結束前,再次短按“學習按鍵”,即可刪除上次學習的東西,螢幕中央顯示“+”字,說明HuskyLens已經準備好學習新東西了。如果不小心短按了“學習按鍵”,螢幕已經提示“再按一次遺忘!”,但又不想刪除已學習的東西,那麼在倒計時結束前,不要有任何操作即可。
讓HuskyLens忘記所學東西的操作方法,在其他功能下,也是完全一樣的,後續不再複述。
識別多個人臉默認設置為學習並識別單個人臉。如要學習並識別多個人臉,則需要在人臉識別功能的二級功能表參數設置中打開“學習多個”選項。 操作設置向左撥動“功能按鍵”,至螢幕頂部顯示“人臉識別”。 長按“功能按鍵”,進入人臉識別功能的二級功能表參數設置介面。 向左或向右撥動“功能按鍵”,選中“學習多個”,然後短按“功能按鍵”,接著向右撥動“功能按鍵”打開“學習多個”的開關,即:進度條顏色變藍,進度條上的方塊位於進度條的右邊。再短按“功能按鍵”,確認該參數。 向左撥動“功能按鍵”,選中“保存並返回“,短按”功能按鍵“,螢幕提示”是否保存參數?“。預設選擇”確認“,此時短按”功能按鍵“,即可保存參數,並自動返回到人臉識別模式。
學習與識別學習多個人臉: 將HuskyLens螢幕中央的“+”字對準需要學習的人臉,長按“學習按鍵”完成第一個人臉的學習(各個角度)。鬆開”學習按鍵“後,螢幕上會提示:”再按一次按鍵繼續!按其他按鍵結束“。如要繼續學習下一個人臉,則在倒計時結束前短按“學習按鍵”,可以繼續學習下一個人臉。如果不再需要學習其他人臉了,則在倒計時結束前短按”功能按鍵”即可,或者不操作任何按鍵,等待倒計時結束。 本章節中,我們需要繼續學習下一個人臉,因此在倒計時結束前短按“學習按鍵”。然後將HuskyLens螢幕中央的“+”字對準需要學習的下一個人臉,長按“學習按鍵”完成第二個人的臉的學習。以此類推。 HuskyLens標注的人臉ID與錄入人臉的先後順序是一致的,也就是:學習過的人臉會按順序依次標注為“人臉:ID1”,“人臉:ID2”,“人臉:ID3”,以此類推,並且不同的人臉ID對應的邊框顏色也不同。 小提示:如果螢幕中央沒有“+”字,說明HuskyLens在該功能下已經學習過了(已學習狀態)。如要讓HuskyLens學習新人臉,則需要讓HuskyLens忘記已學的。操作方法參考“忘記學過的人臉”章節。
7.2 物體追蹤本功能可以學習並追蹤一個指定的物體。只能追蹤一個物體,暫不支援追蹤多個物體。 操作設置向左或向右撥動“功能按鍵”,至螢幕頂部顯示“物體追蹤”。 長按“功能按鍵”,進入物體追蹤功能的二級功能表參數設置介面。 向右撥動“功能按鍵”,選中“學習開啟”,然後短按“功能按鍵”,接著向右撥動“功能按鍵”打開“學習開啟”的開關,即:進度條顏色變藍,進度條上的方塊位於進度條的右邊。再短按“功能按鍵”,確認該參數。 同樣的方法,打開“自動保存模型”的開關。 也可以設置“學習框長寬比”和“學習框大小”來調整學習框的尺寸,以便於更好的匹配所學物體的尺寸。 向左撥動“功能按鍵”,選中“保存並返回“,短按”功能按鍵“,螢幕提示”是否保存參數?“,默認選擇”確認“,此時短按”功能按鍵“,即可保存參數,並自動返回到物體追蹤模式。
學習與追蹤學習物體: 把HuskyLens對準需要追蹤的物體,調節物體與HuskyLens的距離,將物體包含在螢幕中央的橙黃色方框內。如不方便,包含特徵鮮明的局部亦可。長按“學習按鍵”不鬆開,並調整角度和距離,使得HuskyLens從不同的角度和距離學習該物體。學習過程中,螢幕上的黃框會標注“學習中:ID1”。 當HuskyLens在不同的角度和距離都能追蹤到該物體時,就可以鬆開“學習按鍵”結束學習了。 小提示: 如果螢幕中央沒有橙黃色方框,說明HuskyLens之前學習過一個物體,請參照“忘記學過的人臉”章節進行操作。
追蹤物體: 移動HuskyLens或者目標物體,螢幕中的框會自動追蹤目標物體。追蹤物體時,會顯示“學習中:ID1”,表示HuskyLens一邊追蹤物體,一邊學習,這樣設置有助於提高物體追蹤的能力;也可以長按“功能按鍵”,進入二級功能表參數設置,選擇“學習開啟”,關閉此參數。 當識別結果滿足要求,達到預期效果,就可關閉一邊追蹤一邊學習的功能,方法是:長按“功能按鍵”,進入物體追蹤功能的二級功能表參數設置,選擇“學習開啟”,關閉此參數即可(進度條顏色變白,進度條上的方塊位於進度條的左邊)。 小提示: 追蹤物體時,每次只能追蹤一個物體,可以是任何有明顯輪廓的物體,甚至是各種手勢。
7.3 物體識別本功能可識別這是什麼物體,並追蹤。目前僅支援20種物體,分別為:飛機、自行車、鳥、船、瓶子、巴士、汽車、貓、椅子、牛、餐桌、狗、馬、摩托車、人、盆栽植物、羊、沙發、火車、電視。 20種物體的英文名稱,分別為:aeroplane, bicycle, bird, boat, bottle, bus, car, cat, chair, cow, diningtable, dog, horse, motorbike, person, pottedplant, sheep, sofa, train, tvmonitor. 預設設置為只標記並識別一個物體。本章節採用標記並識別多個物體為例進行演示。 操作設置向左或向右撥動“功能按鍵”,直至螢幕頂部顯示“物體識別”。 長按“功能按鍵”,進入物體識別功能的二級功能表參數設置介面。 向左或向右撥動“功能按鍵”,選中“學習多個”,然後短按“功能按鍵”,接著向右撥動“功能按鍵”打開“學習多個”的開關,即:進度條顏色變藍,進度條上的方塊位於進度條的右邊。再短按“功能按鍵”,確認該參數。 向左撥動“功能按鍵”,選中“保存並返回“,短按”功能按鍵“,螢幕提示”是否保存參數?“,默認選擇”確認“,此時短按”功能按鍵“,即可保存參數,並自動返回到物體識別模式。
標記與識別偵測物體: 把HuskyLens對準目標物體,在螢幕上,會有白色框自動框選出識別到的所有物體,並顯示對應的物體名稱。目前只能識別並框選20種物體,其餘物體無法識別和框選。 標記物體: 把HuskyLens對準目標物體,當螢幕上顯示的物體被檢測到並顯示其名字時,將螢幕中央的“+”字對準該物體的白色框中央,短按“學習按鍵”進行標記。此時,框體顏色由白色變為藍色,並顯示其名字和ID1,同時有消息提示:“再按一次繼續,按其他按鍵結束”。如要繼續標記下一個物體,則在倒計時結束前按下“學習按鍵”,可以繼續標記下一個物體。如果不再需要標記其他物體了,則在倒計時結束前按下”功能按鍵”即可,或者不操作任何按鍵,等待倒計時結束。 HuskyLens顯示的物體ID與標記物體的先後順序是一致的,也就是:ID會按順序依次標注為“ID1”,“ID2”,“ID3”,以此類推,並且不同的物體ID對應的邊框顏色也不同。
識別物體: HuskyLens再次遇到標記過的物體時,在螢幕上會有彩色的邊框框選出這些物體,並顯示物體名稱與ID。邊框的大小隨著物體的大小而變化,自動追蹤這些物體。同類物體,有相同顏色的邊框、名字和ID。支援同時識別多類物體,比如同時識別出瓶子和鳥。 這個功能,可以作為一個簡單的篩選器,從一堆物體中找出你需要的物體,並做追蹤。 小提示: 此功能不能區分同類物體間的不同,比如:只能識別出這是貓,但不能識別出這是什麼貓。有別於人臉識別,人是一類,但可以區分不同的人臉。
7.4 巡線追蹤本功能可以追蹤指定顏色的線條,做路徑預測。默認設置為只追蹤一種顏色的線條。本章節以只追蹤一種顏色的線條為例進行說明。 操作設置向左或向右撥動“功能按鍵”,直至螢幕頂部顯示“巡線”。 長按“功能按鍵”,進入巡線功能的二級功能表參數設置介面。 向左或向右撥動“功能按鍵”,選中“學習多個”,然後短按“功能按鍵”,查看“學習多個”的開關是否處於關閉狀態。如果沒關,就向左撥動“功能按鍵”關閉“學習多個”的開關,即:進度條顏色變白,進度條上的方塊位於進度條的左邊。再短按“功能按鍵”,確認該參數。 如果環境光線比較暗,可以打開補光燈。參照上述方法,將“LED開關”打開即可。
- 向左撥動“功能按鍵”,選中“保存並返回“,短按”功能按鍵“,螢幕提示”是否保存參數?“,默認選擇”確認“,此時短按”功能按鍵“,即可保存參數,並自動返回到巡線模式。
學習與追蹤小提示: - 學習線條時,儘量把HuskyLens的位置調節到與線條平行。
- 識別的線條可以是任何與背景有明顯色差的單色線條,建議線條與背景色有足夠的色差,以保證巡線的穩定。
- HuskyLens可以根據線條的顏色不同,進行多個線條的學習與巡線,但是線條必須是與背景有明顯色差的單色線條。大多數情況下,巡線用的線條,只有一種顏色。為了保證穩定性,建議只對一種顏色的線條進行巡線。
- 線條的顏色與環境光線有很大關係,建議巡線的時候,保持環境光線的穩定。
7.5 顏色識別本功能可以學習、識別、追蹤指定的顏色。 默認設置為只學習、識別並追蹤一種顏色。本章節採用學習、識別並追蹤多種顏色為例進行說明。 操作設置向左或向右撥動“功能按鍵”,直至螢幕頂部顯示“顏色識別”。 長按“功能按鍵”,進入顏色識別功能的二級功能表參數設置介面。 向左或向右撥動“功能按鍵”,選中“學習多個”,然後短按“功能按鍵”,接著向右撥動“功能按鍵”打開“學習多個”的開關,即:進度條顏色變藍,進度條上的方塊位於進度條的右邊。再短按“功能按鍵”,確認該參數。 向左撥動“功能按鍵”,選中“保存並返回“,短按”功能按鍵“,螢幕提示”是否保存參數?“,默認選擇”確認“,此時短按”功能按鍵“,即可保存參數,並自動返回到顏色識別模式。
學習與識別偵測顏色 將HuskyLens螢幕中央的“+”字對準目標顏色塊,螢幕上會有一個白色方框,自動框選目標顏色塊。調整HuskyLens與顏色塊的角度和距離,讓白色方框儘量框住整個目標色塊。 學習顏色 偵測到顏色後,按下“學習按鍵”學習第一種顏色,然後鬆開“學習按鍵”結束學習,螢幕上有消息提示:“再按一次繼續,按其他按鍵結束”。如要繼續學習下一種顏色,則在倒計時結束前按下“學習按鍵”,可以繼續學習下一種顏色。如果不再需要學習其他顏色了,則在倒計時結束前按下”功能按鍵”即可,或者不操作任何按鍵,等待倒計時結束。 HuskyLens顯示的顏色ID與學習顏色的先後順序是一致的,也就是:ID會按順序依次標注為“ID1”,“ID2”,“ID3”,以此類推,並且不同顏色對應的邊框顏色也不同。 識別顏色 如HuskyLens遇到相同或近似的顏色,螢幕上會有彩色邊框框選出色塊,並顯示該顏色的ID,邊框的大小隨顏色塊的面積一起變化,邊框會自動跟蹤色塊。多種不同的顏色可以同時識別並追蹤,不同顏色對應的邊框顏色也不同。 當出現多個相同顏色的色塊時,相隔的色塊不能被同時識別,只能一次識別一個色塊。 小提示: 環境光線對顏色識別的影響很大,對於相近的顏色,HuskyLens有時會誤識別。建議保持環境光線的穩定,在光線適中的環境中使用此功能。
7.6 標籤識別本功能可以偵測二維碼標籤;學習、識別、追蹤指定的二維碼標籤。 默認設置為只學習、識別並追蹤一個二維碼標籤。本章節採用學習、識別並追蹤多個二維碼標籤為例進行說明。 操作設置向左或向右撥動“功能按鍵”,直至螢幕頂部顯示“標籤識別”。 長按“功能按鍵”,進入標籤識別功能的二級功能表參數設置介面。 向左或向右撥動“功能按鍵”,選中“學習多個”,然後短按“功能按鍵”,接著向右撥動“功能按鍵”打開“學習多個”的開關,即:進度條顏色變藍,進度條上的方塊位於進度條的右邊。再短按“功能按鍵”,確認該參數。 向左撥動“功能按鍵”,選中“保存並返回“,短按”功能按鍵“,螢幕提示”是否保存參數?“,默認選擇”確認“,此時短按”功能按鍵“,即可保存參數,並自動返回到標籤識別模式。
學習與識別可用下面的二維碼標籤來測試。 偵測標籤 當HuskyLens檢測到二維碼標籤時,螢幕上會用白色框自動框選出檢測到的所有二維碼標籤。 學習標籤 將HuskyLens螢幕中央的“+”字對準需要學習的標籤,短按或長按“學習按鍵”完成第一個標籤的學習。鬆開”學習按鍵“後,螢幕上會提示:”再按一次按鍵繼續!按其他按鍵結束“。如要繼續學習下一個標籤,則在倒計時結束前按下“學習按鍵”,可以繼續學習下一個標籤。如果不再需要學習其他標籤了,則在倒計時結束前按下”功能按鍵”即可,或者不操作任何按鍵,等待倒計時結束。 本章節中,需要繼續學習下一個標籤,因此在倒計時結束前按下“學習按鍵”,然後將HuskyLens螢幕中央的“+”字對準需要學習的下一個標籤,短按或長按“學習按鍵”完成第二個標籤的學習。以此類推。 標籤ID與錄入標籤先後順序是一致的,也就是:學習過的標籤會按順序依次標注為“標籤:ID1”,“標籤:ID2”,“標籤:ID3”,以此類推,並且不同的標籤對應的邊框顏色也不同。 識別標籤 HuskyLens再次遇到學習過的標籤時,在螢幕上會有彩色的邊框框選出這些標籤,並顯示其ID。邊框的大小會隨著二維碼標籤的大小進行變化,邊框自動追蹤這些二維碼標籤。
8. micro:bit教程本章節使用Mind+軟體和MakeCode網頁版,分別用幾個案例演示具體的用法。 先用mind+軟體進行演示。
8.1 Mind+(基於Scratch3.0)簡介Mind+是一款基於Scratch3.0開發的青少年程式設計軟體,支援arduino、micro:bit、掌控板等各種開源硬體,只需要拖動圖形化區塊即可完成程式設計,還可以使用python/c/c++等高級程式設計語言,讓大家輕鬆體驗創造的樂趣。 8.2 Mind+載入HUSKYLENS擴展- 軟體右上角開關切換到上傳模式>打開左下角擴展>選擇一個主控板。
- 選擇主控板之後,對應支援的擴展模組標籤變成可選狀態,點擊感測器,右上角搜索Huskylens,點擊載入模組,然後返回程式設計介面。
8.3 mind+案例:人臉識別本案例演示如何把HuskyLens連接到micro:bit主機板,然後micro:bit主機板從HuskyLens讀取人臉識別結果。如果HuskyLens偵測到任意人臉,則micro:bit的點陣屏顯示笑臉,否則顯示哭臉。 HuskyLens與micro:bit的通信介面採用I2C介面。 準備材料硬體
軟體
- Mind+
- HUSKYLENS 擴展: Mind+內置
硬體連線圖下圖只作為連線示意圖,HuskyLens的R和T管腳(此處其功能則為SCL與SDA)分別連接到micro:bit的SCL與SDA管腳,說明HuskyLens與micro:bit的通信介面採用I2C介面。 小提示: HuskyLens消耗的電流比較多,可達3.3V 320mA以上,單靠mciro:bit主機板供電是不夠的,因此需要外接供電,可通過micro:bit擴展板的外接供電介面或者HuskyLens的USB介面實現。 HUSKYLENS常規設置把HuskyLens的通訊模式設置為I2C或者自動識別,推薦自動識別,無需反復調節通訊協定,簡單方便。
範例程式- 拖動積木進行程式設計,製作一個簡單的人臉識別項目。
預期效果- 連接設備,選擇microbit對應的COM口(第一次使用mcirobit點擊一鍵安裝驅動,install驅動),上傳程式到設備。
- 當有人進入HUSKYLENS畫面中時mciro:bit顯示笑臉,沒有人時顯示哭臉。
8.4 Mind+模組說明[td]更多:Mind+有HuskyLens詳細專題教程,請點擊此處跳轉到該教程。 下面使用makecode軟體進行演示。
8.5 MakeCode簡介MakeCode 是一個免費開源平臺,旨在打造有吸引力的電腦科學學習體驗,為實際程式設計奠定基礎。網頁版可以線上程式設計和下載固件。點擊進入專為micro:bit打造的makecode網頁版。
8.6 MakeCode載入HUSKYLENS外掛程式- 在MakeCode網頁版中新建一個項目,然後,點擊右上方的“更多”按鈕(齒輪圖示),在其下拉式功能表中選擇“擴展”,打開擴展介面。
- 程式設計介面中,你就能看到Huskylens模組,點擊它,就會彈出指令積木塊。
8.7 makecode案例:人臉識別本案例演示如何把HuskyLens連接到micro:bit主機板,然後micro:bit主機板從HuskyLens讀取人臉識別結果。如果HuskyLens認出主人(學習過的人臉),則micro:bit的點陣屏顯示笑臉,否則顯示哭臉。 HuskyLens與micro:bit的通信介面採用I2C介面。 準備材料
硬體連線圖下圖只作為連線示意圖,HuskyLens的R和T管腳(此處其功能則為SCL與SDA)分別連接到micro:bit的SCL(P19)與SDA(P20)管腳,說明HuskyLens與micro:bit的通信介面採用I2C介面。 小提示: HuskyLens消耗的電流比較多,可達3.3V 320mA以上,單靠mciro:bit主機板供電是不夠的,因此需要外接供電,可通過micro:bit擴展板的外接供電介面或者HuskyLens的USB介面實現。 HUSKYLENS常規設置把HuskyLens的通訊模式設置為I2C。 也可以設置為“自動識別模式”,無需反復調節通訊協定,簡單方便。
範例程式預期結果- 上傳上述代碼至micro:bit主機板。
- 參考前面講解人臉識別功能的章節,讓HuskyLens學習完一個人臉,比如你的臉。
- 當HuskyLens識別到你的臉後,micro:bit主機板上的點陣屏會顯示笑臉,如果不是你的臉,或者沒有人臉出現,則顯示哭臉。
8.8 MakeCode模組說明[td]
9. Arduino教程本章節使用Arduino IDE,分別用幾個案例演示具體的用法。
9.1 安裝Arduino庫9.2 Arduino案例:串口列印物體座標資料本案例演示如何把HuskyLens連接到Arduino主機板,然後Arduino主機板從HuskyLens讀取資料,並將讀到的資料在串口監視器中列印出來。分UART模式和I2C模式,分別演示。 準備材料UART模式硬體連線圖HUSKYLENS常規設置把HuskyLens的通訊模式設置為UART,串列傳輸速率9600。 也可以設置為“自動識別模式”,無需反復調節通訊協定,簡單方便。
範例程式- #include "HUSKYLENS.h"
- #include "SoftwareSerial.h"
- HUSKYLENS huskylens;
- SoftwareSerial mySerial(10, 11); // RX, TX
- //HUSKYLENS green line >> Pin 10; blue line >> Pin 11
- void printResult(HUSKYLENSResult result);
- void setup() {
- Serial.begin(115200);
- mySerial.begin(9600);
- while (!huskylens.begin(mySerial))
- {
- Serial.println(F("Begin failed!"));
- Serial.println(F("1.Please recheck the "Protocol Type" in HUSKYLENS (General Settings>>Protocol Type>>Serial 9600)"));
- Serial.println(F("2.Please recheck the connection."));
- delay(100);
- }
- }
- void loop() {
- if (!huskylens.request()) Serial.println(F("Fail to request data from HUSKYLENS, recheck the connection!"));
- else if(!huskylens.isLearned()) Serial.println(F("Nothing learned, press learn button on HUSKYLENS to learn one!"));
- else if(!huskylens.available()) Serial.println(F("No block or arrow appears on the screen!"));
- else
- {
- Serial.println(F("###########"));
- while (huskylens.available())
- {
- HUSKYLENSResult result = huskylens.read();
- printResult(result);
- }
- }
- }
- void printResult(HUSKYLENSResult result){
- if (result.command == COMMAND_RETURN_BLOCK){
- Serial.println(String()+F("Block:xCenter=")+result.xCenter+F(",yCenter=")+result.yCenter+F(",width=")+result.width+F(",height=")+result.height+F(",ID=")+result.ID);
- }
- else if (result.command == COMMAND_RETURN_ARROW){
- Serial.println(String()+F("Arrow:xOrigin=")+result.xOrigin+F(",yOrigin=")+result.yOrigin+F(",xTarget=")+result.xTarget+F(",yTarget=")+result.yTarget+F(",ID=")+result.ID);
- }
- else{
- Serial.println("Object unknown!");
- }
- }
複製代碼 預期結果上傳上述代碼至Arduino主機板 參考前面講解各個功能的章節,讓HuskyLens學習完一個新東西,比如人臉。 打開Arduino IDE的串口監視器查看結果。 當HuskyLens處於人臉識別、物體追蹤、物體識別、顏色識別、標籤識別模式時,則列印的結果如下圖: 當HuskyLens處於巡線追蹤模式時,則列印的結果如下圖:
I2C模式硬體連線圖HUSKYLENS常規設置把HuskyLens的通訊模式設置為I2C。 也可以設置為“自動識別模式”,無需反復調節通訊協定,簡單方便。
範例程式
- #include "HUSKYLENS.h"
- #include "SoftwareSerial.h"
- HUSKYLENS huskylens;
- //HUSKYLENS green line >> SDA; blue line >> SCL
- void printResult(HUSKYLENSResult result);
- void setup() {
- Serial.begin(115200);
- Wire.begin();
- while (!huskylens.begin(Wire))
- {
- Serial.println(F("Begin failed!"));
- Serial.println(F("1.Please recheck the "Protocol Type" in HUSKYLENS (General Settings>>Protocol Type>>I2C)"));
- Serial.println(F("2.Please recheck the connection."));
- delay(100);
- }
- }
- void loop() {
- if (!huskylens.request()) Serial.println(F("Fail to request data from HUSKYLENS, recheck the connection!"));
- else if(!huskylens.isLearned()) Serial.println(F("Nothing learned, press learn button on HUSKYLENS to learn one!"));
- else if(!huskylens.available()) Serial.println(F("No block or arrow appears on the screen!"));
- else
- {
- Serial.println(F("###########"));
- while (huskylens.available())
- {
- HUSKYLENSResult result = huskylens.read();
- printResult(result);
- }
- }
- }
- void printResult(HUSKYLENSResult result){
- if (result.command == COMMAND_RETURN_BLOCK){
- Serial.println(String()+F("Block:xCenter=")+result.xCenter+F(",yCenter=")+result.yCenter+F(",width=")+result.width+F(",height=")+result.height+F(",ID=")+result.ID);
- }
- else if (result.command == COMMAND_RETURN_ARROW){
- Serial.println(String()+F("Arrow:xOrigin=")+result.xOrigin+F(",yOrigin=")+result.yOrigin+F(",xTarget=")+result.xTarget+F(",yTarget=")+result.yTarget+F(",ID=")+result.ID);
- }
- else{
- Serial.println("Object unknown!");
- }
- }
複製代碼 預期結果- 上傳上述代碼至Arduino主機板
- 參考前面講解各個功能的章節,讓HuskyLens學習完一個新東西,比如人臉。
- 打開Arduino IDE的串口監視器查看結果。I2C模式下的結果與UART模式下的結果一樣,此處不再贅述。
9.3 Arduino庫函數說明10. 樹莓派教程本章節使用樹莓派進行演示,說明如何把HuskyLens連接到樹莓派,然後樹莓派從HuskyLens讀取資料。通信方式為I2C。 10.1 初始化樹莓派你必須啟用樹莓派的I2C埠。先運行一個終端(terminal),然後按照下述步驟進行操作: 運行 sudo raspi-config 使用鍵盤上的方向鍵,往下,選擇 5 Interfacing Options,然後進入 往下,選擇P5 I2C. 提示“Would you like the ARM I2C interface to be enabled?”,選擇Yes,之後提示“The ARM I2C interface is enabled.” 使用鍵盤上的方向鍵,往右,選擇Finish。 運行sudo reboot now,重啟樹莓派。 重啟完成後,運行一個終端,輸入: sudo apt-get install -y i2c-tools 運行sudo apt-get install python-smbus 運行 sudo pip3 install pyserial
至此,樹莓派的初始化就完成了。
10.2 I2C連線說明本章節,HuskyLens採用I2C介面與樹莓派通信。HuskyLens與樹莓派的管腳線序,如下圖所示。 樹莓派腳位圖 HuskyLens腳位圖(I2C模式) 標注 | 管腳功能 | 用途 | T | SDA | 串列資料線 | R | SCL | 串列時鐘線 | - | GND | 電源負極 | + | VCC | 電源正極 |
硬體連線圖 小提示: HuskyLens消耗的電流比較多,可達3.3V 320mA或5V 230mA以上。建議你把HuskyLens連接到樹莓派的5V電源管腳上,以提供給HuskyLens足夠的電源。
10.3 程式設計指南10.4 API說明
- command_request()
- => Return all data
- command_request_blocks()
- => Return all blocks on the screen
- command_request_arrows()
- => Return all arrows on the screen(only in line tracking mode)
- command_request_learned()
- => Return all learned objects on screen
- command_request_blocks_learned()
- => Return all learned blocks on screen
- command_request_arrows_learned()
- => Return all learned arrows on screen(only in line tracking mode)
- command_request_by_id(idVal)
- *idVal is an integer
- => Return the object with id of idVal
- command_request_blocks_by_id(idVal) *idVal is an integer
- *idVal is an integer
- => Return the block with id of idVal
- command_request_arrows_by_id(idVal) *idVal is an integer(only in line tracking mode)
- *idVal is an integer
- => Return the arrow with id of idVal
- command_request_algorthim(ALG_NAME)
- * ALG_NAME is a string whose value can be the following
- "ALGORITHM_OBJECT_TRACKING"
- "ALGORITHM_FACE_RECOGNITION"
- "ALGORITHM_OBJECT_RECOGNITION"
- "ALGORITHM_LINE_TRACKING"
- "ALGORITHM_COLOR_RECOGNITION"
- "ALGORITHM_TAG_RECOGNITION"
- "ALGORITHM_OBJECT_CLASSIFICATION"
- command_request_knock()
- => Returns "Knock Recieved" on success
複製代碼
10.5 樹莓派案例: 讀取座標資料本案例演示樹莓派主機板從HuskyLens讀取目標物體的座標資料,並將這些資料在終端中列印出來。 準備材料硬體連線圖參考10.2章節“I2C連線說明” HuskyLens常規設置把HuskyLens的通訊模式設置為I2C。 也可以設置為“自動識別模式”,無需反復調節通訊協定,簡單方便。
範例程式
下述代碼已經寫入test.py文件。 點擊此處查閱或下載。 - # Import the library
- from huskylensPythonLibrary import HuskyLensLibrary
- # Initlialize the HuskyLens
- test = HuskyLensLibrary("I2C","",address=0x32)
- print("First request a knock: {}".format(test.command_request_knock()))
- # Change to face recognition algorhtim
- test.command_request_algorthim("ALGORITHM_FACE_RECOGNITION")
- # Display a simple menu where you can call every function in a loop!
- ex=1
- print("""
- Menu options:
- 1) command_request()
- 2) command_request_blocks()
- 3) command_request_arrows()
- 4) command_request_learned()
- 5) command_request_blocks_learned()
- 6) command_request_arrows_learned()
- 7) command_request_by_id() ***format 7 ID_VAL***
- 8) command_request_blocks_by_id() ***format 8 ID_VAL***
- 9) command_request_arrows_by_id() ***format 9 ID_VAL***
- 10) Exit
- """)
- while(ex==1):
- v=input("Enter cmd number:")
- numEnter=v
- if(numEnter=="10"):
- ex=0
- v=int(v[0])
- if(v==1):
- print(test.command_request())
- elif(v==2):
- print(test.command_request_blocks())
- elif(v==3):
- print(test.command_request_arrows())
- elif(v==4):
- print(test.command_request_learned())
- elif(v==5):
- print(test.command_request_blocks_learned())
- elif(v==6):
- print(test.command_request_arrows_learned())
- elif(v==7):
- print(test.command_request_by_id(int(numEnter[2:])))
- elif(v==8):
- print(test.command_request_blocks_by_id(int(numEnter[2:])))
- elif(v==9):
- print(test.command_request_arrows_by_id(int(numEnter[2:])))
複製代碼 預期結果結果顯示的是識別框中心點x座標,y座標,寬度,高度,和ID號。格式如下: [識別框中心點的x座標, 識別框中心點的y座標, 識別框的寬度, 識別框的高度, 所學物體的ID號]
11. 更多文檔
|