トイドローン Tello をビジュアルプログラミングツール Node-REDで制御してみよう 第2回 離着陸編

こんにちは、田中です。トイドローン Tello をビジュアルプログラミングツール Node-REDで制御してみよう 第2回です。

それでは、TelloとNode-REDともに準備が整ったということで、進めていきましょう。

今回の流れ

今回はいよいよ動かしていきます!

image

TelloをノートPCをWi-Fiでつないで、Node-REDではUDPノードで離着陸命令をして操作します。

今回の実験は室内での広い場所で行いましょう

はじめる上で一つ注意点があります。 今回の実験は室内での広い場所で行いましょう。

というのも、私も屋外でやってみたのですが、まずノートPCを屋外で利用するのは落下が怖いだけでなく、Telloもトイドローンなだけに外の環境を受けやすいためです。

その中でも風の影響は受けやすく、たとえば風に流されて障害物に当たって痛めてしまうのは悲しいですよね。風に流されると人に当たってしまってケガをさせてしまうこともあるので、取り扱いには十分気をつけましょう。

image

ちなみに私の場合は、家の寝室のお布団の上でやるのがお気に入りです。

万が一、着地失敗してもふわっとしてますし、少なくともお布団のエリアは上空が空いていることが多いので障害物の心配も少なくすむためです。

Node-REDを起動

Telloをつなぐ前にNode-REDの準備します。

image

Node-REDを起動しましょう。起動に仕方については1回目の記事で紹介されておりますので参考ください。

トイドローン Tello をビジュアルプログラミングツール Node-REDで制御してみよう 第1回 準備編

Node-REDのノードをインポート

Node-REDには他の方が作った仕組みをインポートする機能があります。

image

まず右上のメニューを表示します。

image

こちらにインポートという機能があり、ClipBoardというところをクリックします。

image

このようにフローデータをコピーペーストする画面が表示されます。インポートするソースはこちらです。


[
    {
        "id": "ae2761b3.f2125",
        "type": "udp out",
        "z": "be3e7c4f.c65a1",
        "name": "",
        "addr": "192.168.10.1",
        "iface": "",
        "port": "8889",
        "ipv": "udp4",
        "outport": "",
        "base64": false,
        "multicast": "false",
        "x": 530,
        "y": 300,
        "wires": []
    },
    {
        "id": "19f04ccb.e93973",
        "type": "inject",
        "z": "be3e7c4f.c65a1",
        "name": "takeoff",
        "topic": "",
        "payload": "takeoff",
        "payloadType": "str",
        "repeat": "",
        "crontab": "",
        "once": false,
        "x": 144,
        "y": 309,
        "wires": [
            [
                "ae2761b3.f2125"
            ]
        ]
    },
    {
        "id": "41b0c9c6.93bdc8",
        "type": "inject",
        "z": "be3e7c4f.c65a1",
        "name": "land",
        "topic": "",
        "payload": "land",
        "payloadType": "str",
        "repeat": "",
        "crontab": "",
        "once": false,
        "x": 144,
        "y": 369,
        "wires": [
            [
                "ae2761b3.f2125"
            ]
        ]
    },
    {
        "id": "69434f4c.52899",
        "type": "inject",
        "z": "be3e7c4f.c65a1",
        "name": "command",
        "topic": "",
        "payload": "command",
        "payloadType": "str",
        "repeat": "",
        "crontab": "",
        "once": false,
        "x": 140,
        "y": 240,
        "wires": [
            [
                "ae2761b3.f2125"
            ]
        ]
    }
]

こちらをまずコピーして先ほどの画面に戻ります。

image

赤枠のところにペーストして、インポートボタンが押せるようになるので押してインポートします!

image

ペーストされるので、マウスに追従しているので、配置をクリックして決めます。

image

忘れず、デプロイボタンを押してフローを反映させましょう。

image

これで準備完了です!

フローの仕組み

準備は完了していますが、簡単な仕組みの説明を。

image

今回のフローはこんな感じです。

右側のUDPノード

image

右側のUDPノードがノートPCがTelloにつながっていると、UDPという通信方法でTelloに命令します。

このUDPノードをダブルクリックしてみましょう。

image

設定画面では、すでに設定がされています。

TelloのAPI仕様に合わせて、192.168.10.1のIP、ポートは8889でつながるようにしています。設定を確認をしたら今回は何も設定していないのでCancelボタンを押して戻ります。

