実録ドローン仏プロジェクト Vol.04
ドローン仏を自動制御する?それとも手動で?
このドローンTELLOはプログラムすることで自動制御することができます。
このドローン仏の面白さやMAKE TEESとして全面協力する大きな理由の1つに、この自動制御プログラムがあります。
とは言え、何が何でも自動制御という訳ではなく、自動制御による飛行演出にするか、手動でドローン仏をコントロールして飛行させるか、TPOに合わせて選んでいきたいと思います。
自動制御の場合、何らかのプログラミング言語を用いて、自動制御プログラムを作る必要があります。
色々なプログラミング言語がありますが、TELLOにはどのプログラミング言語が使えるのでしょうか、適しているのでしょうか?
Pythonとは、Scratchとは?
TELLOの自動制御プログラムに利用するプログラミング言語は主に選択肢として『Python』か『Scratch』があると思います。
他にもC言語でも制御可能ですが、利便性を第一にすると『Scratch』か『Python』が良いのではと思います。
『Python』とは1990年ごろ、オランダ人のGuido van Rossum(グイド・ヴァンロッサム)氏によって開発されました。
現在は他のプログラマーも参加し、開発が続けられています。Python Software Foundationにて最新版のPythonの配布、言語の仕様や策定が行なわれています。
Pythonはオブジェクト指向かつ非常にシンプルな書式で、インタプリタ方式の高水準言語です。
人工知能の多くもこのPythonで開発されています。
次に『Scratch』ですが、マサチューセッツ工科大学、いわゆる、MITのメディアラボのミッチェル・レズニック教授による研究プロジェクトとして開発がスタートしました。
2006年に公開されたScratchはビジュアルプログラミング言語でブロックを組む、積み上げるようなイメージでプログラミングができます。プログラミング教育には最適な言語として、世界中の子どもたちに
利用されています。また、Scratchのプログラムを作成し、公開するコミュニティでは、2900万人以上がアカウント登録をしており、3200万個以上のプログラムが公開されています。
Scratchはビジュアルプログラミング言語であり、あまりにも平易な言語であるため、また子ども向け教育用のプログラミング言語であるとして、このScratchでできることは少ないと思う方もいらっしゃいますが、全くそんなことはありません。
Scratchで使うプログラムの命令、制御構造はC言語、Java言語などとほとんど同じものが使われており、Scratchで作ったアルゴリズムはJava言語などに書き写すこともできるのです。
平易でシンプルでありながら、汎用性が高く、非常に優れたプログラミング言語なのです。
MAKE TEESとしては、プログラミングの楽しさを伝える、また子どもたちから大人まで誰でもドローンTELLOを自動制御して楽しむ一環として、簡単に取り組めるScratchでドローン仏の制御プログラムを作ることとします。
Scratchでできることは、最大限、Scratchでドローン仏を制御してみましょう!
まずはScratchで自動制御プログラムを作り、後々にPythonでのドローン仏の自動制御プログラムも作って行くこととします。
ScratchでTELLOを動かす!
ScratchではTELLOの飛行や制御のためにあらかじめブロックが用意されています。それぞれのブロックと動きについて、違うページで紹介していきます。これらを踏まえた上で、Scratchで何ができそうかをご紹介します。
このScratchとTELLOを実際に動かすためにSDKが公式に用意されています。このSDKとはソフトウェア開発キットや文書、ツールを意味します。
現在、『TELLO SDK 1.3.0.0』の他、11月に『TELLO SDK 2.0』が用意されています。
これらはTELLO公式サイトから常に最新版を入手できます。
ドローン仏の自動制御の検証を行っていた頃は、TELLO SDK 2.0がまだ出ていない9月下旬でしたので、ここではひとまず、その開発当時に近いSDK 1.3.0.0で話を勧めます。
後ほど、SDK 2.0についても解説します。
このTELLO SDK 1.3.0.0の中からScratchで利用するコマンドを抜粋して表にまとめました。
コマンド | 意味 | 応答 |
---|---|---|
take off | 離陸 | OK or FALSA |
land | 着陸 | OK or FALSA |
fly up with distance xx | 距離 xx cmの高さに上昇 | OK or FALSA |
fly down with distance xx | 距離 xx cmの高さに下降 | OK or FALSA |
fly left with distance xx | 距離 xx cm、左へ移動 | OK or FALSA |
fly right with distane xx | 距離 xx cm、右へ移動 | OK or FALSA |
fly forward with distance xx | 距離 xx cm、前進 | OK or FALSA |
fly back with distance xx | 距離 xx cm、後進 | OK or FALSA |
rotate CW with angle xx | 角度xx度、時計回り | OK or FALSA |
rotate CCW with angle xx | 角度xx度、反時計回り | OK or FALSA |
flip with duration f or b or r or l | 指定方向へフリップ(f=前・b=後・r=右・l=左・fr=右前・fl=左前・br=右後・bl=左後) | OK or FALSA |
set speed xx | 速度xxに設定(xx=1 - 100)・cm/秒 | OK or FALSA |