Gemini × mechArm|AIを物理的な動きへ変換する
LOG40R2R2R2026/1/19

Gemini × mechArm|AIを物理的な動きへ変換する

これまでUnity上でデジタルツイン環境の構築に励んできました(まだまだ道半ばではありますが!)。このプロジェクトはいま、大きな転換点を迎えようとしています。

仮想空間で育ててきた「脳」にGoogleのマルチモーダルAI Gemini を、そして「体」にロボットアームの実機 mechArm 270 M5 を採用し、現実世界でのお菓子ピッキングに挑戦する計画を始動します。

※本プロジェクトの目的:実機「mechArm 270 M5」の制御を通じて、AIの判断をいかに物理的な動きへ変換するか。そのロボット制御の仕組みを理解するプロセスを記録・検証するものです。

5つの要素が連携する知能ロボットの仕組み

このプロジェクトは、人間でいう「目・脳・神経・脊髄・体」の5つを繋ぐ作業です。

  • 【目】カメラ & Unity(視覚)

    現実の映像を捉え、シミュレーション環境と同期させます。

  • 【脳】Gemini AI(思考・判断)

    画像を見て、「これはポテトチップスだ」「これはチョコだから掴もう」と判断します。

  • 【神経】ROS 2(命令の伝達)

    脳の判断を、「第1関節を〇〇度動かせ」という具体的な数値に変えて運びます。

  • 【脊髄・基礎知能】UIFlow & Arduino IDE(動作の翻訳機) ★重要

    届いた命令を、実際に筋肉(モーター)の動きに変換するための「基本ルール」を書き込みます。

  • 【体】mechArm 270 M5(物理行動)

    すべての命令を最後に「物理的な動き」に変え、実際にお菓子を掴みます。

【目】カメラ & Unity(視覚・デジタルツインの構築)

ロボットが「お菓子」を認識するためには、まず現実世界をデジタルデータとして取り込む必要があります。ここでは、物理的な「カメラ」の選定と、それを受け取る「Unity」の高度な役割について解説します。

「目」となるカメラの選定:何を買うべきか?

mechArm 270 M5でピッキングを行う場合、用途に合わせて主に2つの選択肢があります。

選択肢A:USB Webカメラ

  • 特徴: 1080p程度の高画質なWebカメラ。

  • 理由: Geminiは非常に賢いため、普通の写真からでも十分に物体を判別できます。まずは「お菓子の種類」や「座標」を特定する練習には最適です。

選択肢B:深度カメラ / 3Dカメラ

  • 特徴: 物体までの「距離」を測ることができるカメラ。

  • 理由: ロボットが「お菓子の高さ」や「正確な奥行き」を把握する必要がある場合、3Dデータが取れるこのタイプが業界標準です。

推奨: 最初は、手持ちのWebカメラやスマホのカメラ映像をPCに取り込む形からスタートし、精度の限界を感じたらRealSenseなどの深度カメラにステップアップするのが、コストを抑えた賢い開発順序です。

【脳】Gemini AI(思考・判断:言葉を理解するインテリジェンス)

ロボットに「ポテトチップス」と「ポッキー」を見分ける能力を与えるのは、かつては非常に大変な作業でした。しかし、このプロジェクトではGoogleの最新AI Gemini 1.5 API を脳として採用することで、驚くほどスマートに解決します。

使用するAPI:Google Gemini 1.5 Flash

数あるAIの中で「Gemini 1.5 Flash」を選ぶのには理由があります。

  • マルチモーダル機能: 画像とテキストを同時に理解できるため、「写真を見て、指示に従う」という動作が得意です。

  • 爆速のレスポンス: ロボットの動きを止めないためには、判断の速さが命。Flashモデルはその名の通り、軽量で高速な判断が可能です。

学習はいらない。必要なのは対話だけ

従来のAIは、数千枚の写真を読み込ませる「学習」が必要でした。しかしGeminiは、プロンプト(指示文)を送るだけで、その場ですぐに判断を開始します。これを「ゼロショット学習」と呼びます。

【実際にGeminiに送る指示(プロンプト)の例】

「あなたは優秀なピッキングロボットの目です。送られた画像からお菓子を判別してください。

  • チョコ菓子(キットカット、ポッキーなど)があれば『PICK(掴む)』。

  • スナック菓子(チップス類)であれば『IGNORE(無視)』。

  • 結果は必ず次のJSON形式で返してください: {"item": "名前", "action": "PICKかIGNORE", "x": 座標, "y": 座標}」

判断のプロセス:画像から座標データへ

Geminiが行うのは、単に「お菓子がある」と喜ぶことではありません。エンジニアとして最も重要なのは、曖昧な視覚情報を厳密な数値データに変換させることです。

  • 画像認識: 写真の中からお菓子の特徴を抽出します。

  • 文脈理解: 指示に従い、どのアイテムが自分のターゲット(チョコ)なのかを論理的に特定します。

  • データ出力: ロボットが次に動くべき位置(X座標、Y座標)を、プログラミングで扱いやすいJSON形式という言葉で出力します。

