[教えて!ドローンプログラミング]Vol.03 Tello EDUではじめるドローンプログラミング上級編:ScratchとPythonで飛ばしてみよう!

多言語対応でさらなる可能性が広がるTello EDU!

プログラミング教育用トイドローンTello EDUを使ってドローンプログラミングを紹介するこのシリーズ。これまでTello EDUアプリやSwift Playgroundsアプリを使ってプログラミングしてきました。Tello EDUの特徴は、ScratchやPythonなど多言語に対応しているところです。今回は、この2つの言語を使ってTello EDUのプログラミングに挑戦したいと思います!

Scratchでドローンを飛ばしてみよう

Tello Scratch READMEファイルの一部 では、早速Scratchを使ってドローンをプログラミングしていきましょう。Scratch はTello、Tello EDUどちらにも対応していますが、Scratchでドローンを動かす場合、少し準備が必要です。筆者はMacを使っているのでMacの場合を例に紹介します。

Tello EDU公式ページのメニュー「ダウンロード」から、「Scratch README」をクリックすると、Tello EDUをScratchで動かす手順が書かれています。(英語版のみ)。このファイルを参考に進めていきましょう。

1.Scratchをインストール

このページから自分のOSや環境に合わせてScratchをダウンロードしてインストールします。

1.Adobe AIR(持っていない場合はこちらも必要です)
2.Scratch 2.0オフラインエディター(Tello EDUを動かすために最新版ではなくこちらをダウンロードしてください)

Scratch2.0オフラインエディター画面

インストールが完了し、Scratch 2.0オフラインエディターを立ち上げると猫とブロックが並ぶScratchの画面が現れます。表示が日本語でない場合は左上のScratchのロゴの横にある地球マークから日本語を選択するとブロックの文字が日本語になります。ひらがなでの表示も可能です。

2.node.jsをインストール

次に、このアドレスから、node.js(緑色のボタン左側が推奨版)をダウンロードして手順に従ってインストールします。

3.Tello EDU プログラミングデータのダウンロード

ダウンロードされた「Scratch」フォルダの中身 さらに、ScratchでTello EDUを動かすためのプログラミングデータをこちらからダウンロードします。

1.まず、Tello.jsファイルを右クリック→「このアプリケーションで開く」→「テキストエディット」を選び、ファイルを開きます。

2.次に、アプリケーションから「ターミナル」(Windowsの場合はコマンドプロンプト)を立ち上げます。「node」と入力してenterキーを押します。

3.1で開いたTello.jsファイルの「var」以降最後まで全てをコピーして2のターミナルにペーストします。

テキストエディットでTello.jsファイルを開いた画面。選択して水色になっている「var」以降最後までコピーする

ターミナルを立ち上げ「node」と入力した画面。「>」以降の部分に上記Tello.jsファイルでコピーした部分を貼り付ける。この画面は終わるまで開いたままにしておく

4.ScratchでTello EDUを飛ばせるようにする

実は、ScratchはそのままではTello EDUを動かすことはできません。3までの準備をした後、最初にインストールしたScratchを起動します。shiftキーを押しながらメニューバーの「ファイル」を押すと一番下に「実践的なHTTP拡張を読み込み」というメニューが現れます。

「実践的なHTTP拡張を読み込み」を選択し、3でダウンロードした「Scratch」フォルダにあるTello.s2eファイルを読み込みます。

Scratchにドローンを制御するブロックが追加される Scratch画面真ん中、「スクリプト」の「その他」をクリックすると、Tello EDUをコントロールするブロックが追加されています(ドローンを制御するブロックは英語表記)。これで準備完了です!

Scratchでプログラミング飛行テスト

Scratchでのプログラミング画面例 あとは前回までと同じように、Tello EDUのスイッチを入れ、パソコンをTello EDU独自のWifiに接続します。ブロックを組み合わせてプログラミングし、実行するとTello EDUをScratchで制御できるようになります。

ScratchでTelloEDUのプログラミング飛行テスト。緑の旗をクリックするとTelloEDUが動き始める

試行錯誤が続くプログラミング

初心者の筆者でも手順通りに進めば思ったよりもスムーズにできそうだ!とドローンが飛んだ瞬間思ったのですが、なんと最後に「着陸」しないというトラブルが起きてしまいました。機体が熱を持ったり、フライトを繰り返したりしていると、途中の命令をスキップしてしまうことはよくあるのですが、着陸しないというのは想定外です。

いろいろ試してみた結果、ソフトの再インストールなど1からやり直してみると着陸も問題なくできるようになりました。同じ症状が起きた時は参考にしてみてください。

Pythonでドローンを飛ばしてみよう

