Pythonを使いTello(ドローン)でOpenCV(顔認識)から自動追尾をしてみる!☺
Pythonを使いTello(ドローン)でOpenCV(顔認識)から自動追尾をしてみる!☺

Pythonを使いTello(ドローン)でOpenCV(顔認識)から自動追尾をしてみる!☺

念願の次のステップ ドローンのプログラミングで自動追尾を紹介して行こうかと思います。Telloを飛行しながらOpencvで顔認識までが 基礎となってます。

少しハードルが高かったですが、チャレンジしてみました。

自動追尾までの過程は、次の通りです。

opencv

OpenCvで顔を検出することで顔画像の中心とFRAMEの中心の差異を求め差分の大きさと方向で左右前後に動く指示を出すようにします。今回はドローンへの指示は、動きが乱れ暴走したりしたので直接的な動きでなくドローンへSDKを使いbattery残量、時間、温度などの問い合わせ

sent = sock.sendto(b'battery?', tello_address)

でドローンからの応答にて指示が正確に伝わっているかを確認しました

顔の移動によってドローンからbattery残量、時間、温度などの問い合わせの応答がきちんと表示され指示が正確に伝わっていることを確認しました。

確認できたので 今度は、それぞれ顔が右に移動すれば ドローンも右に移動するように

sent = sock.sendto(b'right 20', tello_address) と 書き換え実験してみましたTello SDK:PDF

ドローンは楽しい!!

code dai

記述は、sent = sock.sendto(b’left 15′ , tello_address) で 顔認識が右に30移動したら、ドローンは左に 15移動するというものです。
苦労した問題は顔認識するたびに コマンド指示がでるので ドローンは迷ってしまって 暴走することです。
そこではpythonのSemaphoreを使って 一つ一つ指示を処理するようにしました。そうすると少しはましに飛ぶことができました。
もう一つの問題は顔認識の四角枠の中心の差分によって 方向を決めるため ドローンのカメラに顔認識させないといけないことです。
カメラ自体が動くのではなく、ドローンをうごかして付いてるカメラが動くことから、動いた後、顔認識させなければ次のアクションに行けないので
結果的にタイムラグが出てしまいドローンの動きに体を合わせてるような 不格好な動きになりました。
また、顔認識のフレームの中心に顔を映さないといけないので 顔の位置の決定が難しいです。これは部屋が狭いため近距離で顔が大きく映ってしまうことが原因だと思います。特に上下の動きは難しかったです。
以上は これら問題を抱えた自動追尾もどきの動画です。とりあえずできた感いっぱいです。


次は、これを広い場所でし、改良できたらいいなぁと思います。

最終的には以下の憧れのYouTubeで見つけたOpenPose,OpenCv を使ったTello自動追尾!!できれば最高です。何年かかるかわかりませんが、いい趣味になると思います。又、見てると英語の勉強にもなります。YoutTubeでは字幕設定もできますので良いです。安価なオンライン英会話 レアジョブも 対人で英語会話できて慣れる点では 英語環境の中に入れるのでおすすめです。

OpenPose guide

マッキー
神戸

【 初心者から財務プロまで 】エクセルで学ぶビジネス・シミュレーション講座 マスターコース

ホーム » ドローン » Pythonを使いTello(ドローン)でOpenCV(顔認識)から自動追尾をしてみる!☺

投稿





コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です