なぜGeminiなのか?

最大のメリットは「柔軟性」です。 もし明日から「やっぱり今日はポテトチップスを掴みたい」と思ったら、プログラムを書き換える必要はありません。Geminiへの指示文(プロンプト)を一行書き換えるだけで、システム全体の挙動をガラリと変えることができるのです。

Unityが「視覚」で行う3つの重要任務

カメラから届いた映像は、Unityの中でただ映し出されるだけではありません。以下の3つの高度な処理を担います。

  •  座標の同期(デジタルツイン): カメラで撮った「現実の机」と、Unity内の「仮想の机」を重ね合わせます。これにより、カメラに映ったお菓子の位置が、Unity内の3D座標(X, Y, Z)のどこに当たるのかを計算できるようにします。

  • Geminiへの画像送信ゲートウェイ: Unity上の仮想カメラ、あるいは現実のカメラから「今だ!」という瞬間のスクリーンショットを切り出し、Gemini APIへ送信します。UnityはAIとロボットを繋ぐ「ハブ」として機能します。

  • 動作の事前検証(シミュレーション): Geminiから届いた座標に「本当にアームが届くか?」「途中で障害物にぶつからないか?」を、実機を動かす前にUnity内の3Dモデルでテストします。これにより、実機の故障や事故を防ぐことができます。

【神経】ROS 2(命令の伝達:脳と体を繋ぐ高速道路)

脳(Gemini)が「チョコを掴め」と判断しても、その命令が適切に伝わらなければ体(アーム)は動きません。ここで神経系として機能するのがROS 2 (Robot Operating System 2) です。

ROS 2の役割

ロボットの世界には、カメラ、AI、モーターなど、メーカーも仕組みも異なるデバイスが混在しています。ROS 2はこれらを繋ぐ「共通の通信規格」です。

  • 分散処理: Unity、Geminiを動かすPythonスクリプト、そしてmechArmを制御するプログラムが、たとえ別々のPCで動いていても、一つの生き物のように連携させることができます。

具体的に何をしているのか?

ROS 2の中では、トピック(Topic)という通信方式を使ってデータがやり取りされます。

  • 座標の受信: Geminiが算出したお菓子の位置(X, Y, Z)という抽象的なデータを受け取ります。

  • 逆運動学の計算: ここが神経の最も重要な仕事です。(X, Y)の地点に手を伸ばすためには、第1関節を30度、第2関節を45度曲げる必要があるという複雑な数学計算を瞬時に行います。

  • 具体的な指令の送信:  計算された各関節の角度情報を、1秒間に何十回という頻度で実機のコントローラー(M5Stack)へ送り届けます。

なぜROS 2を採用するのか?

  • リアルタイム性と安定性: データの衝突を防ぎ、遅延を最小限に抑えて命令を運ぶことができます。

  • 拡張性:  もし将来、別のロボットアームに変えたり、センサーを追加したりしても、ROS 2という「神経」を通していれば、脳(Gemini)の部分を作り直すことなくシステムを拡張できます。

  • MoveIt2との連携: 障害物を自動で避けて動くための高度なライブラリ「MoveIt2」が使えるようになるため、ピッキングの成功率が格段に上がります。

データの見える化

ROS 2を使うと、「Rviz2」というツールで今、ロボットが自分の状態をどう認識しているかを視覚的に表示できます。Unityのシミュレーションと、ROS 2が見ている内部データ、そして実機の動き。これら3つが一致したとき、デジタルツインが完成します。

【脊髄】UIFlowとArduino IDEとは?

ロボットアームを動かすには、土台にある小さなコンピューター(M5Stack)に、「ROS 2からの命令が来たら、こう動け」というルールを事前に教えておく必要があります。これがいわばロボットの「基礎知能」です。

 UIFlow

ロボット版のScratch(スクラッチ)と言われるこのツールは、世界中の教育現場で使われている「パズルを繋げるだけでプログラムができる仕組み」をロボット専用にしたものです。

  • 特徴:  タイピング不要、マウスだけで完結: 難しい英単語や記号をキーボードで打ち込む必要はありません。画面上に用意された「もし〜なら」「腕を動かす」といった命令が書かれたカラフルなブロック(パズルピース)を、マウスでカチッと繋ぎ合わせるだけでプログラムが完成します。

    そもそも文字を打たないので、「スペルを間違えた」「カッコを閉じ忘れた」という初歩的なミスで動かなくなるストレスがゼロです。

  • 役割: 「ボタンを押したら液晶にニコニコマークを出す」「アームのLEDを好きな色に光らせる」「簡単なメロディを鳴らす」といった、ロボットの基礎的な振る舞いを実験感覚で試すのに最適です。

    実機が届いてすぐにとりあえず動かしてみたい!というとき、数分で最初の動作を作ることができます。

  • エンジニアの視点:  健康診断のためのツール: 本格的なAI(Gemini)を動かす前に、まずは「モーターは正常か?」「センサーは反応しているか?」を確認する、いわばロボットの健康診断(動作チェック)をする際に非常に強力な味方となります。

 Arduino IDE

