TelloをWindows10のPythonから動かしてみる。

### Pythonをインストール

[https://www.anaconda.com/distribution/#download-section](https://www.anaconda.com/distribution/#download-section)
より Anaconda 2019.03 for Windows Installer Python 3.7 version (Anaconda3-2019.03-Windows-x86_64.exe) をダウンローしてインストール。設定はすべてデフォルト。

condaの最新版があると表示が出たので、管理者権限のAnadonda Promptでcondaをアップデート。

```
(base) C:\WINDOWS\system32>conda update -n base -c defaults conda
```

### Pythonの仮想環境を作成

```
(base) C:\Users\username>conda create -n drone1
  environment location: C:\Users\username\.conda\envs\drone1
(base) C:\Users\username>activate drone1
```

### pipの準備

pipを使おうとしたら、ないとエラーが出たのでインストール。

```
(drone1) C:\Users\username>conda install pip
```

### tellopyをインストール

tellopyをpipでインストール。

```
(drone1) C:\Users\username>pip install tellopy
```

tellopyのインストールを確認。

```
(drone1) C:\Users\username>python
Python 3.7.3 (default, Apr 24 2019, 15:29:51) [MSC v.1915 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import tellopy
>>> help(tellopy)
Help on package tellopy:
...
```

### HW環境の準備
デスクトップパソコンにGW-450Dを刺し、WifiネットワークのTELLO-XXXXXを選択。有線LANやHyper-Vの仮想ネットワークもあり、接続がうまくいかないのでは？と懸念したが、何の問題もなし。

### 1つ目のサンプルプログラムでテイクオフを確認

```
(drone1) C:\Users\username>python "C:\Users\username\.conda\envs\drone1\Lib\site-packages\tellopy\examples\simple_takeoff.py"
```
おおー、動いた！

### OpenCVのインストール

続きけて2つ目のサンプルプログラムのために環境の設定を継続。
まずはOpenCV。

```
(drone1) C:\Users\username>pip install opencv-python
```

### imageのインストール

```
(drone1) C:\Users\username>pip install image
```

### avのインストール
ここでちょいハマり。結論から言うと、conda-forgeを指定してcondaでインストールで解決した。

```
(drone1) C:\Users\username>conda install av -c conda-forge
```

最初はpipでインストールしようとしたところ、以下のエラーでストップ。

```
(drone1) C:\Users\username>pip install av
...

...
  error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": https://visualstudio.microsoft.com/downloads/
  ----------------------------------------
  ERROR: Failed building wheel for av
```

[https://pg.kdtk.net/1770](https://pg.kdtk.net/1770)を参考に
[https://download.microsoft.com/download/5/F/7/5F7ACAEB-8363-451F-9425-68A90F98B238/visualcppbuildtools_full.exe](https://download.microsoft.com/download/5/F/7/5F7ACAEB-8363-451F-9425-68A90F98B238/visualcppbuildtools_full.exe)
から直接ダウンロードしインストール。オプションとしてWindows10 SDKを選択。が、link.exeのエラーが解決できずあきらめ。

### 2つ目のサンプルプログラムで画像の取得を確認

```
(drone1) C:\Users\username>python C:\Users\username\.conda\envs\drone1\Lib\site-packages\tellopy\examples\video_effect.py
```

が、以下のエラーで動作せず。

```
Tello: 11:36:11.913: Error: video recv: timeout
Tello: 11:36:16.913: Error: video recv: timeout
Tello: 11:36:21.913: Error: video recv: timeout
```

[https://github.com/hanyazou/TelloPy/issues/29](https://github.com/hanyazou/TelloPy/issues/29)によればファイアウォールが問題の模様。

### Windowsのファイアウォールの設定

画像はPort UDP 6038で受け取っているようなので以下のように設定。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/423554/c475b621-a80e-e11f-d915-e27ddde33248.png)

これで無事に動いた。もちろんpython.exeも許可しておく。

### その他

Telloのファームウェアをアップデートしようとしたところ、「ファームウェア認証中」のまましばらく動かず。いやになって2時間ほど外出して帰ったら漸く次に進めるようになった。

また、iPadで更新をかけたところ、30%で更新進まず、、、5分ほどして本体のバッテリー切れ。再度充電してAndroidから更新かけたら今度はあっさりと進んだ。品質がまだまだの感触。

### 参考サイト
- [hanyazou/TelloPy](https://github.com/hanyazou/TelloPy)
- - [Telloドローンでプログラミング！ーディープラーニングで物体認識編ー](https://mitomoyo.com/entry/2018/06/22/010142)
- [【python】ライブラリインストール時に「error: Microsoft Visual C++ 14.0 is required.」エラーが発生](https://pg.kdtk.net/1770)