LoginSignup
14
9

More than 3 years have passed since last update.

Tello-Pythonのサンプル「Tello_Video」を動かす

Last updated at Posted at 2019-09-24

はじめに

このページは,

公式SDK「Tello-Python」を試そう

の1ページです.
全体を見たい場合は上記ページへお戻りください.

概要

DJI公式のTello用Pythonサンプルプログラム「Tello-Python」のうち,

 Tello_Video

を試す方法を記述します.

前提条件

ホームフォルダにTello-Pythonがインストールされているという前提で話を進めます.

Linuxマシンであれば /home/(ユーザー名)/ に,Tello-Pythonというフォルダがあることになります.

詳しくは Tello-Pythonのダウンロード を御覧ください.

ディレクトリの移動

まずはコンソール(端末)を開き,以下のコマンドを打って,フォルダを移動します.

cd(change_directory)
$ cd Tello-Python

lsコマンドでフォルダの中にあるファイルを見てみると,

Linux:lsの結果
$ ls
LICENSE.md               Tello_Video
README.md                Tello_Video_With_Pose_Recognition
Single_Tello_Test        doc
TelloPython_FAQ(CH).txt  tello_state.py
TelloPython_FAQ.txt      tello_video_dll(ForWin64).zip

Tello_Video というディレクトリがあることがわかります.
更にディレクトリ移動しましょう.

Tello_Videoへ移動
$ cd Tello_Video

lsコマンドでTello_Videoの中を見てみると,

Tello_Videoの中身
$ ls
LICENSE.md  README.md  h264decoder  img  install  main.py  tello.py  tello_control_ui.py

main.py というファイルがあることがわかります.
その他にtello.pytello_control_ui.pyというファイルもありますが,これらはmain.pyが呼び出すファイルなので,ユーザーが実行する必要はありません.

また,installh264decoderというディレクトリもあることも明記しておきます.
これらのディレクトリが,Telloのカメラ映像のストリーミングに関係しています.

全体の構成は下図の様になっています.
tello_video_system.png

システム構成のうち,tello.pyにあるTelloクラスが最も重要だと思います.
このTelloクラスを転用することで,Telloの映像を取ったり,コマンドを送信したりといった様々な発展が可能になります.

Tello-Pythonをダウンロードしただけでは,libh264decoder.soはありません.
この後の環境構築で,ビルドして作ります.

Tello_Videoのための環境構築

ページが長くなったので,別ページに分離しました.

main.pyの実行

それでは,Telloの電源を入れて,WiFi接続を確認したら,
main.pyを実行してみましょう.

Tello_Videoの実行
$ python main.py

実行結果

Telloとうまく接続できていれば,下の写真のような画面が表示されます.
tello_video_default.png

「TELLO Controller」というタイトルの新しいウィンドウが作成され,そこにTelloのビデオ映像が表示されます.映像の下にはボタンが3つ並んでいます.
コマンドを打ち込んだ端末画面は,h.264ビデオのデコードに関するメッセージと,送信したSDKコマンドが表示されます.

実際にウィンドウを表示させてみると分かりますが,TelloはHD画質なので720pの映像が表示されます.
ちょっとウィンドウが大きすぎる,という感想を持ちました.
TELLO Controllerウィンドウのサイズを変更しても,サイズに合わせて映像もストレッチして表示されるのではなく,右側の映像が欠けるだけです(笑

映像サイズの調整などの改造は,別途記事を執筆しようと思います.

GUIの操作方法

TELLO Controllerのウィンドウには,
open_command_panel.png

  • Open Command Panel
  • Pause
  • Snapshot

の3つのボタンがあります.
それぞれの役割を解説します.

Open Command Panel

Open Command Panelボタンは,クリックするとCommand Panelという新しいウィンドウが開きます.
※Raspberry Piでは,このボタンを押さないと受信映像が表示されないことがあります.

command_panel.png

このウィンドウをアクティブにした状態で,

  • キーボードの'w','s','a','d'および矢印キーで,前後左右上下移動や旋回ができます.
  • Flip,Takeoff,Landボタンで宙返り,離着陸ができます.
  • スライダーを動かすと移動と旋回の移動量を変えることができます.デフォルトは20cmと30度.

要はこのウィンドウを使うと,簡易的にtakeoffとかleft 20とかのコマンドを送信できるので,スマートフォンのTelloアプリの様に遠隔操縦することができる,ということです.

Pause

Pauseボタンは,クリックするとTelloの映像をポーズして,望みの画像を表示し続けるボタンです.
再度クリックすればリアルタイムの映像に戻ります.

ポイントとしては,
「映像受信のUDPサーバを止めてパケットの受信を中止する」とか
「H.264のデコードを中止してCPU負荷を下げる」とか
などの工夫はまったくされていません(爆

停止時の画像でウィンドウを再描画し続けていますし,裏でTelloからの映像受信とデコードは続いているので,負荷軽減にはまったく寄与しません...

Snapshot

Snapshotボタンは,クリックした時のビデオ画像を(年月日_時分秒).jpgという名前でimgディレクトリの中に保存します.

おわりに

今回は「Tello_Video」の環境構築,使用法を解説しました.

Tello_Videoは,以降様々な画像処理プログラムを作る上で重要なサンプルなので,プログラム解説は別途 記事を執筆する予定です.

 

14
9
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
9