#はじめに
このページは,
Tello-Pythonのサンプル「Tello_Video」を動かす
の補足ページです.
※注意
筆者のMacは古い(High Sierra)ので,試したのはXcode 10です.
新しいMacでは別の問題が生じるかもしれません...
#概要
DJI公式のTello用Pythonサンプルプログラム「Tello-Python」のうち,
Tello_Video
を試すためには、あらかじめ
- 様々な依存ライブラリのインストール
- H.264ビデオのデコードライブラリのビルド
を行う必要があります。
gitの Tello-Pythonのページ には,インストール方法として
・Mac
i. Make sure you have the latest Xcode command line tools installed. If not, you might need to update your OS X and XCode to the latest version in order to compile the h264 decoder module
ii. Go to the "install\Mac" folder folder in command line, run
chmod a+x ./mac_install.sh
./mac_install.sh
If you see no errors during installation, you are good to go!
と書いてあります.
すなわち,Macの開発環境であるXcodeのコマンドラインツールをインストールした後で,
$ cd install/Mac/
$ chmod a+x ./mac_install.sh
$ ./mac_install.sh
とコマンドを打てよ,ということです.
**mac_install.sh**が,Mac用の環境構築を自動的に行ってくれるシェルスクリプトです.
Macに精通した方は「なんだ,shファイルがあるなら実行すればスグじゃん」と思うでしょう.
しかし,そのまま実行すると
- matplotlibのインストール時にnoseとtornadoが無いと言われる.
- OpenCVのバージョンが3.x系がインストールされない.(4.x系になる)
- h264デコードライブラリのビルド前に,cmakeが通らない
という不具合が生じます.
というわけで,mac_install.shを書き換えます.
#参考にしたページ
・Command Line Toolsのインストール方法 筆者はこちらでXcode10用を探してインストールした
・MavericksでCommand Line Tools for Xcodeをインストールする 既にGUI版のXcodeがインストールされている人向け
・Python:[pip install requests]実行時の[matplotlib 1.3.1 requires nose, which is not installed.]の対処方法
・Tello_Video & Tello_Video_With_Pose_Recognition #41 #42
#前提条件
ホームフォルダ(~)に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それぞれのディレクトリにインストール用のファイルが置いてあるのですが,どれも古くて使い物になりません.
ですが,Macは多少の変更で対応できます.
#Mac_install.shの書き換え
Macの場合,mac_install.shの中身を少し書き換えれば,自動インストールできます.
※加えた変更
easy_installでnoseとtornadoをインストールするように追記しました.
OpenCVのバージョンははSHIFTの使える3.4.2.17にしました.
cmakeでboost_pythonが無いというトラブルは,issueの通りに書き換えました.
テキストエディタ(テキストエディット,miなど)を使って以下の様に mac_install.sh を書き換えてください.
#!/bin/sh
echo 'Compiling and Installing the Tello Video Stream module'
echo 'You might need to enter your password'
# go to /sample_code folder
cd ..
cd ..
# install Homebrew
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew update
# install pip
#sudo easy_install pip
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
sudo python get-pip.py
# install cmake
brew install cmake
# install dependencies
brew install boost
brew install boost-python
brew install ffmpeg
brew install tcl-tk
# added by hsgucci
sudo easy_install nose
# added by hsgucci
sudo easy_install tornado
sudo pip install numpy --ignore-installed
sudo pip install matplotlib --ignore-installed
sudo pip install pillow --ignore-installed
sudo pip install opencv-python==3.4.2.17 --ignore-installed
# pull and build h264 decoder library
cd h264decoder
mkdir build
cd build
# comment out by hsgucci
#cmake ..
# added by hsgucci
cmake -D Boost_NO_BOOST_CMAKE:BOOL=ON ..
make
# copy source .so file to tello.py directory
cp libh264decoder.so ../../
echo 'Compilation and Installation Done!'
#mac_install.shの実行
書き換えたら,シェルファイルのあるフォルダへ移動して,
chmodで実行権限を与え,実行します.
$ cd ~/Tello-Python/Tello_Video/install/Mac/
$ chmod a+x mac_install.sh
$ ./mac_install.sh
以上で自動インストールされます.
インストールが完了したら,Tello-Videoのディレクトリに戻っておきましょう.
$ cd ../../
これで作業は完了です.
#注意点
mac_install.shでのインストールで注意すべき点は,
必ず~/Tello-Python/Tello_Video/install/Mac/
へカレントディレクトリを移動させ,
そこでmac_install.sh
を実行すること です.
というのは,
cd .. # 1つ上のディレクトリへ移動
cd .. # 1つ上のディレクトリへ移動
# Homebrew のインストール
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew update
(略)
# 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/Mac/mac_install.sh
相対パス指定してシェルを実行するとどうなるでしょうか.
~/Tello-Python/Tello_Video/
の2階層上,すなわちホームディレクトリ~/
まで上がってh264decoder
へ入ろうとしてしまいます.当然そんなフォルダはありませんから,ビルドできるわけがありません.
#おわりに
やっとLinux, Raspberry Pi,Windows,Macが全部終わった〜(喜
でも時代はPython3...