はじめに
VLA検証に向けた3つの準備
前回の手順により、VLA(Vision-Language-Action)モデルを動作させるための基盤環境が整いました。
いよいよVLA(Vision-Language-Action)を用いた推論検証へと移行しますが、その前に、評価の基準となる「従来手法」の整理と、システム全体の「精度向上」という重要な課題を解決しておく必要があります。本稿では、VLAの効果や効用を正しく捉えるため、以下の3つの観点から準備を進めた過程について記述します。
1. マニュアル操縦における「習熟コスト」の可視化
従来のジョイパッドによるマニュアル操縦は、自在にアームを動かせるようになるまで、相応のトレーニング時間を必要としていました。この「人間側の習熟」に頼っていた部分を整理しておくことで、VLA導入による操作性の変化や、学習コストの低減効果を測る基準とします。
2. 「ロボットの腕」の短時間・高効率なキャリブレーション
VLAの推論を実機で動かすには、VLAに要求される精度を物理環境で担保する必要があります。
- ロボットの目(カメラ): レンズの歪みを補正し、空間を正確に把握。
- ロボットの腕(アーム): 計算上の座標と実機の動きを一致させる調整。
これらを短時間で効率的に実施することで、AIの指示が正しく現実に反映されるための「土台」を素早く構築します。レンズ歪み補正については効率的な手法を導入済みですので、ここでは、ロボットの腕に対するキャリブレーション作業効率化について記述します。
3. 半自動化による「熟練の技」の再現
キャリブレーションを前提とした「半自動化」を実装し、人間側の操作負担を最小限に抑えます。これにより、特別な練習をしなくても、熟練者のようなスムーズな動きをすぐに再現できるようになります。 この「仕組みで解決できる領域(半自動化)」を明確にすることで、逆にVLAにしかできない高度な判断や役割がどこにあるのかを浮き彫りにします。
マニュアル操縦における「習熟コスト」の可視化
「従来手法」の代表例として、ジョイパッドを用いた手動操作を実装します。
YouTubeなどでロボット関連の動画を視聴すると、小型のジョイスティックで操作している例を多く見かけます。私はこれまでUnityで各種シミュレータを構築してきましたが、その際もLogicool製のジョイパッド(F310)を使用してきました。今回も、家電量販店などで容易に入手できるこのデバイスを使用することにします。
これまでこのジョイパッドでは、油圧ショベルの操縦や交通システムのドア開閉など、リアルタイム性が追求される対象の操作を行ってきました。
ジョイパッドと4DoFロボットアームのジョイントを紐付け
私はここ5年間、任天堂スイッチ等で遊べる建設シミュレータをプレイし続けています。建設特化にはなってしまいいますが、フィジカルAIを考える上で、「フィジカルAI以前」の操作体系や計画・段取りを知るという意味で、非常におすすめの3Dゲームです。
以下は、プレイ中に撮影した油圧ショベル(バックホー)スクリーンショットです。
このスクリーンキャプチャーを見ると、今回の4DoFロボットアームと構造が非常によく似ていることが分かります。油圧ショベルにおけるジョイントの関係をスクリーンキャプチャーの上に描いてみました。
4DoFロボットは計5個のジョイントを持ちますが、サーボモータで駆動するのは4個です。そのため、油圧ショベルのオペレーションと同様に、左右2つのレバー操作だけで4DoFロボットアームを自由自在に操縦できることになります。
上のイメージ(ISO/JISモードで操縦)を見ていると、「墨出しされた地面の範囲を一定の深さで掘削し、近くのダンプへ土砂を積んで欲しい」とつぶやくだけで、AIが全自動で作業を行う姿が想像できます。これこそがフィジカルAIのユースケースと言えるでしょう。「今はどう操作していて、フィジカルAIになるとどう変わるのか」を起点にすると、多くのユースケースが浮かんできそうです。
手持ちのジョイパッドの左右レバーへ、4DoFロボットアームの各サーボモータを紐づけました(油圧ショベルの操作レバーモードISO/JISに準拠。ただしバケット部分を除く)。 注意点として、このロボットアームは平行四辺形構造により、J4(エンドエフェクタ)が常に水平を保つよう回転します。油圧ショベルではバケット軸にあたる位置ですが、このロボットアームでは、サーボモータJ4をグリッパーの開閉動作として割り当てています。
ジョイパッドとのインタフェース開発
今回もAIとの対話によるコーディング(バイブコーディング)でスクリプトを生成しました。ジョイパッドとのインタフェース役であるJoypad(joypad.py)というサブシステムが生成され、MCPサーバー(mcp_server.py)配下で動作する構成となっています。
F310は8ms程度の間隔でジョイパッド操作の信号(HID: Human Interface Device)をホストへ送り続ける仕様です。今回、対戦ゲームのように10msの時間が勝敗を分けるといったリアルタイム性は必要とされないため、20ms間隔でロボット操縦コマンド(PWMパルス幅を指定する c0, c1, c2, c3 コマンド)をロボットコントローラへ送信する仕様としました。
動作確認
実装したプログラムにより、油圧ショベルの操作レバーモード(ISO/JIS)に基づいた体系で、4DoFロボットアームを操縦できることを確認しました。
実際に操縦してみると、建設機械と同じ操作感でアームを直感的に動かすことができ、VLAによる自律動作と比較するための「手動操縦による基準」を確立することができました。
「ロボットの腕」の短時間・高効率なキャリブレーション
位置関係の固定
まず初めに、ロボットの台座とカッティングボードの位置関係を固定します。ArUcoマーカーが貼り付けてある箇所は作業エリアとして使用できないため、ボードの目盛りが15cmの箇所にロボット台座を接触させます。この位置関係において、ロボットのJ1が世界座標の原点となります。
手順の改善
ロボットアームの逆運動学(IK)キャリブレーションにおいて、当初はPCA9685基板の各PWMチャネルのパルス幅を、ロボットコントローラ(Arduino UNO)へコマンドで直接指定して操作を行ってきました。例えば、チャネル1のパルス幅を1300μsに設定する場合、Arduino IDE 2のシリアルモニターから以下のコマンドを送信していました。
c1=1300
しかし、この方法では手先を狙った位置へ移動させるのが困難でした。今回ジョイパッドで操縦できるようになったことで、手先を目標位置へ移動させる作業が大幅に効率化されました。
今回の実装では、ジョイパッド操作における各チャネルのパルス幅を MCPサーバ (mcp_server.py) が保持しています。そこで、オプションとして専用のGUIを通したキャリブレーション作業を行うこととしました。
- ジョイパッドによるロボット操縦で手先(TCP)を移動
- 手先の位置を計測: カッティングボード上の目盛りから、ArUcoマーカー右下を原点としたx, y座標を読み取ります。高さzはコンベックス(巻尺)で計測し、ロボットのJ1からのオフセットはMCPサーバ側で補完します。
- 座標の登録: 専用GUIを通して2箇所のTCP座標を登録し、コントローラ内のEEPROMへ保存します。
キャリブレーション実施後のIK精度確認
Gemini CLIより、「TCPの位置をマーカー座標で x=-50, y=-50, z=20へ移動」と指示してみます。
MCP(Model Context Protocol)を通して計算された座標へアーム先端のTCPが移動すること確認出来ました。誤差も5mm以内で、これだけガタツキが多いロボットアームの割には、意外に精度が良いです。ただ、zの大きさが大きい(z=70といった高い位置)場合、実際の位置との乖離が大きく見えました。
半自動化による「熟練の技」の再現
前回の記事で作成した「ロボットの目」タブには、画像座標を実地座標(物理空間の座標)へ変換する機能を実装しました。この機能を応用し、操作画面上をマウスでクリックするだけで、対象物のピック位置とプレイス位置を特定できます。座標が確定すれば、一連の動作シーケンスをSvelteKitアプリ側で生成し、MCPサーバを介して送信することで、ロボットに一連のプロセスを自動実行させることが可能です。
実装した遠隔操縦インターフェース
検証のため、アプリに「ロボット操縦(手動・半自動)」タブを追加しました。この画面は建機の遠隔操縦を模したGUI構成となっており、ジョイパッドによるマニュアル操縦と、画面クリックによる半自動操縦を統合しています。
また、安全性の確保と精度の確認のため、動作開始前にピック&プレイスのTCP(Tool Center Point)軌道をリアルタイムで画像上に重畳表示する機能を備えています。これにより、アームがどのような経路を通り、周辺物に干渉しないかを事前に把握することが可能です。
以下、「ロボット操縦(手動・半自動)」タブを通したロボット操縦の実演デモです。
精度と作業時間の観点から見た半自動化の効用
この半自動化の実装により、従来の完全マニュアル操作と比較して、以下の2つの面で顕著な改善が見られました。
1. 作業完了までの最短化(習熟コストの解消)
実際の仕事において、マニュアル操縦がいかに高度なスキルを必要とするかは、建設現場で油圧ショベルを熟練者が操縦し、巧みに盛土を作る様子を観察しているとよく分かります。刻々と変わる状況に対応しながら、まるで土と対話するかのように機械を操る人間の技術には、ただ圧倒されるばかりです。
本プロジェクトの4DoFアームにおいても、従来はジョイパッドを用い、目視で微調整を繰り返しながら慎重に操作を行ってきました。この「人間側の試行錯誤」は、作業完了までに時間を要する要因となっていました。しかし、半自動化によって目標地点までの最適軌道が瞬時に計算され、一気通貫で動作が実行されることで、迷いの時間が消失しました。結果として、熟練者並みに短時間でタスク遂行出来るようになりました。
2. エラー率の低減(再現性の確保)
4DoFという限られた自由度では、対象物を正確に掴むための「角度」や「深さ」のわずかなズレが、ピック失敗という致命的なエラーに直結します。マニュアル操縦では目視による空間認識の限界から、一定の確率でこうしたミスが避けられませんでした。
一方、適切なキャリブレーションに基づく半自動化では、画像から得た座標データに対して数学的に正しい解を導き出し、各関節を協調させて動かします。これにより、人間特有の認識エラーや操作ミスが排除され、定型作業における成功率は、ある一定の水準で安定しました。
半自動化の意義と「生成AI」の役割
このように、「何をするか」という目的が決まっている定型的な作業においては、生成AIを用いずとも、適切なキャリブレーションに基づく半自動化で十分に実用的な精度が得られると考えられます。仕事の達成スピードと確実性の両面において、「仕組みによる解決」は非常に強力です。
あらかじめこの「仕組みで解決できる領域」を定義し、人間の手技をシステムへと置き換えていくプロセスは、今後VLAのような生成AIモデルが担うべき「非定型な環境への適応」や「曖昧な指示の解釈」といった、より高度な役割を評価するための重要な比較対象になると考えています。
VLA検証準備の総括:技術選定とフルスタックの視点
今回のVLA(Vision-Language-Action)検証に向けた一連の準備作業、特にキャリブレーションの徹底と「半自動化」の実装を通じ、フィジカルAIを扱う上で見失ってはならない本質的な教訓を得ることができました。これまでのプロセスを振り返り、現時点での考察をまとめます。
1. 「流行(バズ)」に依存しない技術選定
生成AIやMCP(Model Context Protocol)といった技術は、現在大きな注目を集めています。学習の過程でこれらに触れることには価値がありますが、実ビジネスにおいては「従来技術との比較」が不可欠です。
これまで生成AIアプリケーションの開発を続けてきた中で、実は生成AIを使わずとも解決できる課題が数多く存在することに気づかされました。例えば、業務フローの整理(DX)で解決できるものや、従来の自然言語処理(NLP)を用いた方が性能・コストの両面で勝るケースです。
物体検出などはその最たる例であり、要求される性能や品質に応じて、最適な技術(生成AIかCNNか、クラウドかエッジか)を冷静に選択する姿勢が重要であると改めて実感しています。
2. フルスタックで理解することの重要性
私はキャリアの初期にデジタル交換機の開発に携わりましたが、当時の環境は半導体から基板、OS、言語、デバッグツールに至るまで全てを自社で開発していました。各層の責任者が隣り合わせで仕事をする中で学んだのは、「問題はどのレイヤーで解決すべきか」という視点です。
ソフトウェアエンジニアは、ついつい修正が容易な上位レイヤーで問題を解決しようとしがちです。しかし、本来ハードウェアや下位レイヤーで修正すべき問題を上位で無理に吸収すると、後に深刻な歪みを生むことがあります。
今回のシステム構築においても、下位レイヤーの仕様変更が全層に波及することを恐れ、上位での修正に逃げたくなる場面がありました。しかし、かつての現場にいた熟練のフルスタックエンジニアたちは、障害の本質を見抜き、「アーキテクチャとしての理想案(下位からの修正)」と「時間の制約による妥協案(上位での修正)」を明確に使い分けていました。
3. フィジカルAIにおける「有識者」の条件
フィジカルAIも、同様の構造的な課題を抱えています。物理空間と計算機空間が交差するこの領域では、問題が発生した際、その所在がハードウェア(剛性やエンコーダ精度)にあるのか、制御層(OSやドライバ)にあるのか、あるいは最上位の推論モデルにあるのかを的確に見極める力が必要です。
これは、現代の企業が直面している「DX(デジタルトランスフォーメーション)」の課題とも酷似しています。DXにおいて、各部門が個別にツールを導入するなどの「部分最適」を進めても、経営全体としての最適化には繋がりません。実態として、組織ごとにサイロ化されたシステムが乱立し、データの連携すらままならないケースが散見されます。本来DXとは、経営全体の観点から俯瞰し、全体の構造を最適化するために導入されるべきものです。
フィジカルAIにおいても、これと同じことが言えるのではないでしょうか。特定のレイヤー、例えば「AIモデルの精度」だけに注力しても、下位のハードウェア特性や通信のリアルタイム性を無視しては、現場で機能するシステムにはなりません。
多くの有識者が「フルスタックでの理解」の必要性を唱える理由は、ここにあるのだと感じています。各レイヤーの特性を深く理解し、より大きな視点で全体を最適化していく考え方を持って初めて、VLAのような高度なモデルを「魔法の箱」としてではなく、システム全体の一部として正しく評価・運用できるのだと確信しています。
次のステップ
本稿を通じて、VLAの比較対象となる「従来手法」の整理と、物理環境の土台作りが完了しました。
次はいよいよ、Gemini(VLA)を用いたロボット実機の自律制御検証へと移行します。あらかじめ定義されたプログラムに頼らず、AIが視覚情報と言語指示からどのように「意志」を持って動くのか。その具体的なプロセスと検証結果を報告します。
(2026/2/22 追記) この記事を書いた後、一般的に、現時点におけるVLAの定義は、画像データを入力とし、一気通貫に各関節の角度を出力するようなモデルを意味すると知りました。強化学習、模倣学習と強く紐づいたモデルです。しかし、同時に、CES2026に参加された方々の報告からは、VLAに対する課題も多く聞かれました(数社を除き、うまく動いていない)。また、そもそも、VLAは6DoFや7DoFロボット向けに学習されており、今回の4DoFロボットへの適用は難しいとも知りました。よって、今後の記事では、「VLAもどき」という言葉が出てきますが、クラシカルな手法(IK)とVLMを連携させたVLAを追求して行きます。実は、Gemini自身が、VLAには限界が見えてきたので、この記事シリーズでは「VLAもどき」で進めるよう示唆してくれたのです。。。
ソースコードの公開
以下に最新版を公開します。








