「プログラミングでドローンを動かしてみたい。でも、英語のコードや記号が難しくて…」
講座でPythonを使ってTello(テロー)を動かしていると、そんな場面に出会うことがあります。そこで、ブロックをつなぐビジュアルプログラミング環境「BrixelAI」に、Tello用の自作ブロックを追加した教材を作ってみました。
この教材のいちばんのポイントは、AIが見つけた位置や大きさの数値を、生徒が「変数」と「もし〜なら」のブロックで判断して、ドローンの動きのルールを自分で作るところです。この記事では、解説動画の内容に沿って、きっかけ・仕組み・考え方・実験のようすを紹介します。

解説動画(約16分)
動画では、ナレーションと図解、実際の画面と実験映像で、教材の考え方をくわしく説明しています。
きっかけは、講座で感じた「入力の壁」
普段の講座では、テキストプログラミング(Python)でTelloを動かしています。自分の書いたプログラムで機体が動く瞬間は、とても楽しい時間です。
ただ、その手前でつまずくこともあります。英語の命令、括弧、コロン、引用符…。一文字ちがうだけでエラーになってしまいます。本当は「どう動かすか」という仕組みを考えたいのに、まず入力で手が止まってしまうのです。

ブロックなら、考え方が「見える」
そこで考えたのが、ブロックをつなぐビジュアルプログラミングです。命令が日本語で書かれていて、形が合うところにだけつなげられます。
- 順番に実行する
- くり返す
- 条件によって動きを変える
こうしたプログラミングの基本の考え方を、ブロックの形とつながりで、目で追って確かめられます。

土台にしたのは「BrixelAI」
BrixelAIは、ブロックを使ってAIを学べるプログラミング環境です。顔や手、体のポーズ、物体の認識など、たくさんのAI機能をブロックで使うことができます。
ここで大事なのは、「もともとBrixelAIにある機能」と「今回追加した部分」を分けて考えることです。
| BrixelAIに用意されている機能 | MACKY LABが追加した部分 |
|---|---|
| 顔の検出、物体の追跡、手・ポーズなどのAI機能 | Telloを操作するための自作ブロックと、パソコン側でTelloへ命令を届けるPythonの中継 |

追加したTello用ブロック
「Telloに接続する」「離陸する」「着陸する」といったブロックに加えて、Telloの動きを決める4つの入力を送れるようにしました。
- 左右(平行移動)
- 前後
- 上下
- 旋回(その場で向きを変える)
4つを同時に使わなくても大丈夫。一つの方向だけでも、十分に学ぶことができます。

命令がTelloに届くまで
ブロックが作った命令は、パソコン上で動くPythonの中継プログラムが受け取り、Wi-FiでTelloへ届けます。反対に、Telloのカメラ映像はBrixelAIのAIへ渡されます。
ポイントは、動きの判断をするのはPythonではなく、画面に見えているブロックだということ。生徒が考えるのは、このブロックの部分です。

教材の中心:AIの数値を「変数」と「もし〜なら」で判断する
① AIの数値を変数に入れる
AIで顔や対象が見つかったら、その位置と大きさを読み取って、変数に入れます。変数は、数値を入れておく「名前のついた箱」のようなものです。
- 対象X:横の位置(画面の中心が0)
- 対象Y:縦の位置
- 対象幅:見えている大きさ
見つからなかったときは、それぞれの箱に0を入れます。

② 旋回は「対象X」と境界でくらべる
たとえば旋回の判断です。今の設定では、横の境界は±35。
- もし 対象X が +35 より大きい なら → 右に旋回
- もし 対象X が −35 より小さい なら → 左に旋回
- その間なら → 旋回の命令は0(動かさない)
対象Xが50なら右へ、−10なら境界の内側なので0、というように、数値とルールの関係を具体的に考えられます。

③ 前後は「幅」でくらべる
近くのものは大きく、遠くのものは小さく見えます。そこで、保ちたい距離のときの幅を基準の幅として登録し、今の幅が基準の何パーセントか(幅比)を計算します。
- 幅比が90より小さい(遠い)→ 近づく向きの入力
- 幅比が110より大きい(近すぎる)→ 離れる向きの入力
上下は対象Yと縦の境界(±25)でくらべます。同じAIの結果から、旋回にはX、上下にはY、前後には幅と、別々の判断をつくれるのがおもしろいところです。


