Help us understand the problem. What is going on with this article?

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

すみません、まだ執筆中です。

はじめに

Ryze Tech.のTelloのプログラミング方法の1つに、DJIの公式SDK「Tello-Python」があります。

https://github.com/dji-sdk/Tello-Python

本ページでは、このTello-Pythonの導入とサンプルプログラムの動作、応用プログラムの作り方を解説したいと思います。

概要

https://www.ryzerobotics.com/jp/
Ryze Technology社の200g未満のミニドローン「Tello」シリーズは、飛ばして遊ぶだけの他のトイドローンとは異なり、ScratchやPythonのプログラムで動かすことができるのが魅力です。

完成品でプログラマブルなドローンはParrot社の独壇場でしたが、ANAFI以外の製造終了に伴ってTelloへのシフトが予想されます。ANAFIは高価なので、プログラムして遊ぼうという気になれませんね.暴走して壊れたら(T_T)

TelloのPythonプログラミングには、

  1. 有志によって解析されたバイナリデータを用いる方法
  2. pipでインストールできるpythonライブラリ TelloPy を使う
  3. Ryze Tech.が公開している Tello3.pyというサンプル (ただしポート番号がちょっと違う)
  4. DJIのTello-Python (https://github.com/dji-sdk/Tello-Python)

がありますが、3.と4.はRyze Tech.が公開しているTello SDKに基づいて作られています。
Tello SDKは、takeoff,landなどの文字列を送信するだけでTelloを動かせるので簡単です。

Telloの種類

2019年9月現在、Telloには以下の3種類があります。

Tello EDUのみがミッションパッドやインフラストラクチャ接続をサポートするSDK2.0です。
無印Telloとアイアンマンは同じものでSDK1.0系になります。

使い方は多くのトイドローンと同様に、電源を投入するとTello自体がWiFiアクセスポイント(WiFi親機)となり、スマートフォンやPCで接続しに行く形態です。

なお、Tello EDUはWiFi子機となってアクセスポイントに接続することができるため、複数台での同時管理、すなわち編隊飛行が可能になります。
したがって「将来的に編隊飛行までやりたい」と考えている人はEDUを購入したほうが良いでしょう。少しお値段が高くなりますが。
無印のfirmwareを書き換えてEDU化する,などのhackは見つかっていませんので(笑

準備するもの

  • Linux環境 + 無線LAN

  動作確認済みOS:
   ・インテル系PC Ubuntu-MATE 16.04(x64)および18.04(x64)
   ・Raspberry Pi Raspbian stretch

Telloに接続するためには無線LANの環境が必要です。
ノートPCであれば問題ありませんが、デスクトップ機ではUSB無線LANドングルを利用してください。なお、Telloは2.4GHzなので,Linuxでドライバの導入が大変になる事が多い5GHz製品を買う必要はありません。

普通のPCとラズパイとでは、環境設定の手順が異なります。
また、Windowsでの環境設定はBATファイルの書き換え等の追加作業が必要なため、今後の予定としておきます。

前提条件

本記事では、
 「通常のスマートフォンでのTelloの飛行手順は理解している」
ことを前提とします。
すなわち、

・Telloの電源ON/OFF
・WiFi親機となったTelloへ接続する
・離着陸や移動,宙返りなどの操作

などの基本操作の説明は致しません。

Tello-Pythonのダウンロード

本記事では、Tello-Pythonをホームディレクトリに置くとして話を進めます。

まずは、gitがインストールされていなかったらインストールします。

gitがなかったらインストール
$ sudo apt install git

次に,Tello-Pythonをgitでダウンロードします。

Tello-Pythonの導入
$ cd ~
$ git clone https://github.com/dji-sdk/Tello-Python.git

するとホームディレクトリにはTello-Pythonというディレクトリができます。
Tello-Pythonのディレクトリ内には、4つのサンプルプログラムがあります。
以下の図で赤・橙で囲まれたフォルダおよびファイルです。
tello_python_folder.png

赤で囲まれたサンプルは、python環境さえあれば実行可能な簡単なサンプルです。
しかし、橙のサンプルでは各ディレクトリ内にあるシェルファイル(.sh)でOpenCVのインストールやH.264デコーダライブラリのビルドなどの作業が必要です.
しかし,Ubuntu16.04やRaspbianでは望み通りの環境設定ができないため、少々工夫が必要になります.

Tello-Pythonのサンプルプログラム

  1. 「tello_state.py」を動かす
  2. 「Single_Tello_Test」を動かす
  3. 「Tello_Video」を動かす
  4.   (補足)Windowsで「Tello_Video」を動かす
  5. 「Tello_Video_With_Pose_Recognition」を動かす
  6. 「Tello_Video」の改造
  7. (補足)Python3で「Tello_Video」を動かす

「Tello-Python」の応用〜OpenCVの利用〜

  1. 「Tello_Video」のTelloクラスを使おう
  2. キー入力操縦プログラム
  3. ジョイスティック操縦プログラム
  4. OpenCVを使うスケルトンプログラム
  5. ARマーカ認識プログラム
  6. 顔検出プログラム
  7. 色検出プログラム
  8. QRコード認識プログラム

Tello EDUを使った編隊飛行

  1. Tello EDUの設定
  2. Tello_VideoのTelloクラスをEDU用にダウングレードする
  3. キー入力で複数台を操縦
  4. ジョイスティックで複数台を操縦

WiFi接続時の注意点

複数のTelloがある場合、下図の様にWiFiアクセスポイントとしてTelloも複数見えます.
tello_double.png

どちらが自分のTelloかな?と迷う時はバッテリーを外してみると分かります。
tello_ssid.png

混乱を避けるために、スマートフォンのTelloアプリでSSIDをオリジナルの名前に変えてしまうという方法もあります。
例えばアイアンマンエディションなら「TELLO_Mk42」とか?(笑
tello_change_name.PNG

プログラミング中は熱に注意

プログラミングの際には,Telloの電源を入れたまま地上で待機させ続ける事が多いです.
書き終わって「さあ試すぞ!」と実行してみるとエラー...
...あれ?なんで?...
よく見るとTelloの電源が落ちています.

TelloはIntel Movidiusチップを使ったビジョンポジショニング機能があるため,機体下面が非常に発熱します.更にサーマルシャットダウンの機能があり,温度が高すぎると勝手に電源を落としてしまいます.
 参考:システムオーバーヒートに関しまして

スマートフォンで飛行をしている際には風が当たるので問題ないのですが,
地上待機時は熱が逃げないので,すぐにシャットダウンしてしまいます.

筆者は以下の工夫をしています.
「USB扇風機で風を当てる」
tello_fan.png

「放熱フィンに被さっているプラをニッパで切り取る」
tello_cut.png

「カバーなんていらない」
tello_no_cover.png

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away