【Python】TelloをAWSを使って操作する方法

概要

TelloドローンをAWSを使って操作する方法を説明します.そもそもTelloドローンは4G通信などの移動通信サービスに対応しているわけではなく,実運用において遠隔操作をさせることは考えにくいですが,インターネット上のサービスをトリガにして制御する術を身につけておくことは今後有用的です.

AWS上で操作できれば,いろんなサービスと連携することができます.次回以降は実際にAlexaを使って声でドローンを動かすシステムを作ってみましょう.

使用するドローンについて

中国のスタートアップ企業Ryze Techが開発するTello eduを使用します.

IntelとDJIが技術開発していて公式のSDKが公開されていて,edu版だとv2が使用可能でドローンを子機とした編隊飛行が可能なのでedu版の購入がお勧めです.ドローン制御にはこのSDKを使用するので,事前にgit clone します.環境構築やSDKを用いたPythonでの基本的な飛行や画像ストリーミング方法については適宜SDKのユーザーガイドやTelloに関する別の記事を参照してください.

飛行コマンドについて

Telloクラスのsend_commandメソッドの引数に文字列でコマンドを与えるだけで飛行します.参考までに基本飛行コマンドは以下のようになります.これら以外に回転コマンドや速度を指定して円弧を描き飛行させるコマンドもあるので使い方に合わせて適宜確認しましょう.

Command説明
commandSDKモードを開始
takeoff離陸
land着陸
emergency即座にモーター停止
up x20~500cmの間で上昇
down x20~500cmの間で下降
left x20~500cmの間で左へ飛行
right x20~500cmの間で右へ飛行
forward x20~500cmの間で前へ飛行
back x20~500cmの間で後ろへ飛行

Tello <-> PC <-> AWS 間の通信

接続方法

wifi親機としてTelloを使用しPCとwifi接続する場合,AWSとの接続でwifi接続を使用することが不可能です.そのため,今回はPCとスマホを有線接続しスマホのテザリングを介してPCとAWSが通信できるようにしました.この時,インターネット接続に使用するテザリングサービスの優先度をWifiより高くしなければなりません

ドローンとの通信プロトコル

今回AWSとドローン間の通信にはHTTP通信ではなくMQTT通信を採用しました.HTTP通信より軽量なメッセージプロトコルとされ,文字列コマンドを送る用途であればMQTT通信が適していると考えたからです.MQTTブローカーにchannelを設定し,そのchannel上にpublishされたデータをsubscribeすることでMQTT通信が行われます.簡単に多対多の通信が行えるのが大きな特徴です.

AWSIoTCoreはMQTTブローカーを提供していて,本システムではドローンが飛行コマンドのsubscribe側で,IoTCore上で飛行コマンドのpublishを行いひとまず飛行を確認します.

AWS IoT Core

次にAWSにログインしてIoT Coreを開き,モノとしてDroneを登録します.

証明書を作り,ポリシーをアタッチし,証明書をアクティブにします.細かい手順はこの記事がとても参考になります.(参考URL)

証明書は後で使うので絶対にダウンロードします.

Tello制御用プログラム

TelloSDKがpython2系に準拠しているようなのでライブラリ等は2系に合わせるようにすべきだと思います.以下のコマンドを実行してIoT Core用のライブラリを入れておきましょう.

$ pip install AWSIoTPythonSDK

証明書やTello.pyがあるディレクトリ(例.Single_Tello_Testなど)に以下の制御プログラムを書けばOKです.

テスト

テストをします.まず上記のPythonコードを実行して,Telloとの接続を確認しておきます.次にIoT Core上のテストタブを開きチャンネルを指定した後,飛行コマンドを”message”の値に文字列で指定しトピックに発行するだけです.

実際の動作を動画でまとめました.

まとめ

AWS IoT Core上からコマンドを入力してTelloの飛行に成功しました.次はAlexaと連携してみましょう.

この記事が役に立ったという方はツイートで拡散しよう!

この記事を書いた人

正田 孝平

メーカー勤務 ソフトウェアエンジニア
AI,IoT,web最新技術の活用術、キャッシュレス決済と資産運用の最新トレンドや語学学習法について発信。大学在学中は人力飛行機の製作、webアプリ開発に積極的に携わった。
【趣味】
ゴルフ・温泉巡り