Linux活用レシピ > ドローンに活用 > ドローンをRaspberry PiとScratchを使って自動飛行させる方法
このページでは、ドローン「TELLO」をRaspberry PiとScratchを使って自動飛行させる方法を紹介します。


ドローンをラズパイとScratchで自動飛行させる方法
Telloの自動飛行中のリアルタイム動画を録画する

それでは、Telloのカメラのストリーミングを制御するブロックを仕込んだScratchプログラムを実行し、Telloの自動飛行中のリアルタイム動画を録画してみます。

Tello用Scratchスクリプトセット ストリーミング用を読込

    それでは、プログラムを「Scratch2」から読み込ませます。
    ファイルメニューから「Load Project」を選択します。 スクラッチ
    Tello用Scratchスクリプトセット ストリーミング用(ここでは「Tello-Visual2.sb2」)を指定して、「開く」ボタンをクリックし、読み込みます。

    スクラッチ
    現在のプログラムと置き換えるか確認がありますので、「OK」をクリックします。

    スクラッチ

    ロードが完了すると、以下の通り読み込まれます。

    スクラッチ しかし、ブロックが「undifined」になっているので、

    スクラッチ

    ScratchのTELLO拡張(その2〜ストリーミング拡張〜)の読み込みを以下の通り行います。
    スクラッチ メニューからキーボードの「SHIFT」キーを押しながら、「ファイル」メニューをクリックし、表示される「"Import experimental extension"」をクリックします。

    URLに「"/home/pi/Downloads/tellocontJp2.js"」と入力し、「Load」ボタンをクリックして、ストリーミングのオンオフのコードを入れたブロックが追加されているTELLO拡張ファイルを読み込みます。

    スクラッチ
    読み込みが完了すると、以下の通りになり、

    スクラッチ 「undifined」だったブロックが正常に表示されました。

    スクラッチ

    これで離陸時と着陸時にそれぞれ「動画開始」「動画終了」をセットたスクリプトが準備できました。


Raspberry PiとTELLOをWiFiで接続

    TELLOを制御するにはWiFiで接続する必要があります。
    まずは、TELLOの電源を入れましょう。

    TELLOの正面のLEDが激しく点滅したら準備完了です。
    以下の通り、OS「Raspbian」で、右上のネットワーク部分をクリック


    「TELLO-」から始まるTELLOのSIDを選択します。

    以下の通りWiFiの表示が変わったら、Raspberry PiとTELLOがWiFiで接続できました。


Tello.jsの実行

    TELLOをScratchでコントロールするには、「Node.js」を使って「Tello.js」を裏で実行しておく必要がありますので、以下の手順で実行してください。

    まず、Raspbianのメニューから赤枠の部分をクリックしてターミナルを起動します。


    「Tello.js」は準備段階で、ホームディレクトリの「Downloads」の「Scratch」ディレクトリに保存しましたので、以下のコマンドで、カレントディレクトリを変更します。
    pi@raspberrypi:~ $ cd ~/Downloads/Scratch/[ENTER]
    pi@raspberrypi:~/Downloads/Scratch $ 
    

    「Tello.js」を実行します。
    pi@raspberrypi:~/Downloads/Scratch $ node Tello.js[ENTER]
    


リアルタイム動画をキャッチできるよう、ffmpegを実行する

    Scratchで自動飛行が始まったらすぐにTELLOのカメラの動画がリアルタイムで録画できるよう、別のターミナルで以下の通りパラメータを指定してffmpegの実行を行います。
    pi@raspberrypi:~ $ ffmpeg -i udp://0.0.0.0:11111 \
    -acodec copy -vcodec copy drone.mp4[ENTER]
    

    上記の例ではホームディレクトリに「drone.mp4」を作成して、このファイルに録画を始めます。
    これで、TELLOのカメラの動画のストリーミングが始まれば、「drone.mp4」に録画が開始されます。

    なお、以前に実行して同じファイル名でファイルが存在している場合は、TELLOのストリーミングが始まって録画が開始されるまえに、ファイルを上書きするか聞いてこられてしまいますので、あらかじめ以下のように同じファイルがある場合は消しておきましょう。
    pi@raspberrypi:~ $ rm -i drone.mp4
    

自動飛行の開始と録画の開始

    それでは、TELLOを飛ばします。以下の赤枠の「キーが押されたとき」部分をマウスでクリックすると、TELLOのフライトが始まります。

    スクラッチ
    すぐに、先ほどのターミナルでストリーミングを待っているffmpegが動き出し、録画が開始されます。 いかがでしょうか、TELLOが離陸後、四角形を描いてそののち着陸しますが、その一連の動画がRaspberry Piのホームディレクトリに「drone.mp4」ファイルとして録画されますよね。


    TELLOをRaspberry PiのScratchで自動飛行させたカメラ動画
    実際のTELLOのカメラ動画が以下になります。きれいに記録できていますね。

    ドローン「TELLO」の外から見た動きは以下のようになります。