LoginSignup
2
1

More than 3 years have passed since last update.

Raspbianで「Tello_Video」の環境構築

Last updated at Posted at 2020-03-06

(2020年3月6日追記)
メモリ4GBのRaspberry Pi 4,Raspbian Busterで試しました.
ラズパイ3, Stretchの時よりもスムーズに動いています.

はじめに

このページは,

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ファイルがあるなら実行すればスグじゃん」と思うでしょう.
しかし,Raspberry Piでは手順どおり実行してもうまく行きません.
原因は以下の2点です.

  • cmakeのインストールはデフォルトのpipではダメ.aptでインストールすべき
  • OpenCVのインストールがIntel系Ubuntuの様に簡単ではない

cmakeの方は,linux_install.shの書き換えで対応できますが,OpenCVが厄介です.今回は少々手抜きの方法で行います.

前提条件

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

Raspberry Piの場合,OpenCVのインストールがaptやpipで簡単にいかないのが問題です.

Raspbianの更新

まずは,Linuxを最新の状態へ更新しておきましょう.

最新の状態へ更新
$ sudo apt update
$ sudo apt upgrade -y

最初にOpenCVの導入

Raspberry PiのOpenCVインストールは,ソースをダウンロードして自分でビルドする2時間コースが主流です(泣).
しかし,以下の参考ページでmt08さんがビルド&公開してくれているdebianパッケージを使ってインストールすると,非常に簡単・短時間なのでオススメです.

(もちろん「ビルド済みはトロイの木馬とか仕込まれていそうでなんか怖い」という玄人の方は,自分でビルドしてインストールしてください)

Raspbian Stretchの場合

 ラズパイ3にOpenCV3/4を簡単に導入

まずは上記ページの冒頭に書かれている一連のコマンドをコピーし,テキストエディタにペーストしてシェルファイルを作ります.ファイル名は何でも良いのですが,ここではcv_install.shとでもしておきましょう.
以下に,抜粋したコマンドを書いておきますが,更新があるかもしれないので本家からコピペすることを推奨します.

cv_install.shというファイルを作ろう
OPENCV_DEB=libopencv3_3.4.6-20190415.1_armhf.deb

curl -SL https://github.com/mt08xx/files/raw/master/opencv-rpi/${OPENCV_DEB} -o ${OPENCV_DEB}
sudo apt autoremove -y libopencv{3,4}
sudo apt install -y ./${OPENCV_DEB}

#
sudo ldconfig
python2 -c 'import cv2; print(cv2.__version__)'
python3 -c 'import cv2; print(cv2.__version__)'

ホームディレクトリにcv_install.shを保存し,
実行権限を与えてから,実行します.

ビルド済みパッケージでのインストール
$ chmod +x cv_install.sh
$ ./cv_install.sh

ホームディレクトリにはlibopencv3_3.4.6-20190415.1_armhf.debというファイルがダウンロードされますが,インストール後は削除してしまってもかまいません.

cv_install.shの最後に書かれている様に,

PythonによるOpenCVの動作確認(バージョン表示)
python2 -c 'import cv2; print(cv2.__version__)'
python3 -c 'import cv2; print(cv2.__version__)'

Pythonでimportして,きちんと動くかどうか試してくれます.
OpenCVバージョン3.4.6が2回表示されたら成功です.
ここでエラーが出たら何か環境に問題があるという事になります.

Raspbian Busterの場合

 ラズパイ: Buster向け OpenCV4

上記ページは,BusterでのOpenCV3のインストールのヒントに使いました.
Stretchの時のようにコピー&ペーストできるシェルのソースが無いので,自分で作ります.

Buster用の最新のdebパッケージファイルは
https://github.com/mt08xx/files/tree/master/opencv-rpi/raspbian-buster
ここにあります.
ラズパイ2,3,4用のパッケージにはファイル名にarmv7lが含まれています.
2020年3月現在ではlibopencv3_3.4.9-20191223.1_armv7l.debが最新でした.

下記のコマンドをコピーし,テキストエディタにペーストしてシェルファイルを作ります.ファイル名はcv_install_buster.shとでもしておきましょう.

cv_install_buster.shというファイルを作ろう
curl -SLO https://github.com/mt08xx/files/raw/master/opencv-rpi/raspbian-buster/libopencv3_3.4.9-20191223.1_armv7l.deb
sudo apt autoremove -y libopencv{3,4}
sudo apt install -y ./libopencv3_3.4.9-20191223.1_armv7l.deb

#
sudo ldconfig
python2 -c 'import cv2; print(cv2.__version__)'
python3 -c 'import cv2; print(cv2.__version__)'

ホームディレクトリにcv_install_buster.shを保存し,
実行権限を与えてから,実行します.

ビルド済みパッケージでのインストール
$ chmod +x cv_install_buster.sh
$ ./cv_install_buster.sh

ホームディレクトリにはlibopencv3_3.4.9-20191223.1_armv7l.debというファイルがダウンロードされますが,インストール後は削除してしまってもかまいません.

OpenCVバージョン3.4.9が2回表示されたら成功です.
ここでエラーが出たら何か環境に問題があるという事になります.

linux_install.shの書き換え

次にlinux_install.shをRaspberry Pi用に書き換えます.

  1. cmakeをpipインストールからaptインストールに変更
  2. OpenCVのインストールは既に終わっているのでコメントアウトして無効化

以上の2つの作業を行います.

すなわち,21,22行目の

変更前
# install cmake
#sudo apt-get install cmake -y
sudo pip install cmake

変更後
# install cmake
sudo apt-get install cmake -y
#sudo pip install cmake

へと書き換えるだけです.
また,30行目のOpenCVのインストールは

OpenCVのインストールはコメント化
#sudo pip install opencv-python

の様に無効化します.

テキストエディタ(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   # ここをコメントアウト
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

以上で自動インストールされます.
aptやpipのためのファイルダウンロードに失敗している時は,
Ctrl+cで一旦終了して,再度実行してください.
3回ぐらいやれば無事インストールされるはずです.(-_-;;;

インストールが完了したら,Tello-Videoのディレクトリに戻っておきましょう.

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

これで作業は完了です.

おわりに

Raspberry Piでもインストールはできるのですが,
デコードエラーが頻発したり,
Tello_Videoプログラムを終了させようとしてもゾンビ化して死なない現象が発生したりと,
トラブル頻発します.とにかく重いです.

メモリ4GBのRaspberry Pi 4なら大丈夫なのかなあ...4とBusterでも試してみます.

次はWindowsでの環境構築方法を書きます.
 
 

2
1
0

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
2
1