AIなどでも使われ、今人気のPythonですが、実はとても教育に適したプログラミング言語です。もちろん本格的なテキスト言語なのですが、シンプルで記述も比較的短くて済むという特徴があります。Tello EDUがこの性能、この価格でPythonにも対応していると聞き、試してみました!

1.Pythonをダウンロードする

公式サイトからPythonをOSに合わせてダウンロードします。今回はPython3をインストールしました。インストールはダウンロードしてインストーラーを実行するだけなので簡単です。

2.Pythonのサンプルファイルをダウンロードする

Tello EDU公式ページのメニュー「ダウンロード」にある「SDK 2.0 User Guide」を参考にしながら、Pythonのサンプルファイル「Tello3.py」をダウンロードします。

3.Tello3.pyファイルを開く

Tello3.pyファイルをダブルクリックで開き、メニューから「Run」→「Run Module」を選択します。

4.新しいウインドウが開く
5.Tello EDUのスイッチを入れパソコンとTello EDUのWi-Fiを接続
6.コマンドを入力

4で開いたファイルの下の空欄に、「command」と入力し、離陸させるときは「takeoff」を入力します。機体が離陸すればOKです。着陸させるときは「land」、終了させる場合は、「end」を入力します。

Pythonでプログラミング飛行テスト

手順がわかったので、いよいよPythonのプログラミング飛行テストです。まずは離陸と着陸のテストしてみました。

Pythonのプログラミング飛行テスト(離陸・着陸)

成功です!今回は離陸と着陸でしたが、もちろん他のコマンドも入力することができます。先ほど紹介した「SDK 2.0 User Guide」を参照してください。

ここで紹介したのはPythonの導入だけですが、Tello EDUのすごいところは、アップグレードされたSDK2.0により、ビデオストリームデータへのアクセスなどによって画像処理やAI開発へと可能性を広げられることです。公式Webにあるチュートリアルビデオのようなジェスチャーコントロールが自分でもできるかもしれません。

Tello EDU-Soaring Symphonyより

Tello EDUのページには公式のサンプルコードが用意されています。さらに本格的に学びたい子どもたちにとってAIも学べる魅力的な教材だと思います。

論理的思考や問題解決能力ってプログラミングで身につくの?

ところで、以前より疑問だったのが、プログラミングで論理的思考が身につくのか?ということです。筆者はプログラミング初心者なので、自分の経験として感じたことだけを言うと、行動を1つ1つプログラムで表現するという作業がとても新鮮でした。

子ども向けのアプリを使ってブロック組み立てることはこの手順を可視化するのにとても良い教材だと思います。手順を記述してみると実際は無意識で行っていることの多さに気がつきます。手順をきちんと書かないとプログラムは動きません。

そうやって身の回りを見てみるといろいろなところにコンピュータが使われています。こうやってプログラムされているのかなと少し想像できるようになりました。

また、Swift Playgroundsのミッションでプログラミングしたように、同じ作業をまとめて関数やFor文などを組み合わせていくことは、パターンを見つけたり抽象化や概念化したりしていくことにつながりそうです。構造的にものを見ていく訓練になるのではと感じました。

Tello EDUでのプログラミングはその都度何かしらうまくいかないなど問題が起こります。デバッグが必要なのかあるいは別の問題なのか。これまで多くの方に相談してなんとかPythonの実行まで可能になったことを考えると、確かに問題解決能力や忍耐力、協調性等は必須になってくると思います。

ただ、1つ1つの問題を解決していくのにはとても時間がかかりました。本当にこういった力を身につけていくには、授業に少し取り入れただけでは難しいかもしれません。

プログラミング教育で何を学ぶのか?

2020年小学校でプログラミング教育が必修化され、その後も中学校、高校と順次新しい指導要領に合わせて内容も一新されていくことが決まっています。これからの時代、すべての人が、コンピュータがどうやって動くのかという仕組みを知る必要があるでしょう。

もちろん、プログラミングを理解するだけでなく、プログラミングができるIT人材を育成してくことは産業界やドローン業界としても重要です。

ただ、それは単にプログラミングを理解し知識を覚えればいいということでありません。ScratchはMITのメディアラボで開発された言語ですが、開発には「ものを作りながら学ぶ」というシーモア・パパートの「構築主義」という考え方がベースにあります。

Scratchを開発したミッチェル・レズニックも、Scratchの目的はプログラマーを育てることではなく、創造的思考力を育てることだと言っています。何より今までなかった「自分が作りたいものを作る」ためには創造力が必要です。一方で、これから「自分の作りたいものを作る」ためには、プログラミングができないと作ることができない時代になってきているのかもしれません。

筆者もPythonに興味を持ち、いろいろな夢が広がりました。この連載は今回が最終回ですが、少しでもドローンプログラミングに興味がある方やSTEM教育にトイドローンを活用してみたいという方のお役に立てればうれしいです。

© 株式会社プロニュース