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


ドローンをラズパイとScratchで自動飛行させる方法
Telloのカメラのストリーミングを制御するPG作成

Telloのカメラのストリーミングを制御するScratchプログラムを準備します。
ここではサンプルプログラムに手を加えていきます。

ScratchのTELLO拡張(その2〜ストリーミング拡張〜)の読み込み

    以下の手順でScratchのTELLO拡張(その2〜ストリーミング拡張〜)の読み込みを行い、ストリーミングのオンオフのコードを入れたブロックが追加されているか確認します。

    まずは、Raspbianスタートメニューから「Scratch2」を起動します。

    スクラッチ
    「Scratch2」が起動できれば、メニューからキーボードの「SHIFT」キーを押しながら、「ファイル」メニューをクリックし、表示される「"Import experimental extension"」をクリックします。

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

    スクラッチ スクラッチ
    すると以下の通り「スクリプト」の「その他」にTELLOのコントロールが表示され、その中に「動画開始」「動画終了」があり、これがストリーミングのオンオフのコードを入れたブロックになりますので、追加されていることが確認できます。

    スクラッチ

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

    では、「Tello用Scratchスクリプトセット」を少し修正し、離陸時と着陸時にそれぞれ「動画開始」「動画終了」をセットしてみましょう。

    なお、以下のリンクからScratchのTELLO拡張機能で、ストリーミングのオンオフをセットした「Tello用Scratchスクリプトセットその2」を用意していますので入手してみてください。
    Tello-Visual2.zip

    ブラウザからダウンロードすると、ホームディレクトリの「Downloads」ディレクトリに保管されますので、
    ターミナルから以下の通り、「Downloads」ディレクトリで解凍します。
    pi@raspberrypi:~ $ cd ~/Downloads[ENTER]
    pi@raspberrypi:~/Downloads $ unzip Tello-Visual2.zip[ENTER]
    
    「Downloads」ディレクトリ直下に「Tello-Visual2.sb2」が作成されます。
    確認しましょう。
    pi@raspberrypi:~/Downloads $ ls[ENTER]
    Scratch Tello-Visual.sb2 Tello-Visual2.sb2  tellocont.js  tellocontJp.js
    Scratch.zip Tello-Visual.zip Tello-Visual2.zip tellocont.zip
    
    それでは、プログラムを「Scratch2」から読み込ませます。
    ファイルメニューから「Load Project」を選択します。 スクラッチ
    先ほど解凍した「Tello-Visual2.sb2」を指定して、「開く」ボタンをクリックし、読み込みます。

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

    スクラッチ

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

    スクラッチ しかし、よく見るとブロックが「undifined」になってしまっております。

    スクラッチ

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

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

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

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

    スクラッチ

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


ScratchのTELLO拡張機能で作成したプログラムの保存と読込方法

    TELLO拡張機能で作成したプログラムを保存する際、ファイルメニューから「Save Project」を選択します。
    スクラッチ
    この時、以下の通りファイル名の拡張子が「sbx」でしか保存できません。
    スクラッチ
    そこで、一旦保存した後、ターミナルから以下の通りファイル名の拡張子を「sbx」から「sb2」に変更しておきます。
    pi@raspberrypi:~ $ cd ~/Downloads[ENTER]
    pi@raspberrypi:~/Downloads $ mv -i Tello-Visual3.sbx Tello-Visual3.sb2[ENTER]
    
    これで、プログラムを「Scratch2」から読み込ませられるようになります。
    なお、このプログラムを次回ロードしたとき、拡張のブロックが読み込まれません。

    スクラッチ 拡張ブロックが「undifined」になってしまいますので、

    スクラッチ

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

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

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

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

    スクラッチ

    ScratchのTELLO拡張機能で作成したプログラムの保存と読込は、若干手間となりますが上記の通り利用するようにしてください。



    以上でTelloのカメラのストリーミングを制御するScratchプログラムの準備が出来ました。
    次は、いよいよTELLOを自動飛行させ、カメラ動画をRaspberry Piのモニタに表示したり、録画したりしてみましょう。