IchigoJam を使って Tello を飛ばすには、下記の準備物が必要です。各機器の物理的な接続方法や
ファームウエアのインストール方法については、それぞれのドキュメント等を参照してください。
最初に、Wi-Fiアクセスポイントとして機能している Tello に FruitPunch を接続します。
※Telloの電源をあらかじめONにしておく必要があります。
※一度接続すると、次回からは電源投入時に前回接続したTelloに自動で接続します。
コマンド | 操作 | 説明 | 使用例(IchigoJam BASIC) |
---|---|---|---|
FP APL | Wi-Fi アクセスポイント(Tello)一覧の表示 | Tello を含む Wi-Fi アクセスポイントを検索し一覧を表示する。 | ?"FP APL" |
FP APC {ssid} | Wi-Fi アクセスポイント(Tello)に接続 | Tello に接続する。 | ?"FP APC TELLO-FFFFFF" |
FP APS | Wi-Fi の接続状態を表示 | Tello との接続状況を表示する。(0:未接続, 1:接続中) | ?"FP APS" |
利用可能な Wi-Fiアクセスポイントを検索して一覧を表示します。
Tello が起動していれば、一覧に含まれて表示されます。
※まれに結果表示が崩れることがあります。
?"FP APL"
FP APL OK 'TELLO-FFFFFF 'TELLO-EEEEEE 'OK
Tello のWi-Fiアクセスポイントに接続します。
?"FP APC TELLO-FFFFFF"
FP APC TELLO-FFFFFF OK '..... 'WiFi connected: 192.168.10.2 'OK
Wi-Fi の接続状態を表示します。
?"FP APS"
FP APS OK '1
IchigoJam を使った Tello のプログラミングには2通りのスタイルがあります。
フライトの目的や参加競技、プログラミングの習熟度に応じて適切なものを選択できます。
FP Q コマンドを使用すると、司令官のように飛行計画を立案、まとめて実行させることができます。
初級者でも簡単にTelloを飛ばすことができます。
コマンド | 飛行計画の処理 | 説明 | 使用例(IchigoJam BASIC) | |
---|---|---|---|---|
FP QRUN | 実行 |
Tello を離陸させ、飛行計画を順次実行、完了後に着陸させる。 ※飛行計画は実行されたものから順に消去されます。 |
?"FP QRUN" | |
FP QCLR | 全消去 | すべての飛行計画を消去する。 飛行計画の実行中(FP QRUN後)であれば中断してTelloを着陸させる。 |
?"FP QCLR" | |
FP QU {x} | 追加 | 上昇 | {x} cm 上昇させる。(20 <= x <= 500) | ?"FP QU 50" '50cm 上昇 |
FP QD {x} | 追加 | 下降 | {x} cm 下降させる。(20 <= x <= 500) | ?"FP QD 50" '50cm 下降 |
FP QR {x} | 追加 | 右移動 | {x} cm 右移動させる。(20 <= x <= 500) | ?"FP QR 50" '50cm 右移動 |
FP QL {x} | 追加 | 左移動 | {x} cm 左移動させる。(20 <= x <= 500) | ?"FP QL 50" '50cm 左移動 |
FP QF {x} | 追加 | 前進 | {x} cm 前進させる。(20 <= x <= 500) | ?"FP QF 50" '50cm 前進 |
FP QB {x} | 追加 | 後退 | {x} cm 後退させる。(20 <= x <= 500) | ?"FP QB 50" '50cm 後退 |
FP QTR {x} | 追加 | 右回転 | {x} 度 右回転させる。(1 <= x <= 360) | ?"FP QTR 30" '30度 右回転 |
FP QTL {x} | 追加 | 左回転 | {x} 度 左回転させる。(1 <= x <= 360) | ?"FP QTL 30" '30度 左回転 |
FP QFL R | 追加 | 右に宙返り | 右に宙返りさせる。(バッテリー残 >= 50%) | ?"FP QFL R" |
FP QFL L | 追加 | 左に宙返り | 左に宙返りさせる。(バッテリー残 >= 50%) | ?"FP QFL L" |
FP QFL F | 追加 | 前に宙返り | 前に宙返りさせる。(バッテリー残 >= 50%) | ?"FP QFL F" |
FP QFL B | 追加 | 後に宙返り | 後に宙返りさせる。(バッテリー残 >= 50%) | ?"FP QFL B" |
FP QG {x} {y} {z} {speed} | 追加 | 三次元移動 | 前に {x} cm、左に {y} cm、上に {z} cm の位置に速度{speed}で移動させる。 (-500 <= x <= 500) (-500 <= y <= 500) (-500 <= z <= 500) (10 <= speed <= 100) ※ x,y,zを3つ同時に-19~19に設定することはできません。 |
?"FP QG 50 50 50 50" |
FP QC {x1} {y1} {z1} {x2} {y2} {z2} {speed} | 追加 | カーブ移動 | 前に {x1} cm、左に {y1} cm、上に {z1} cm の位置を通って、 前に {x2} cm、左に {y2} cm、上に {z2} cm の位置に速度{speed}で カーブを描いて移動させる。 (-500 <= x1 <= 500) (-500 <= y1 <= 500) (-500 <= z1 <= 500) (-500 <= x2 <= 500) (-500 <= y2 <= 500) (-500 <= z2 <= 500) (10 <= speed <= 60) ※ x1,y1,z1を3つ同時に-19~19に設定することはできません。 ※ x2,y2,z2を3つ同時に-19~19に設定することはできません。 |
?"FP QC 20 50 0 60 60 0 50" |
FP QGM {x} {y} {z} {speed} {mid} | 追加 | 三次元移動 (ミッションパッド) ※Tello EDU 限定 |
ミッションパッド{mid}を基準に、 前に {x} cm、左に {y} cm、上に {z} cm の位置に速度{speed}で移動させる。 (-500 <= x <= 500) (-500 <= y <= 500) (-500 <= z <= 500) (10 <= speed <= 100 ) (1 <= mid <= 8) ※ x,y,zを3つ同時に-19~19に設定することはできません。 |
?"FP QGM 50 50 50 50 1" |
FP QCM {x1} {y1} {z1} {x2} {y2} {z2} {speed} {mid} | 追加 | カーブ移動 (ミッションパッド) ※Tello EDU 限定 |
ミッションパッド{mid}を基準に、 前に {x1} cm、左に {y1} cm、上に {z1} cm の位置を通って、 前に {x2} cm、左に {y2} cm、上に {z2} cm の位置に速度{speed}で カーブを描いて移動させる。 (-500 <= x1 <= 500) (-500 <= y1 <= 500) (-500 <= z1 <= 500) (-500 <= x2 <= 500) (-500 <= y2 <= 500) (-500 <= z2 <= 500) (10 <= speed <= 60 ) (1 <= mid <= 8) ※ x1,y1,z1を3つ同時に-19~19に設定することはできません。 ※ x2,y2,z2を3つ同時に-19~19に設定することはできません。 |
?"FP QCM 50 0 50 100 50 50 50 1" |
FP QJM {x} {y} {z} {speed} {yaw} {mid1} {mid2} | 追加 | ジャンプ (ミッションパッド) ※Tello EDU 限定 |
ミッションパッド{mid1}を基準に、 前に {x} cm、左に {y} cm、上に {z} cm の位置に移動してから、 ミッションパッド{mid2}を基準に、 前に 0 cm、左に 0 cm、上に {z} cm の位置に速度{speed}で {yaw} 度回転しながら移動させる。 (-500 <= x <= -20, 20 <= x <= 500) (-500 <= y <= -20, 20 <= y <= 500) (-500 <= z <= -20, 20 <= z <= 500) (10 <= speed <= 60) (1 <= yaw <= 360) (1 <= mid1 <= 8) (1 <= mid2 <= 8) ※ x,y,zを3つ同時に-19~19に設定することはできません。 |
?"FP QJM 200 0 50 50 90 1 2" |
操作: 後方宙返りを飛行計画に追加して実行させます。
動作: Tello が離陸、後方宙返りしてから着陸します。
?"FP QFL B":?"FP QRUN"
操作: 50cm前進、後方宙返り、50cm後退を飛行計画に追加して実行させます。
動作: Tello が離陸、50cm前進、後方宙返り、50cm後退してから着陸します。
?"FP QF 50":?"FP QFL B":?"FP QB 50":?"FP QRUN"
操作: 50cm前進、後方宙返り、50cm後退を飛行計画に追加して実行させます。
動作: Tello が離陸、50cm前進、後方宙返り、50cm後退してから着陸します。
※ 行番号をつけているので IchigoJam BASIC の RUN コマンドで繰り返し実行できます。
NEW 10 ?"" 110 ?"FP QF 50" 120 ?"FP QFL B" 130 ?"FP QB 50" 800 ?"FP QRUN" RUN
操作: 飛行計画を追加して実行させ、15秒(900フレーム)後に全消去します。
動作: Tello が離陸、50cm前進、50cm後退を繰り返しますが15秒(900フレーム)程度経過すると中断して着陸します。
※ 行番号をつけているので IchigoJam BASIC の RUN コマンドで繰り返し実行できます。
NEW 10 ?"" 110 ?"FP QF 50" 120 ?"FP QB 50" 130 ?"FP QF 50" 140 ?"FP QB 50" 150 ?"FP QF 50" 160 ?"FP QB 50" 170 ?"FP QF 50" 180 ?"FP QB 50" 190 ?"FP QF 50" 200 ?"FP QB 50" 800 ?"FP QRUN" 900 WAIT 900:?"FP QCLR" RUN
FP コマンドを使用すると、パイロットのように操縦桿をリアルタイムに操作することができます。
難易度は高いですが、細かな操作が可能になります。
コマンド | 操作 | 説明 | 使用例(IchigoJam BASIC) | |
---|---|---|---|---|
FP INIT | 初期化 | おまじない。他のFPコマンドより前に必ず使用する。 | ?"FP INIT" | |
FP TO | 離陸 | Tello を離陸させる。 | ?"FP TO":WAIT300 | |
FP LD | 着陸 | Tello を着陸させる。 | ?"FP LD" | |
FP N | 操縦桿 | 中立(ニュートラル) | 操縦桿を中立(ニュートラル)にする。 | ?"FP N" |
FP U | 操縦桿 | 上昇方向(100%) | 操縦桿を上昇方向に100%たおす。 | ?"FP U":WAIT60 |
FP D | 操縦桿 | 下降方向(100%) | 操縦桿を下降方向に100%たおす。 | ?"FP D":WAIT60 |
FP R | 操縦桿 | 右移動方向(100%) | 操縦桿を右移動方向に100%たおす。 | ?"FP R":WAIT60 |
FP L | 操縦桿 | 左移動方向(100%) | 操縦桿を左移動方向に100%たおす。 | ?"FP L":WAIT60 |
FP F | 操縦桿 | 前進方向(100%) | 操縦桿を前進方向に100%たおす。 | ?"FP F":WAIT60 |
FP B | 操縦桿 | 後退方向(100%) | 操縦桿を後退方向に100%たおす。 | ?"FP B":WAIT60 |
FP TR | 操縦桿 | 右回転方向(100%) | 操縦桿を右回転方向に100%たおす。 | ?"FP TR":WAIT60 |
FP TL | 操縦桿 | 左回転方向(100%) | 操縦桿を左回転方向に100%たおす。 | ?"FP TL":WAIT60 |
FP {dir}{rat} | 操縦桿 | 指定方向(指定割合) | 操縦桿を指定した方向に指定した割合たおす。 (dir = U, D, R, L, F, B, TR, TL) (rat = 1:20%, 2:40%, 3:60%, 4:80%, 5:100%) |
?"FP U3":WAIT60 |
FP {some} | 任意のTelloコマンドの送信 | Telloコマンド {some} を送信する。 Tello SDK または Tello EDU SDK に定義されているコマンドの送信に利用できる。 |
?"FP rc 50 50 0 0":WAIT60 |
操作: 離陸してから約8秒(500フレーム)待ち、操縦桿を前進方向に1秒(60フレーム)たおし、中立に戻して着陸させます。
動作: Tello が離陸後 約8秒経過すると1秒程度前進してから着陸します。
?"FP INIT":?"FP TO":WAIT500:?"FP F":WAIT60:?"FP N":?"FP LD"
操作: 離陸してから約8秒(500フレーム)待ち、
操縦桿を上昇方向に1秒(60フレーム)、下降方向に1秒(60フレーム)たおす操作をくり返します。
動作: Tello が離陸後 約8秒経過すると2秒程度の上下動をくり返します。
※停止するには、下降中にESCキーでBASICを中断します。
※停止のタイミングによってはTelloが上昇しつづけてしまうことがあるので、天井までの高さが十分な場所でお試しください。
NEW 10 ?"" 110 ?"FP INIT":?"FP TO":WAIT500 120 ?"FP U3":WAIT60:?"FP D3":WAIT60:GOTO120 RUN
操作: 離陸してから約8秒(500フレーム)待ち、
様々な割合で操縦桿を何度か前後にたおし、
中立に戻して着陸させます。
動作: Tello が離陸後 約8秒経過すると速度を変えながら前後に移動してから着陸します。
NEW 10 ?"" 110 ?"FP INIT":?"FP TO":WAIT500 120 ?"FP F1":WAIT120 130 ?"FP B1":WAIT120 140 ?"FP F3":WAIT120 150 ?"FP B3":WAIT120 160 ?"FP F5":WAIT120 170 ?"FP B5":WAIT120 800 ?"FP N":?"FP LD" RUN
FP S コマンドを使用すると、任意のTelloコマンドを送信し、結果を受け取ることができます。
バッテリー残量の確認などに使用できます。
コマンド | 操作 | 説明 | 使用例(IchigoJam BASIC) |
---|---|---|---|
FP S {some} | 任意のTelloコマンドの送信と結果の表示 | Telloコマンド {some} を送信し、結果を表示する。 Tello SDK または Tello EDU SDK に定義されているコマンドの送信に利用できる。 |
?"FP S battery?" |
操作: バッテリーの残量を問い合わせる Telloコマンドを送信します。
動作: Tello が応答すると結果が表示されます。
?"FP S battery?"
FP S battery? OK '96
Tello を ステーションモードに、FruitPunch をアクセスポイントモードにすると
1台のFruitPunch に複数のTello を同時に接続して操作することができます。
※Tello EDU 限定
※レーサースタイルにのみ対応
コマンド | 操作 | 説明 | 使用例(IchigoJam BASIC) |
---|---|---|---|
FP APU {ssid} {pass} | FruitPunch を アクセスポイントモードにする |
FruitPunch を SSID{ssid}、パスワード{pass} のアクセスポイントにする。 ※パスワードは8文字必要。 |
?"FP APU foo bar01234" |
FP {command} | すべてのTelloにコマンドを送る (レーサースタイルコマンドのみ対応) |
FruitPunch に同時接続している すべてのTellに同じコマンド{command}を送る。 |
?"FP TO":WAIT300 |
FP @{id} {command} | 特定のTelloにコマンドを送る (INIT以外のレーサースタイルコマンドのみ対応) |
FruitPunch に同時接続している Tello のうち、{id}番目にだけコマンド{command}を送る。 ※ {id}は0(ゼロ)から始まる。 |
?"FP @0 F1":WAIT60 |
アクセスポイントモード(初期状態)で動作しているTelloに接続します。
?"FP APC TELLO-FFFFFF"
FP APC TELLO-FFFFFF OK '..... 'WiFi connected: 192.168.10.2 'OK
Telloをステーションモードにするコマンドを送信します。
成功すると Tello が再起動します。
※Tello EDU 限定
?"FP INIT" ?"FP ap foo bar01234"
FP INIT OK FP ap foo bar01234 OK
※Telloをアクセスポイントモードに戻すには、電源ON(カメラ右上のLEDが黄色点滅)の状態でLEDが消えるまで電源ボタンを押し続けます。
FruitPunchをアクセスポイントモードにするコマンドを送信します。
ステーションモードのTelloから接続できるようになります。
(接続した Tello の IPアドレスは 192.168.20.100 から接続順に振られます。)
?"FP APU foo bar01234"
FP APU foo bar01234 OK 'WiFi AP started: 192.168.20.1 'OK
操作: 2機のTelloを同時に離陸させ、個別に操作した後、同時に着陸させます。
動作: 2機のTelloが編隊飛行します。
NEW 10 ?"" 110 ?"FP INIT" 120 ?"FP TO": WAIT500 130 ?"FP @0 F": ?"FP @1 B": WAIT60 140 ?"FP @0 B": ?"FP @1 F": WAIT90 150 ?"FP N": WAIT30 160 ?"FP @0 flip f": ?"FP @1 flip b": WAIT180 170 ?"FP LD" RUN
コマンド | 操作 | 説明 | 使用例(IchigoJam BASIC) |
---|---|---|---|
FP VER | バージョンの表示 | 使用中のFruitPunchのバージョンを表示する。 | ?"FP VER" |
FP APD | Tello から 切断する |
ステーションモードのとき: Tello との接続を切る。 アクセスポイントモードのとき: アクセスポイントモードを終了して全てのTelloとの接続を切る。 |
?"FP APD" |
FP SPW {msec} | シリアル通信の設定 | シリアル通信時のWAITを設定する。デフォルトは30msec。 | ?"FP SPW 50" |
FP MAC | MACアドレスの表示 | FruitPunch の MACアドレスを表示する。 | ?"FP MAC" |
FP UDP {host} {port} {msg} | UDP送信 | UDPサーバ {host}:{port} にUDPメッセージ {msg} を送信する。 | ?"FP UDP 192.168.10.1 8889 command" |
FP THOST {host} | コマンド送信先の設定 |
コマンドの送信先となる Tello のホスト名を設定します。(初期値: 192.168.10.1) ステーションモードで接続している Tello にコマンドを送信するときに使用します。 |
?"FP THOST 192.168.20.100" |