命令内容は、このあとのinjectノードが決めて伝えてくれます。

左側のノードは injectノード

image

左側のノードは injectノードと言って、ノードで設定した文字列やタイムスタンプなどの情報を右側の流れに伝えていく機能を持っています。

image

例えば、commandと書かれたinjectノードをダブルクリックします。

image

設定画面では、すでに設定がされています。文字列 command を送る動きになっています。設定を確認をしたら今回は何も設定していないのでCancelボタンを押して戻ります。

image

送り先は左から右にデータが流れるので、このとおりUDPノードに伝えられます。

image

ということで、今回は、

  • command コマンド
    • Telloに「このノートPCから指示を出すよー」という最初のごあいさつ
  • takeoff コマンド
    • Telloに「離陸してねー」という指示をする
  • landコマンド
    • Telloに「着陸してねー」という指示をする

の3種類を行うように作ってあります。

ノートPCでTelloと接続

では、つづいてTelloを起動してWi-Fiが使える状態してノートPCでTelloと接続していきます。

なぜTelloを先につないでおかないかというと

  • Telloの充電は10~15分程度で消費されてしまって、うっかりするとNode-RED設定中に電池を消費してもったいない
  • 経験則でしかないが電池が少なくなってくるとWi-Fiの命令が伝わりにくくなるので電池消費は最小限にしたい
    • Wi-Fiの命令が伝わりにくくなると、最悪、制御不能になって浮きっぱなしになる可能性もあるので注意

といった意図があります。いざ、やってみるぞという、ここぞというタイミングでTelloを起動しましょう!

Telloの起動

前回の記事で、スマホアプリとの接続実験をしているとおもわれますので、それと同様にまずTelloにバッテリーを差し込んでTelloを起動してください。

今回は操作が混乱しないようにスマホアプリとは接続しないで待っていましょう。

image

たとえば、私のWindowsデスクトップの様子。

image

ノートPCでTelloのWi-Fiを探して接続します。

いよいよ動かしてみる

image

さてこれでノートPCとTelloがつながりました。いよいよ操作してみます。

image

さきほどのNode-REDに戻ってフローを確認します。

image

indectノードから命令を出すのは、injectノードの左の四角はボタンになっていてこれを押すとデータが送られます。

まずはごあいさつ command

Node-REDで命令を出してみましょう。

image

commandのinjectノードを押します。これで、Telloに「このノートPCから指示を出すよー」という最初のごあいさつをします。

ここではあまり変化はありません。

離陸 takeoff & 着陸 land

image

つづいて、離陸です!ここでいよいよ動くので、周辺にはお気をつけください。上に障害物がないか確認しましょう。

> 私は、最初に動かした時に、机に上にぽんっと置いていたので、手元で急に離陸して、危うく突撃を食らうところでした。あぶない。

image

takeoffのinjectノードを押してみましょう!Telloに「離陸してねー」という指示がされます!

image

ではひとしきり離陸を眺めたあとは着陸しましょう。

いま離陸で浮いているところから直下にゆっくりと着陸します。下に障害物がないか確認しましょう。

image

landのinjectノードを押してみましょう!Telloに「着陸してねー」という指示がされます!

実際の様子です。

無事動きましたね!

ということで、 Tello と Node-RED で離着陸の操作ができました!

今回の、コマンド開始→離陸→(なにかする)→着陸は基本的な動作なので、しっかり体験しておきましょう。

次回はTello APIの他のコマンドも見ながらより突っ込んだ操作をしていきます!


この記事を書いた人
SeigoTanaka
2004年よりフリーランス。以後、FLASH制作を中心にインタラクティブコンテンツを主に行い現在に至る。最近ではWEBフロントエンドをベースにしながらも、情報とインターフェースが合わさるアプローチという視点でIoTやMixed Realityといった技術も取り入れながら活動しています。ウォンバットが好き。 2018-2019 Microsoft MVP ( Windows Development ) 2018-2019 IBM Champion。

週1日~/リモートの案件に興味はありませんか?

週1日~/リモートの関わり方で、「開発案件」や「企業のIT化や設計のアドバザリーなどの技術顧問案件」を受けてみませんか?副業をしたい、独立して個人で仕事を受けたエンジニア・デザイナー・PM・技術顧問の皆様のお仕事探し支援サービスがあります。

お仕事をお探しの方へ

お仕事をお探しの方(無料登録)
法人の方(IT課題の相談)