【AWS×Tello×Alexa】声でドローンを操作してみた

はじめに

本記事は前章の内容が前提なので,まだ読まれていない方はまずそちらをご覧ください.

システム構成図

Lambda

Alexaスキルのバックエンドであるところのlambdaのコードを書いていきましょう.といっても完成形書いたので参考までに載せます.

抜粋して説明

session_attributes:セッション中に保持できる変数群

今回はslot名を保持させています.今回,距離と方向がセットで入力されるべきところをどちらか一つしか言わなかった場合に言わなかった方について再度訊ねるようにしています.その際既に言った項目についてセッション中に短期記憶させる必要があり,session_attributesはそれに用いることができます.(126~128行目でsession_attributesをリセットさせたかったのですが,リセット方法がわからず,無理やりNoneを代入しています.簡単にリセットできる方法をご存知の方教えて下さい)

session_attr = handler_input.attributes_manager.session_attributes
slots = handler_input.request_envelope.request.intent.slots

resolutions: エンティティ解決(←名前だけじゃピンときませんね)

slot値に対してその同意語を設定している場合,それらを一つのグループIDとして認識させたい時があります.例えば,「うえ」というslot値に対して「上昇」「上方」という同意語を登録した場合,それらをグループIDとして「up」を登録しておけば,「上昇」と言った場合でも「うえ」と言った場合でもID「up」として認識することができます.つまりドローンにコマンドとして送信する時,「上」と言った場合でも「上昇」と言った場合でも「up」を送信できるように組み込めます.

direction = slots["direction"].resolutions.resolutions_per_authority[0].values[0].value.name

IoTCoreとの通信

以上です.ちなみにlambdaに,IoTCoreへのpublishを許可するポリシーをアタッチしたロールを指定するようにしてください.そうしないと通信できないので気をつけてください.subscriberの方のコードは前章前々章の内容をそのまんま参考にすればドローンと通信できるようになります.

まとめ

動画で完成形を見てみましょう.

次の章では画像から何か判断してドローンにフィードバック制御するようなシステムを構築しましょう↓

この記事を書いた人

正田 孝平

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