HomeMadeGarbage Loading

HuskyLens で ロボットアーム制御

ホーム
電子工作
Raspberry Pi
IOT
音楽
Home > 電子工作 > HuskyLens で ロボットアーム制御
すき 0
うんこ 1

前回は HuskyLens の物体追従機能を用いてお絵描きを楽しみました。

HuskyLens でお絵描き実験

今回は長らくの夢であった”画像認識でロボットアームを制御”を試してみました。

 

 

顔認識

HuskyLens の  Face Recognition (顔認識)は複数個の顔を学習し識別することが可能です。

顔の複数認識のやり方は公式ドキュメントの通りです。

 
デフォルトでは顔認識機能で特定の顔の学習・識別は1つしかできません。

Functionボタンを長押しで、Learn Multipleを選択しONしてセーブします。

 
コレで複数の顔を学習し識別することが可能となります。

学習はカメラを向けて顔が認識された際にLearningボタンを押すとIDがふられ学習されます。
再びLearningボタンを押すと次の顔の認識モードになり、同様に別の顔を認識させてLearningボタンを押しIDをふります。

認識動作

3つの顔を学習し認識できるようにしました。

 

TakamizawaをID1
KonosukeをID2
SakuraiをID3
としました。

この顔認識の中心座標3点から角度を導出して、ロボットアームを動かしてみました。
未来でしょ?

 

構成

HuskyLens で認識した3つの顔の中心座標をArduinoにシリアル伝送します。
Arduinoで3点から算出した角度でサーボを動かします。

ソフトウェアシリアルとサーボ制御が共存できなかったので
ハードウェアシリアル(D0, D1)を使用しています。

部品

  • HuskyLens

     
  • Arduino UNO

     
  • サーボモータDS3115

ロボットアーム

以前作ったロボットアームの1軸を使用します。

Arduino UNO でロボットアームを堪能 ーロボットアーム自作への道4ー

角度算出

HuskyLens で認識した3つの顔の中心座標から角度$θ$を算出します。

 

3点からなる三角形の各辺は

$$a = \sqrt{(x_1  –  x_3)^2 +(y_1  –  y_3)^2 }$$

$$b = \sqrt{(x_1  –  x_2)^2 +(y_1  –  y_2)^2 }$$

$$c = \sqrt{(x_2  –  x_3)^2 +(y_2 –  y_3)^2 }$$

余弦定理より角度$θ$は以下で算出されます。

$$θ = \cos^{-1} \left(\frac{b^2 + c^2 – a^2}{2 b c} \right) $$

 

HuskyLensで撮影するための顔画像移動治具も作成いたしました。

Arduinoコード

公式のHuskyLens  Arduinoチュートリアルを参考にプログラミングしました。

チュートリアル:Arduino Tutorial
Arduinoライブラリ:https://github.com/HuskyLens/HUSKYLENSArduino
参考サンプルコード:HUSKYLENS_GET_STARED.ino

 
 

動作

3つの顔を認識して角度を算出してロボットアームのサーボモータを動かしています。

ちょっと遅延ありますができました!

AIカメラHuskyLens によって実にインタラクティブな仕組みが簡単に実現できました。

HuskyLensは高機能なセンサとも言えますし、空間を超えたインターフェイスとも言えそうです。

これはいろんな応用ができて、むしろ出来過ぎて発散しそうです!

次の記事

micro:Maqueen Plus を堪能 – HuskyLens を 添えて –

コメントはこちらから

メールアドレスが公開されることはありません。コメントのみでもOKです。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください