LoginSignup
3
2

More than 3 years have passed since last update.

Ubuntuで「Tello_Video」の環境構築

Last updated at Posted at 2020-03-06

はじめに

このページは,

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(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それぞれのディレクトリにインストール用のファイルが置いてあるのですが,どれも古くて使い物になりません

ですが,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で書き換える例
$ nano install/Linux/linux_install.sh

nanoで編集する場合はctrl+oでファイルを保存,ctrl+xでエディタ終了です.

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

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

これで作業は完了です.

注意点

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

というのは,

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それぞれの環境構築方法を書きたいけど,全部終わるのは何時かなあ...
 
 

3
2
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2