方向ごとのON/OFFと操作パネル
プログラムでは、1〜4のキーで左右・前後・上下・旋回のON/OFFを切り替えられ、一時停止ですべての命令を0にできます。専用起動版の画面上部には、接続・実機操作の許可・離陸・着陸、4方向のON/OFFと入力の大きさ、入力の停止・再開などの操作パネルもつけました。「判定」の欄には、今なぜ動かさないのかといった理由も表示されます。

実験のようす
実験① ボールを追跡対象にする
ボールは、BrixelAIの物体追跡で、画面の中央に映したものを対象として登録しています。ボール専用のAIを学習させたわけではなく、登録した対象を追いかける仕組みです。ボールを動かすと、追跡枠と対象X・対象Y・対象幅の数値が変わっていきます。


実験② 顔の位置と幅を使う
顔の実験で調べているのは、顔がどこにあるか、どのくらいの大きさに見えるかです。誰の顔かを見分ける本人認証のような使い方ではありません。最初は一つの方向だけを有効にして、数値の変化を確かめるのがおすすめです。

遅れや見失いも、学ぶ材料に
映像やAIの処理には遅れがあり、対象を見失うこともあります。この教材では、AIの結果が古いときや対象が見つからないときは、移動の入力を0にします。認識の枠が見えていても「機体操作は保留」となる場面があり、こうした状態も生徒と一緒に確かめられる学習の材料になります。

授業での使い方
実際の授業では、次のような順番で進めることを考えています。
- 地上で、AIの数値を観察する
- 基準を登録する
- 一つの方向だけをオンにする
- 操作を許可して、人の手で離陸させる
- 教員が周りと機体を見ながら操作する
そして、こんな問いを生徒と一緒に試してみたいと思っています。
- 境界の数値を大きくすると、いつ反応するようになる?
- 入力を小さくすると、動きはどう変わる?
- 幅の許容を変えると、前後の動きはどうなる?
数値を変える → 観察する → 理由を考える。その結果を、自分の言葉で説明するところまでつなげていきたいと考えています。

ブロックで学んだ考え方は、Pythonにもつながる
「もし 対象X が 境界 より大きい なら」というブロックは、Pythonでは if文として書くことができます。先に考え方をつかんでおけば、英語や記号は、あとから少しずつ覚えていけばいいのです。

まとめ:AIで見つけて、自分で考えて、動かす
英語の入力でつまずいても、AIやプログラミングを楽しめる入り口を作りたい。そんな思いから、BrixelAIにTello用のブロックを追加してみました。
AIで見つけて、自分で条件を考えて、その結果がドローンの命令につながる。考えたルールが現実の動きにつながる体験を大切にしながら、これからも講座で使いやすい教材に育てていきます。

よくある質問
Q. BrixelAIの公式機能でTelloを使えるのですか?
A. いいえ。AIの機能(顔の検出・物体の追跡など)はBrixelAIの標準機能ですが、Tello用ブロックとパソコン側の中継は、MACKY LABが専用の起動版で読み込む独自の拡張として作ったものです。
Q. 緑の旗を押すとドローンが飛びますか?
A. 緑の旗では、Telloへの接続やカメラ・AIの準備を行います。離陸は別のキーで行い、基準の登録や方向の確認を済ませてから、人の手で離陸させる進め方を考えています。
Q. 顔の検出で、個人を見分けているのですか?
A. いいえ。使っているのは顔の位置と見かけの大きさだけで、本人認証や個人の識別は行っていません。
※映像は実験中の教材です。認識の遅れや見失いで操作を保留する場面も含まれます。教員が周囲と機体を確認して使用します。ドローンを飛ばす際は、最新の公式情報で飛行ルールを確認してください。
使用プラットフォーム:BrixelAI/Tello用ブロックとPC側中継:MACKY LABの独自拡張/動画ナレーション:VOICEVOX:ずんだもん
