#はじめに
このページは,
Tello-Pythonのサンプル「Tello_Video」を動かす
の補足ページです.
#概要
DJI公式のTello用Pythonサンプルプログラム「Tello-Python」のうち,
Tello_Video
を試すためには、あらかじめ
- 様々な依存ライブラリのインストール
- H.264ビデオのデコードライブラリのビルド
を行う必要があります。
gitのTello-Pythonのページには,インストール方法として
・Linux (Ubuntu 14.04 and above)
Go to the "install\Linux" folder in command line, run
chmod +x linux_install.sh
./linux_install.sh
と書いてあります.
すなわち,
$ cd install/Linux/
$ chmod +x linux_install.sh
$ ./linux_install.sh
とコマンドを打てよ,ということです.
linux_install.shが,Linux用の環境構築を自動的に行ってくれるシェルスクリプトです.
Linuxに精通した方は「なんだ,shファイルがあるなら実行すればスグじゃん」と思うでしょう.
しかし,そのまま実行すると
- OpenCVのバージョンが3.x系がインストールされない
という不具合が生じます.
・Ubuntu16.04では現時点(2019年9月),
sudo pip install opencv-python
でバージョン指定しないと4.1.1.26が入ってしまう
sudo apt install python-opencv
だと2.4.9.1が入ってしまう
・Ubuntu18.04では現時点(2019年9月),
sudo pip install opencv-python
でバージョン指定しないと4.1.1.26が入ってしまう
sudo apt install python-opencv
だと3.2.0が入るので問題ないが,シェルファイル内ではpipの方を使っている
というわけで,linux_install.sh
を書き換えれば問題解決できます.
#前提条件
ホームフォルダ(~)にTello-Pythonがインストールされているという前提で話を進めます.
#ディレクトリの移動
まずはコンソール(端末)を開き,以下のコマンドを打って,Tello-Videoのフォルダへ移動します.
$ cd ~/Tello-Python/Tello-Video
lsコマンドでTello_Videoの中を見てみると,
$ ls
LICENSE.md README.md h264decoder img install main.py tello.py tello_control_ui.py
install
というディレクトリがあることが分かります.
このディレクトリの中身は,
$ ls install/
Linux Mac Windows
この様になっていて,Linux,Mac,Windowsそれぞれのディレクトリにインストール用のファイルが置いてあるのですが,どれも古くて使い物になりません.
ですが,Linuxは多少の変更で対応できます.
#Linuxの更新
まずは,Linuxを最新の状態へ更新しておきます.
$ sudo apt update
$ sudo apt upgrade -y
#linux_install.shの書き換え
Ubuntuの場合,linux_install.shの中身を少し書き換えれば,自動インストールできます.
すなわち,30行目の
sudo pip install opencv-python
を
sudo pip install opencv-python==3.4.5.20
と書き換えるだけです.
3.4.5.20は,pipでインストールできる3.x系の最新バージョン(2019年9月時点)
テキストエディタ(vi,nano,gedit,pluma,mousepadなど)を使ってlinux_install.shを書き換えてください.
以下にnanoで書き換える例を記載しておきます.
$ nano install/Linux/linux_install.sh
nanoで編集する場合はctrl+oでファイルを保存,ctrl+xでエディタ終了です.
#!/bin/sh
echo 'Compiling and Installing the Tello Video Stream module'
echo 'You might need to enter your password'
cd ..
cd ..
sudo apt-get update -y
# install python 2.7
sudo apt-get install python2.7 python-pip -y
sudo pip install --upgrade pip
#switch to python2.7
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 150
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 100
sudo apt-get update -y
# install cmake
#sudo apt-get install cmake -y
sudo pip install cmake
# install dependencies
sudo apt-get install libboost-all-dev -y
sudo apt-get install libavcodec-dev -y
sudo apt-get install libswscale-dev -y
sudo apt-get install python-numpy -y
sudo apt-get install python-matplotlib -y
sudo pip install opencv-python==3.4.5.20 # ここに書き加えるだけ
sudo apt-get install python-imaging-tk
# pull and build h264 decoder library
cd h264decoder
mkdir build
cd build
cmake ..
make
# copy source .so file to tello.py directory
cp libh264decoder.so ../../
echo 'Compilation and Installation Done!'
#linux_install.shの実行
書き換えたら,シェルファイルのあるフォルダへ移動して,
chmod
で実行権限を与え,実行します.
$ cd ~/Tello-Python/Tello_Video/install/Linux/
$ chmod +x linux_install.sh
$ ./linux_install.sh
以上で自動インストールされます.
インストールが完了したら,Tello-Video
のディレクトリに戻っておきましょう.
$ cd ../../
これで作業は完了です.
##注意点
linux_install.shでのインストールで注意すべき点は,
必ず~/Tello-Python/Tello_Video/install/Linux/
へカレントディレクトリを移動させ,
そこでlinux_install.sh
を実行すること です.
というのは,
cd .. # 1つ上のディレクトリへ移動
cd .. # 1つ上のディレクトリへ移動
sudo apt-get update -y
(略)
# pull and build h264 decoder library
cd h264decoder # h264decoderというフォルダへ入る
mkdir build
cd build # buildというフォルダへ入る
cmake ..
make
# copy source .so file to tello.py directory
cp libh264decoder.so ../../ # 2階層上のフォルダへファイルをコピー
この様に,フォルダを2階層上がってaptやpipのインストールを行い,
h264decoderフォルダへ移動してライブラリのビルド&コピーを行っているからです.
もしも,Tello_Videoディレクトリから以下の様に
$ ./install/Linux/linux_install.sh
相対パス指定してシェルを実行するとどうなるでしょうか.
~/Tello-Python/Tello_Video/
の2階層上,すなわちホームディレクトリ~/
まで上がってh264decoder
へ入ろうとしてしまいます.当然ビルドできるわけがありません.
#おわりに
Linux,Raspberry Pi,Windows,Macそれぞれの環境構築方法を書きたいけど,全部終わるのは何時かなあ...