スマートスピーカーで音楽を再生すると踊り出すロボ(PLEN5Stack - Alexa間の連携)

© CC BY 4+ visibility1636
© CC BY 4+
visibility1636

Alexa Gadgets Toolkitを活用し、Alexaスキルを起動することなく、ふつうのAlexaとのやりとりに合わせてPLEN5Stackが動くような仕組みを構築しました。

link https://www.youtube.com/playlist?list=PLpHoY5ZzcIibNCqB-iSNZTmZ5FL3OBLtg
  • みそ賞 by 田中みそヒーローズ・リーグ オンライン2020
動画
開発素材

ガジェット

デバイス

システム構成
system image

ロボは、PLEN5Stackを使用しています。
このPLEN5Stack内にAlexa Gadgets Toolkitのコードを組み込んでAmazon Echo - PLEN5Stack間のBLE連携を実現しています。

実装は、こちらの記事が大変参考になりました。
ESP32をAlexa Gadgets Toolkitデバイスにしよう
ESP32をAlexa Gadgets Toolkitデバイスにしよう:ソースコード解説
ESP32をAlexa Gadgets Toolkitデバイスにしよう:カスタムスキル→Alexa Gadgetデバイスへの通知
ESP32をAlexa Gadgets Toolkitデバイスにしよう: Alexa Gadgetデバイス→カスタムスキルへの通知

[2020/11/21]構成イメージの画像を追加しました。
[2020/11/29]参考URLを追加しました。 [2020/12/06]新たな動画をYoutubeにアップしました。作品URLにYoutubeの動画リストへのリンクを記載しました。

ストーリー

経緯

単純に、部屋にロボットがいたら生活が豊かになるかな、と思ってPLEN5Stackを購入しました。
で、ロボットを購入したからには、何かしらプログラムを流し込んで動かしてみたくなるのがエンジニアの性というものです。私はAlexaスキル開発の知見をある程度もっているので、せっかくだからAlexaの連携にトライしてみるか、と考えるに至りました。
Alexa Gadets Toolkitの存在は知っていたので、それを使ってロボット連携してみよう、ということで作成したのが今回の"音楽をかけたら踊り出すロボ"というわけです。

解説

概要

Alexa開発ではデバイスからのレスポンス発話や画面表示を比較的自由に作成することができるわけですが、それは基本的にはAlexaスキル内の話、というのが前提となっています。

しかし、Alexa Gadgets Toolkitを活用することで、この「Alexa開発はAlexaスキル内に限る」という制約から解放されます。 具体的には、Alexa Gadgets Toolkitを活用することで、ガジェット側は(スキル起動時に限らず)Alexaのネイティブ機能実行時のイベントを受け取ることができるようになります。このイベント情報受領をトリガーにした処理を実装することで、Alexaと連携するデバイスを開発することができるわけです。

Alexa Gadgets ToolkitではいくつかのAlexaネイティブ機能に関するイベントを取得できますが、今回は以下の2つを実装しました。

  • ウェイクワード検出時( = "アレクサ、…"と呼びかけたとき)にロボを動かす
  • Amazon Musicでのテンポデータ検出時( = Echoから音楽を流した時)にPLEN5Stackにダンスさせる

アクセス可能なAlexaネイティブ機能について

※このセクションは2020/11/29に作成しました

Alexa Gadgets Toolkitでアクセスできる主なAlexaネイティブイベントは以下の通りでした。

  • アラーム関連機能(アラーム、タイマー、リマインダー)の設定/削除
  • ウェイクワード検出(「アレクサ」発話を聞き取った時/発話を聞き終えた時)
  • 再生中の曲のテンポデータ検出(Amazon Music再生/停止時)
  • 発話のスピーチマークデータ(リップシンクに活用するためのデータ)
  • 通知の取得/削除
  • 現在時刻取得(30分ごとに自動取得)

詳しくは、以下の公式ドキュメントを参照ください。
Alexa Gadgets Toolkitの定義済みインターフェース

今後の見通し(※最終更新:2020/12/06)

今回は簡単なサンプルレベルですが、今後は以下のようなことに挑戦してみようかなと思っています。

  • 取得した曲のテンポに合わせ、PLEN5Stackのダンスを変化させる
  • Amazon Echoで設定したアラーム時刻になったら、PLEN5Stackの方からも音を鳴らしたり、通知を送ったりする

また、Alexaスキル連携すれば、ガジェット→Alexaという方向での連携も可能になります。 例えば、ガジェットについているセンサーが一定条件を満たしたらAlexa側にイベントを送る、というようなことが可能です。
こちらについても良いアイデアが浮かんだら挑戦してみようかなと思います。

[2020/12/06追記]
以下が実現できました。

  1. 取得した曲のテンポに合わせ、PLEN5Stackのダンスを変化させる(すみません、動画等ないです…)
  2. PLEN5Stackに適当な相槌を打たせる(MP3の再生)
  3. アラーム、リマインダー、タイマーとの連動
  4. Alexaスキルと連携し、カスタムイベントのやりとりをする

2〜4についてはYoutubeに動画アップしましたので、もしよろしければご覧ください。

メンバー
  • user
    イガラシ ユウスケ @igarashisant

関連イベント
  • event ヒーローズ・リーグ オンライン20202020-09-07 開催
  • event 北海道情報大学 湯村研究室のスキルアップゼミで紹介された作品2023-06-20 開催
関連リンク
user
みそ賞 by 田中みそ @ヒーローズ・リーグ オンライン2020

Alexa(Alexa Gadgets Toolkit)、M5Stack、ロボットと、私の琴線に触れまくりな作品でした。
スマートスピーカーの新たな可能性を想像せざるを得ない、とてもワクワクさせられる素晴らしい作品だったと思います。


同じニオイがする作品
  • event 熊手のIoT化によるアップデート
  • event irBoard ver 2.0 リニューアル版
  • event opniz
  • event 歩行リハビリエンタメシステム Melody Shoes

Proto lovers ♥
user
user
user

イベントまとめ

コンテストまとめ

作品を登録しよう

モノづくりしている人に、つくった作品を見てもらえ、リアクションがもらえるかも?

close

目次


Proto lovers ♥
user
user
user