「Huskylensを使った物体認識処理」で、HuskyLensで物体認識を行いました。「HuskyLens Raspberry Pi Tutorial」に従って、Raspberry PiにHuskyLensを接続し、Object Trackingを行います。
Raspberry PiとHuskyLensの接続
Raspberry PiとHuskylensは付属しているケーブルでI 2 Cにより接続します。
Raspberry Pi | Huskylens |
---|---|
GND | black line |
5V | red line |
SDA | green line |
SCL | blue line |
Raspberry PiとHuskyLensの接続画像を次に示します。
次のコマンド「sudo i2cdetect -y 1」で接続を確認します。
Raspberry PiとHuskyLensの接続確認
Raspberry PiとHuskyLensの接続を次の手順で確認します。
Google App EngineでHuskyLensの画像を処理するために、Pure Pythonのライブラリ「pypng」をインストールします
$ sudo pip3 install pypng --break-system-packages Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple Collecting pypng Downloading https://www.piwheels.org/simple/pypng/pypng-0.20220715.0-py3-none-any.whl (58 kB) ・・・
接続を確認するために、つぎのスクリプトを実行します。メッセージ「Knock Recieved」が出力され、正常に接続されたことを確認できました。
$ python3 Python 3.11.2 (main, Nov 30 2024, 21:22:50) [GCC 12.2.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> from huskylib import HuskyLensLibrary >>> hl= HuskyLensLibrary("I2C","",address=0x32) >>> print(hl.knock()) Knock Recieved >>>
knock関数の仕様を次に示します。
- knock()
- Description:
- Send a simple knock to the HuskyLens to ensure that you are connected and is able to communicate.
- Return:
- Return “Knock Received” on success
「error: externally-managed-environment」の発生
ライブラリ「pypng」をインストールするときに、次の「error: externally-managed-environment」が発生しました。これは、「直接pipでパッケージインストールせずに、仮装環境でインストールする」必要があるようです。
$ sudo pip3 install pypng error: externally-managed-environment × This environment is externally managed mq> To install Python packages system-wide, try apt install ・・・
HuskyLensでObject Tracking
Object Trackingで使用するボタンを次に示します。
- Object Trackingは、「Function」ボタンを回して「Object Tracking」を選択します。
- 「Auto Save」と「Learn Enable」を「ON」(プログレスバーを白から青)にします
- Object Trackingの学習は、「Learning 」ボタンを押し続け、物体のいろいろな面を学習させます。ボタンを離すと「Click again to Forget!」が表示されるので、そのままタイムアウトさせると、学習データが保存されます。逆にタイムアウト前にボタンを押すと学習データが削除されます。
学習の準備と実行を次に示します。
Raspberry PiでHuskyLensで取得したObject Trackingの物体情報の取得
「HuskyLens Raspberry Pi Tutorial」のサンプルスクリプト「exampleHL.py」の6行目をコメント、7行目をコメント削除して、I 2 Cを使ったインタフェースとして、Object Trackingの物体情報を取得します。
サンプルスクリプト「exampleHL.py」を実行した結果を次に示します。「 r). getBlocksByID(1)」を使用します。
$ ls __pycache__ exampleHL.py huskylib.py pi@raspberrypi:~/ObjectTracking $ python3 exampleHL.py ******************************************************************************************************************** MENU OPTIONS: a). knock() b). setCustomName() #Random String & Cords c). customText() #Random String & Cords d). clearText() e). requestAll() f). saveModelToSDCard(1) g). loadModelFromSDCard(1) h). savePictureToSDCard() i). count() j). learnedObjCount() k). saveScreenshotToSDCard() l). blocks() m). arrows() n). learned() o). learnedBlocks() p). learnedArrows() q). getObjectByID(1) r). getBlocksByID(1) s). getArrowsByID(1) t). algorthim() #Random Choice u). learn(1) v). forget() w). frameNumber() x). [*] TYPE "MENU" to show the command menu[*] [*] TYPE "QUIT" to quit[*] ******************************************************************************************************************** Enter cmd letter:r [*] COMMAND -> getBlocksByID(1)[*] [*] RESPONSE [*] BLOCK_1 : {"x": 170, "y": 152, "width": 105, "height": 105, "ID": 1, "learned": true, "type": "BLOCK"} Enter cmd letter:r [*] COMMAND -> getBlocksByID(1)[*] [*] RESPONSE [*] BLOCK_1 : {"x": 51, "y": 151, "width": 100, "height": 100, "ID": 1, "learned": true, "type": "BLOCK"} Enter cmd letter:r [*] COMMAND -> getBlocksByID(1)[*] [*] RESPONSE [*] BLOCK_1 : {"x": 230, "y": 152, "width": 116, "height": 116, "ID": 1, "learned": true, "type": "BLOCK"} Enter cmd letter:r [*] COMMAND -> getBlocksByID(1)[*] [*] RESPONSE [*] BLOCK_1 : {"x": 146, "y": 80, "width": 72, "height": 72, "ID": 1, "learned": true, "type": "BLOCK"} Enter cmd letter:r [*] COMMAND -> getBlocksByID(1)[*] [*] RESPONSE [*] BLOCK_1 : {"x": 206, "y": 197, "width": 70, "height": 70, "ID": 1, "learned": true, "type": "BLOCK"} Enter cmd letter: