Mac OSXで「Tello_Video」の環境構築


はじめに

このページは,

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(change_directory)
$ cd ~/Tello-Python/Tello-Video

lsコマンドでTello_Videoディレクトリの中を見てみると,

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

installというディレクトリがあることが分かります.
このディレクトリの中身は,

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 を書き換えてください.

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のディレクトリに戻っておきましょう.

2つ上の階層へもどる
$ cd ../../

これで作業は完了です.

注意点

mac_install.shでのインストールで注意すべき点は,
必ず~/Tello-Python/Tello_Video/install/Mac/へカレントディレクトリを移動させ,
そこでmac_install.shを実行すること
 です.

というのは,

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...