ロボット - TECH PLAY - TECH PLAY

TECH PLAY

ロボット

イベント

マガジン

技術ブログ

ミイダステックチームです! ミイダス開発部では、定期的にエンジニアのスキルアップや最新技術の知見共有を目的とした社内勉強会を開催しています。
はじめに 近年、生成AIやLLM(大規模言語モデル)の急速な普及を経て、テクノロジーの潮流は単なる「テキスト対話」から、自律的に判断して行動する「Agentic AI(エージェント型AI)」や、リアルな物理環境と連動する「Physical AI(物理AI)」へと決定的な進化を遂げています。 NVIDIAと聞くと「高性能なGPUを供給するハードウェアベンダー」というイメージを持ちがちです。 しかし、NVIDIAの研修(正確には研修を受けるための事前課題)を受けてみると、その真価はGPU単体だけではなく、GPUを取り巻くメモリやネットワークを含むハードウェア、GPUを最も有効に利用できる
日々進歩するAIの自分を凌ぐ優秀さを目の当たりにして 早くすべての仕事を奪ってくれないかなと思っているみなさん、 こんにちは、ソリューションアーキテクトの伊勢です。 AIは文章を書き、画像を作り、コードも書くようになりました。 次は、現実世界を認識して自分で考え、身体を動かす「フィジカルAI」の番です。 ただし、ロボットを夏休みの自由工作で作るには、少々お小遣いが足りません。 そこで今回は、AIに頭脳を、iPhoneに目と耳を、ヒトに足を担当してもらいます。 ヒトはAIの指示どおりにチェックポイントを周り、ゴールを目指します。 コースは世界一の乗降者数を誇る巨大ターミナル、新宿駅です。 果たしてヒトはフィジカルAIに進化するのでしょうか。 はじめに フィジカルAIとは オリエンテーリングとは REST APIのアップストリームとは iPhoneショートカットとは 作ってみた 全体構成 地図 プラグイン:intdash REST Plugin 設定画面 送受信履歴 iPhoneショートカット データ送信 データ取得 やってみた Data Visualizerで振り返る おわりに はじめに フィジカルAIとは フィジカルAIは、現実世界を認識し、推論し、行動するAIシステムを指します。 ロボットや自動運転車のように、センサーから得た情報をもとに判断し、現実世界へ働きかける仕組みです。 www.nvidia.com 今回は役割を次のように分担します。 フィジカルAIの役割 今回の担当 現実世界を認識する iPhoneカメラ 状況を考えて次の行動を決める サーバーサイドAI 現実世界で行動する ヒト ロボットのボディを用意する代わりに、私が歩きます。 言い換えると Human in the Loop のLoop部分がずいぶん大きく新宿を一周します。 オリエンテーリングとは オリエンテーリングは、地図を読みながら指定されたチェックポイントを順番に巡り、ゴールを目指すスポーツです。 日本オリエンテーリング協会 選手は地図に記されたコースと目標物の情報から、現在地や進む方向を判断します。 今回はこの 地図を読む/次の行動を決める/目標物を確かめる をAIへ任せます。 舞台は新宿駅東口から歌舞伎町、新宿御苑、新宿駅南口・西口を経て都庁へ向かう全11ポイントのコースです。 1 自律稼働するフィジカルAIを模して、AIから送られてくる指示だけを頼りに進みます。 REST APIのアップストリームとは AIとヒトの間にintdashを挟みます。 intdashにおけるアップストリームは、デバイス側からプラットフォーム側へデータを送信する方向のストリームです。 今回はiPhoneから写真を送り、別のエッジからAIの指示・目標物画像・写真の判定結果を返します。 REST APIによるアップストリームは、HTTPで手軽にデータを送信でき、低頻度データの送信や簡単な検証に向いています。 tech.aptpod.co.jp iPhoneショートカットとは 複数の操作を組み合わせて自動化できるApple純正アプリです。 カメラで撮影した画像をAPIへ送信したり、APIから受け取った結果の表示を画面上で組み立てられます。 AIがアプリを作ってくれる時代とはいえ、専用アプリで収集データを追加するのはそれなりの開発コストが発生します。 今回は複数データの収集を素早く試すため、ショートカットから利用できるプラグインアプリとして実装しました。既存機能を活用して実装コストを抑えられます。 2 作ってみた 全体構成 今回の構成は次のとおりです。 全体構成図 AIがルートマップを読み、各区間の移動指示と目標物画像を準備 intdashを経由して、次のチェックポイント番号・移動指示・目標物画像をiPhoneへ送る ヒトが指示に従って歩きいて現地で写真を撮る iPhoneから現地写真をintdashへ送る AIが目標物画像と現地写真を照合する 一致すれば次のチェックポイントへ進み、不一致なら再挑戦する サーバー側ではPythonプログラムでAI中継処理を動かしました。 このプログラムがintdashとAIをつなぎ、ルート案内、写真照合、チェックポイント進行、休憩・再開を管理します。 要するにAIが「次はあっちです」と言い、私が歩き、AIが「そこです」と判定します。 地図 ルートマップにはコース、チェックポイント、目標物の写真をまとめています。 オリエンテーリングのルートマップ 地図画像は最初に一度だけAIへ渡します。 AIは全区間の移動指示を生成し、各チェックポイントの目標物を切り抜きます。 生成したルート情報と画像は保存し、レース中は再利用します。 AIは地図をかなり読んでくれましたが、高架道路の上下関係や階段の進行方向などは、画像だけでは判断しにくい部分があります。 そこで確認済みの情報は補足テキストで渡し、地図の読み違いを減らしました。 地図はOpenStreetMapをもとに、オリエンテーリング国際仕様を参考に作りました。 3 地図データ © OpenStreetMap contributors を利用しています。 4 プラグイン:intdash REST Plugin iPhoneの「ショートカット」からintdash REST APIを使えるようにするため、SwiftUIでプラグインアプリを試作しました。 5 巡回地点で写真などを送りたいという要望があり、試しに作ったものです。 アプリにApp Intentsを組み込み、ショートカットから呼び出せるようにしました。 送信する数値・文字列・画像を送信リストへ追加する 複数のデータを同じ時刻でまとめて送信する 最新の計測から指定したデータを取得する 計測を完了する 対応する値は int64 、 float64 、 string 、JPEGです。 そのため、位置情報、歩数、気温、住所、音声認識結果、写真など、ショートカットが扱えるさまざまな情報をintdashへ渡せます。 設定画面 接続先情報、送信エッジUUIDなどを指定します。 プラグインの設定画面 送受信履歴 計測の作成・完了、データID、値、サイズ、通信時刻、成否を確認できます。 ログはJSONとして書き出せるので、「ショートカットは動いたように見えるけれど、実際に何を送ったのか」を後から追えます。 プラグインの送受信履歴画面 iPhoneショートカット ショートカット側では、iPhoneの標準機能とプラグインを組み合わせます。 データ送信 現地写真に加えて、緯度・経度・高度、住所、歩数、移動速度、気温、湿度、体感温度、バッテリー残量、音声メモを送信できるようにしました。 送信したい項目を並べ、最後に「データ送信」を1つ置きます。 ショートカットがデータを集めて、プラグインがintdashと通信します。 iPhoneショートカットのデータ送信 データ取得 AI側からは、次のチェックポイント番号、移動指示、目標物画像、写真判定、判定信頼度、判定理由を受け取ります。 JPEGも実行結果として表示できるため、次の目標物を確認できます。 iPhoneショートカットのデータ取得 やってみた それでは、人力フィジカルAIを起動します。 AIが最初の指示と目標物画像を送信し、ヒトが歩き始めます。 チェックポイントに着いたと思ったら写真を撮影し、AIへ送ります。 AIは目標物と写真を照合し、一致と判断すれば次の指示を返します。 似ているけれど違う場所では先へ進めません。 人間の「たぶんここでしょ」に対して、AIの方が几帳面です。 途中で「暑いのでちょっと休憩したい」と音声メモを送ると、AIは写真判定を止め、休憩と水分補給を案内します。 「休憩が終わった」と送ると、現在の移動指示と目標物画像をもう一度送って再開します。 6 スタートからゴールまでの様子を動画にしました。 youtu.be 動画の台本案もChatGPTをベースにしています。 AIに指示されて歩く動画を、AIと相談しながら編集しました。 7 Data Visualizerで振り返る レース中に送受信したデータを同じ時間軸に並べて確認できます。 intdash Data Visualizerのレース全体画面 画面には、大きく分けて次のデータを表示しています。 担当 表示データ わかること ヒト+iPhone 緯度・経度・高度 どこを移動したか ヒト+iPhone 歩数・移動速度 いつ歩き、いつ止まったか ヒト+iPhone 気温・湿度・体感温度 どのような環境だったか ヒト+iPhone バッテリー残量 ゴールまで持ちそうか ヒト+iPhone 現地写真・音声メモ 何を見て、何を伝えたか AI チェックポイント番号・移動指示 何をさせようとしたか AI 目標物画像 何を探させたか AI 写真判定・信頼度・判定理由 なぜ次へ進めたか AIが送った目標物画像と、ヒトが撮った写真を並べると照合の流れがわかります。 撮影写真照合NG 撮影写真照合OK 信頼度と理由も残しているため、AIが判断した根拠を後から確認でき、 途中で何が起きていたかをデータとして振り返れます。 おわりに 今回は、AIにルートマップを読ませてオリエンテーリングをしてみました。 AIは次の目的地を考え、目標物を示し、現地写真を判定します。 iPhoneは周囲の情報を集め、指示を表示します。 そしてヒトは歩きます。 ヒトはフィジカルAIに進化したのでしょうか。 残念ながら、私の脚力は一切アップデートされませんでした。 ただし、AI、スマートフォン、通信基盤、そしてヒトを組み合わせることで「認識・推論・行動」のループを現実世界で回せました。 今回ヒトが担当した部分をモビリティやロボットへ置き換えると、巡回点検のようなシステムへつながります。 現地から写真やセンサーデータを送り、遠隔のAIが判断し、次の行動を返す。 今回の自由工作は、その小さな模型です。 フィジカルAIを活用するのに、必ずしも最初から立派なロボットを用意しなくてもよいのかもしれません。 まずは手の中のスマートフォンと、自分の身体からはじめられます。 もっとも、次回までには歩くところも奪ってほしいところです。 実際のオリエンテーリングは、人が密集していない開けた場所で安全に行われます。乗降者数世界一の駅近辺でスプリントレースを開催するのは危険ですので、おやめください。今回は周囲の状況を確認し、交通ルールを守って歩行しています。 ↩ 拡張機能 App Intents を組み込んでショートカットから呼び出せるようにしています。 ↩ つまり、猛暑日の新宿一周を事前にもう一回行ったということです。 ↩ 地図と位置説明は、 International Specification for Control Descriptions 2018 日本語版 および International Specification for Orienteering Maps 2017-2 日本語版 を参考にしています。ただし、作りやすさとAIの読み取りやすさを優先してカスタマイズしており、仕様に則っていない部分があります。 ↩ 本ツールは試作であり、現在、公開や提供の予定はありません。 ↩ 熱中症警戒アラートが出ている日に屋外を2時間歩き回るのは危険です。実施する場合は気象情報と体調を確認し、危険を感じる前に中止してください。この記事の試行条件を再現しないでください。 ↩ 動画のテロップは白がヒト、グリーンがAIの発言です。途中からグリーンばかりになるのは、主体がAIに切り替わっていく演出です。 ↩

動画

書籍