ロボットの魂を直接記述する「プロ仕様の書き込み機」 世界中のエンジニアや発明家が愛用する、ハードウェア開発の世界標準ツールです。

  • 特徴:  ブロックを並べるのではなく、アルファベットと記号を組み合わせたコード(C++ベース)を直接ノートに書き込むように入力します。
    世界中の開発者が公開している「ライブラリ(便利な機能の詰め合わせ)」を自由に取り込めるため、最新のセンサーや高度な通信機能も、コード数行で追加可能です。
    コンピューターの心臓部(マイコン)に対して「0.001秒単位でこのモーターを動かせ」といった、非常に緻密で高速な命令を直接下すことができます。

  • 役割:  mechArmがROS 2(神経)からの複雑な命令を理解できるように、専用の「翻訳ソフト(ファームウェア)」をロボットの脳内にインストールするのが最大の役割です。

    Gemini(脳)からの判断を遅延なく腕に伝えるための、安定したパイプラインを構築します。一度これを書き込んでしまえば、ロボットは「ROS 2対応モデル」として生まれ変わります。

  • エンジニアの視点:  毎日いじるツールではなく、最初にロボットを自分好みの仕様に改造するために使う、いわばスマホに最新のOSをインストールするような感覚で使用します。
    UIFlowでは届かない痒い所に手が届くのがこのツールの強み。Geminiの高度な要求を物理的な動きに変換するための信頼の架け橋として欠かせない存在です。

この2つをどう使い分ける?

「Gemini × mechArm」プロジェクトでは、以下のような流れで進めます。

  • インストール作業: まずArduino IDEを使って、ネット上で公開されている「mechArmをROS 2に対応させるためのプログラム」を本体に書き込みます。

  • 運用作業:  一度書き込んでしまえば、あとはPython(ROS 2) やUnityから操作するので、毎日これらのツールをいじる必要はありません。

例えるなら:

  • UIFlow / Arduino IDE = スマホに「OS(iOSやAndroid)」をインストールする作業。

  • Unity / Gemini / ROS 2 = そのスマホの上で動く「最新のAIアプリ」を作る作業。

まずは「ロボットにOSを入れるための道具なんだな」という認識で準備を始めれば大丈夫です!

【体】mechArm 270 M5(物理行動:データを現実に変える力)

すべての計算、判断、通信はこの「体」を動かすためにあります。mechArm 270 M5は、ただのロボット玩具ではなく、産業用ロボットの構造をコンパクトに凝縮した「6軸多関節ロボット」です。

6軸自由度がもたらす「人間のような動き」

mechArmは6つの関節(軸)を持っています。これにより、人間が腕を動かすように、自由な角度からお菓子にアプローチできます。

  • 柔軟な動き:  真上から掴むだけでなく、斜めから差し込むような動きも可能。

  • コンパクトな設計:  A4サイズのスペースに収まるサイズでありながら、半径270mmの範囲を自在に動き回れます。

司令塔「M5Stack」との一体化

このアームの最大の特徴は、土台(または先端)にM5Stackという強力なマイコンが組み込まれていることです。

  • 情報の窓口: ROS 2からの「神経信号」をこのM5Stackが受け取り、各関節のモーターへ正確な回転角を伝えます。

  • フィードバック: モーターに負荷がかかりすぎた場合や、異常が起きた場合に「痛覚」のように信号を返し、システムを保護します。

エンドエフェクター:お菓子を掴む「手」

アームの先端には、用途に合わせた「手(エンドエフェクター)」を装着します。

  • アダプティブグリッパー: 柔らかいお菓子を優しく包み込むように掴む。

  • 吸引ポンプ(バキューム): 袋状のお菓子を吸い付けて持ち上げる。 今回のプロジェクトでは、Geminiが判断した「お菓子の形状」に合わせて、これらを使い分ける発展性も秘めています。

「Pixels to Motors」のはじまり

ここで、一連の流れが完結します。

  1. Unity上で計算されたデジタルな角度データが、

  2. ROS 2の神経を通って実機に届き、

  3. mechArmの高性能サーボモーターを物理的に回転させ、

  4. 現実のお菓子が持ち上がる。

まさに、PCの中の「画素(Pixels)」が、現実の「動力(Motors)」へと変換される瞬間です。

物理AIの実現に向けたロードマップ

今回の設計は、ボストン・ダイナミクス社の「Atlas」などが取り入れているPhysical AI(物理AI)の考え方を、デスクトップサイズで再現しようとする試みです。

PCの中の画素(Pixels)が、現実の動力(Motors)に変換される

実際にはまだ実装を行っていませんが、この強力な5つの要素が連動したとき、一体どんな動きを見せてくれるのか。まずは、Unityの視界をGeminiに送り、正しい「座標JSON」を受け取る疎通テストから着手したいと思います。

LOG100を迎える頃には、私のロボットが自分で選んだお菓子を差し出してくれる。そんな未来を目指して、実装を開始します!