[Workshop] The future: Where smart home meets AI-powered robots に参加しました #IOT302 #AWSreInvent
re:Invent 2024 現地参加してきたカスタマーサクセス部 運用支援チームのいたくらです。
「IOT302 | The future: Where smart home meets AI-powered robots」に参加したのでレポートします。
セッション情報
- セッション ID : IOT302
- タイトル: The future: Where smart home meets AI-powered robots
- スピーカー: Aaron Su, Adam Purdie
- レベル: 300 – Advanced
ワークショップの概要
In this workshop, embark on a journey into the future of smart homes by bringing cloud-connected robots to life. Use AWS IoT Core to seamlessly integrate a robotic companion into a home network. Unlock its full potential with AWS IoT Greengrass, deploying cutting-edge AI capabilities like vision processing and natural language interaction powered by Claude 3, a multi-modal large language model. Witness your robotic assistant choreograph delightful dance routines and respond to your commands with the magic of Amazon Bedrock generative AI. Finally, explore innovative IoT scenarios including intelligent appliance control orchestrated by your cloud-connected robotic companion.
このワークショップでは、クラウド接続のロボットを活用してスマートホームの未来へと旅に出ます。AWS IoT Core を使用して、ロボットコンパニオンをホームネットワークにシームレスに統合します。AWS IoT Greengrass でその潜在能力を最大限に引き出し、最新の AI 機能(Claude 3 というマルチモーダル大言語モデルを活用したビジョン処理や自然言語処理など)をデプロイします。Amazon Bedrock の生成 AI の魔法で、ロボットアシスタントが素晴らしいダンスルーティンを振り付け、コマンドに応じて反応するのを体験してください。最後に、クラウド接続のロボットコンパニオンによって調整されるインテリジェントな家電制御を含む革新的な IoT シナリオを探索します。
内容
アジェンダ
アジェンダは以下の通りです。
※ アジェンダのタイトルは英語でしたが、本ブログでは日本語訳で記載しています。
- 1.pupper ロボットを接続する
- 2.スマートボタンを接続する
- 3.ロボットに知能を追加する
- 4.ストレッチゴール
- 5.音楽に合わせて動く
ワークショップ手順で寄り道しながら実施していたら時間が足りなくなり、3 の途中までしか終わらなかったため、本ブログでは 3 の途中までの内容を紹介します。
pupper ロボットを接続する
ワークショップ会場に着くと、各テーブルに pupper ロボット(以降、pupper と記載)が 3 台置かれていました。
pupper の台数と参加者の数が一致しないため、2 人 1 組でワークショップを進めることになりました。
自分はワークショップの待機列で偶然出会ったよなみねさんと一緒にワークショップを実施しました。
pupper には Ubuntu Linux 22.04 を実行する Raspberry Pi が搭載されていました。
また、Jupyter Notebook が提供されていて、AWS Greengrass をインストールすることで AWS に接続できるようになっていました。
■ Greengrass をプロビジョニングする
まずは Jupyter Notebook を使用して、Greengrass をプロビジョニングするところから始めました。
Jupyter Notebook に含まれているコードを実行することで、pupper を動かす Raspberry Pi コンピューティングモジュールで ROS を実行し、ESP32 を接続して、ESP32 が MQTT ブローカーと通信するための設定をしました。
すべてのコードを実行後、Greengrass コアデバイスを確認すると、pupper が登録されていることが確認できました。
これで Greengrass のプロビジョニングは完了しました。
■ Greengrass を使用してロボットオペレーティングシステム(ROS)を起動する
次に Greengrass でコンポーネントを作成し、それを pupper にデプロイして、ROS システムを実行しました。
pupper が IoT Core サービスに接続するために使用するエンドポイントと、あらかじめ用意されていたコンポーネントの定義(YAML)を使用して、コンポーネントを作成しました。
作成後、pupper にデプロイした結果が以下です。
ROS2Launch
がコンポーネントに反映されていることが確認できました。
pupper 上で ROS が動作しているか確認するため、MQTT テストクライアントを介して pupper にメッセージを送信します。
メッセージを送信したときに応答が表示されるように Echo トピックをサブスクライブしました。
ここまで実施したことで POS システムが実行されるようになったため、pupper をトリガーにして写真を撮影し、撮影した画像の分析のために Lambda 関数に送信できるようになりました。
pupper のトリガーは「pupper の頭部にあるカメラが人物の顔を映し、pupper の背面近くにあるタッチセンサーに触れる」というものです。
実際に試してみると、pupper は周辺を見回して、人物を見つけるとその人物を数秒間観察し始め、その後分析のために画像を Lambda 関数に送信していました。
実は人物を観察しているときに写真を撮影していて、S3 にその画像がアップロードされていました。
ぼかし越しでも分かるめちゃくちゃ楽しそうなよなみねさんと、ブログ用の写真を撮るのに必死な自分がしっかり撮影されていました。
(ブログに載せるにあたりぼかしを入れましたが、原本はぼかし無しの写真でした)
最終的には pupper が撮影した画像を分析のために Lambda 関数に送信し、pupper が画像の内容に反応するようになりますが、この時点では画像を S3 に保存するまでしか実装していません。
ですが、コマンドを手動で作成して pupper に送信して動作テストすることはできます。
次のコマンドを入力して Publish してみました。
すると pupper は嬉しそうな顔で、立つ → 座る という動作をしながら、「Hi there, Iam Mini-pupper. Nice to meet you.」と喋りました。
コマンドの "HAPPY"
を別のワードへ変更すると他の顔も試せると手順書に記載があったので、どのような顔が用意されているのか気になって、全部試してみました。
上段左から HAPPY、SAD、NEUTRAL、下段左から CONFUSED、SCARED、ANGRY だそうです。かわいいですね。
スマートボタンを接続する
■ スマートボタンを IoT デバイスとして登録する
登録途中でデバイス証明書とキーファイルをダウンロードしつつ、まずは button という IoT Things を登録しました。
■ 物理デバイスに資格情報をプロビジョニングする
マイクロ USB ケーブル経由でスマートボタンの電源を入れて、ワークショップ会場の Wi-Fi に接続しました。
スマートボタンの裏面に記載されている IP アドレスにポート 80 で接続し、先ほどダウンロードしたデバイス証明書とキーファイル情報を入力しました。
Submit 後、Success! という画面が表示され、資格情報のプロビジョニングが完了しました。
■ デバイスシャドウを見て接続をテストする
コンソールのデバイスシャドウを使用して、接続をテストしました。
デバイスシャドウは IoT デバイスの状態を保存・追跡するためのJSON ドキュメントです。
スマートボタンの Boot ボタンと呼ばれる部分を長押ししたりして、button のステータスが true / false に変化することを確認しました。
ロボットに知能を追加する
pupper が顔を見つけるまで周囲を見回して、見つけたら数秒間その人を観察して、その画像を Amazon Bedrock の視覚対応 LLM に送信して分析し、最終的に LLM は pupper に取るべきアクションを含んだ応答を送り返す。というアーキテクチャを構築しました。
構成図は以下です。
■ Amazon Bedrock とマルチモーダルビジョン
今回は Claude 3 Haiku を使用しました。
Bedrock のプレイグラウンドで、先ほどのよなみねさんの画像をアップロードして、プロンプトに「Describe the image」と入力して試しに実行してみた結果が以下です。
出力結果の日本語訳は以下です。
とても正確に説明されていて驚きました。
この画像には、会議またはイベント会場と思われる場所で、驚いたり興奮したりしている表情をしている、巻き毛の笑顔の若い男性が写っています。背景には他の人々も見え、会議またはコンベンションの典型的な照明や装飾も見られます。
この画像分析機能を Lambda に追加しました。
追加作業としては、あらかじめ準備されていた python ファイルを追加したり、ソースコードを置き換えたりしました。
Lambda 関数が更新できたか、MQTT テストクライアントを使用して確認しました。
「I see you have your hands up. I am raising my paws too!」というメッセージを受信できているので、Lambda 関数の更新は成功していそうでした。
ワークショップの時間内に実施できたのはここまででした。
以降、どのような内容が用意されていたのか箇条書きで簡単に紹介します。
- pupper がさまざまのジェスチャーを検出したときに実行するコマンドをカスタマイズ
- 知能を追加した pupper を直接起動
- 知能を追加した pupper をリモート起動
最後に
昨年 re:Invent に参加したときに IoT 系ワークショップって楽しいなと思い、今年も 1 つくらい参加しようと思い参加してみました。
昨年受けたワークショップも IoT と AI と組み合わせたものだったので、実生活においてもそれが普通になってきたのかなと感じました。
こういったデバイスを用意して、手を多く動かすタイプのワークショップは現地参加ならではだと思うので、IoT 系ワークショップが気になった方は是非来年参加してみてください。
この記事がどなたかのお役に立てれば幸いです。
おまけ
最後まで進められた人たちの pupper を集めて、音楽に合わせて躍らせていたのがおもしろかったので一部紹介します。
少し怖いけどかわいさも感じますよね。我らの pupper も躍らせたかったです。
アノテーション株式会社について
アノテーション株式会社はクラスメソッドグループのオペレーション専門特化企業です。
サポート・運用・開発保守・情シス・バックオフィスの専門チームが、最新 IT テクノロジー、高い技術力、蓄積されたノウハウをフル活用し、お客様の課題解決を行っています。
当社は様々な職種でメンバーを募集しています。
「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、アノテーション株式会社 採用サイトをぜひご覧ください。