0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

VLMやVLAを使って、具体的にどうロボットやドローンを動かすの?

0
Posted at

こんばんは、ダックスフントです。

「フィジカルAI」分野では、VLM(Vision Language Model)やVLA(Vision Language Action Model)というモデルがキーワードになっていて、最近勉強しています。ただ、多くの記事では「モデルが行動を出力する」というところで説明が止まっていて、その行動が具体的にどんな数値で表現され、ロボットの関節やドローンのモーターにどう伝わるのかまで踏み込んだものは意外と少ないと感じました。VLMやVLAはあくまでソフトウェアの部分なので、どこかで物理的な機体とつながる仕組みが必要なはずです。そこが気になって、調べてみることにしました。

この記事では、VLMやVLAが予測した「行動」が具体的にどんな数値として表現されるのか、そしてその数値がどうやってロボットやドローンに送られ、実際の動きとして実行されるのかを紹介します。

TL;DR

  • モデルは行動をアクションチャンクというもので出力します。アクションチャンクの中身は、モデルによって「整数を並べたテキスト」(RT-2など)と「連続値を並べたベクトル列」(π0など)の2方式に分かれます
  • RT-2は関節角度などの数値を256段階のビンに量子化し、テキストと同じトークン列として出力します。それを元の数値に戻す処理を経て、ロボットの制御値になります
  • 出力された行動は、ロボットアームの世界ではROS2を使って実機に送信します。ドローンの世界ではMAVLinkという命令コマンドの形式で実機に送信する場合もあります
  • 基盤モデルは巨大なため、ロボット本体ではなくクラウドや別マシンのGPU上で動かし、ネットワーク越しに通信する構成が今も主流ですが、SmolVLAやHelixのように、モデルの小型化やアーキテクチャの工夫でロボット本体だけで動かせるVLAも登場してきています
  • ドローンの操作には、既存のVLAをファインチューニングする方法、ドローン専用に設計されたVLAを使う方法、VLMにMAVLinkコマンドを直接出力させる方法という3つのアプローチがあります

目次


1. VLM、VLA、アクションチャンクとは何か

本題に入る前に、この記事で繰り返し出てくる3つの用語を整理しておきます。

VLM(Vision-Language Model)は、画像とテキストをまとめて扱えるモデルです。テキスト(プロンプト)と画像を入力すると、テキストが出力されます。あくまで認識・推論を担うモデルで、それ単体では「ロボットを動かす」機能は持っていません。

VLA(Vision-Language-Action Model)は、このVLMに行動を出力する層を追加したモデルです。テキスト(プロンプト)と画像を入力すると、ロボットの制御コマンド(エンドエフェクタ(ロボットの手先)の位置、関節角度、グリッパーの開閉など)が出力されます。VLAはVLMの上位互換というわけではなく、認識・判断までで十分なタスクにはVLM、実際の動作まで一気に出したいタスクにはVLA、というように使い分けられます。

そして、VLAが出力する行動は「アクションチャンク」と呼ばれます。モデルは1ステップ分の行動を出すたびに推論をやり直すのではなく、未来数十ステップ分の行動をまとめて1回の推論で出力する仕組みです。これにより、1ステップずつ予測したときに起きやすい小さな誤差の積み重なり(誤差の蓄積)を抑えられるうえ、推論の回数自体が減るので実行も速くなります。


2. アクションチャンクの中身は、実際どんな数値なのか

アクションチャンクの中身は、モデルによって形式が異なります。RT-2は行動を「整数を並べたテキスト」として表現するのに対し、π0は「連続値を並べたベクトル列」としてそのまま出力します。まずはRT-2から見ていきます。

2-1. RT-2の場合

RT-2の論文RT-2: Vision-Language-Action Models Transfer Web Knowledge to Robotic Controlでは、RT-2の内部の仕組みについて以下の図をベースに解説されています。

RT-2の仕組み.png

RT-2は、ロボットの行動を「いくつかの整数を並べたテキスト」として出力させるように学習させることで、モデルが行動を出力することを実現しています。学習データの形式は、画像への質問応答(VQA)をベースとした、以下の入力と出力のペアです。

入力

  • ロボットのカメラ画像
  • 質問形式のプロンプト
    • 例:「Q: what action should the robot take to {タスクの指示}? A:」

出力

  • 行動を表す8個の整数を並べたテキスト
    • 終端コマンド(1次元):エピソードを終了するかどうか
    • 位置の変位 Δx、Δy、Δz(3次元):エンドエフェクタの移動量
    • 回転の変位 Δroll、Δpitch、Δyaw(3次元):エンドエフェクタの回転量
    • グリッパーの開閉度(1次元)
    • 終端コマンド以外の7次元は、それぞれが取りうる範囲を256等分したビンに当てはめ、0〜255の整数として表現

終端コマンドを除いた実際の出力は、1 128 91 241 5 101 127 のような、スペース区切りの整数列になります。この7個の整数の並びが、RT-2にとってのアクションチャンクの1要素にあたります。

また、この整数列を実際の動きに戻すのが、De-Tokenize処理です。各整数は「範囲を256等分したビンの何番目か」を示しているだけなので、対応するビンの値を求めることで元の連続値、つまり移動量や回転量の変化分(デルタ)に戻せます。これにより、1 128 91 241 5 101 127 230という整数列を「エンドエフェクタをΔx、Δy、Δzだけ動かし、Δroll、Δpitch、Δyawだけ回転させ、グリッパーを指定の開き具合にする」という、ロボットが実行できる制御コマンドに変換できます。

2-2. π0の場合

π0の論文π0: A Vision-Language-Action Flow Model for General Robot Controlでは、π0の内部の仕組みについて以下の図をベースに解説されています。

pi0の仕組み.png

π0も、画像・言語指示・ロボットの状態を入力として行動を出力する点はRT-2と同じですが、行動の表現方法と出力方法が大きく異なります。

入力

  • ロボットのカメラ画像
  • 言語指示(プロンプト)
  • ロボット自身の現在の状態
    • ロボットの関節角度などを表す最大18次元の状態ベクトル

出力

  • 未来の50ステップ分の行動をまとめたアクションチャンク(1ステップあたり最大17次元の連続値。関節の目標位置や速度など)

RT-2は行動を「整数を並べたテキスト」として出力していましたが、π0は行動をベクトル形式でそのまま出力します。この生成に使われているのが「フローマッチング」という拡散モデル系の手法です。RT-2ではDe-Tokenize処理によって整数を連続値に戻す必要がありましたが、π0は最初から連続値のベクトルなので、この変換処理を挟まずにそのまま低レベルコントローラへ渡して実行できます。

またフローマッチングでは、ノイズを乗せた50ステップ分のベクトル列を少しずつ除去(デノイズ)していくことで、滑らかな行動軌道に収束させます。これにより、π0は1回の推論で50ステップ分のアクションチャンクをまとめて出力できます。1ステップが約20ミリ秒に相当するので、50ステップ分で合計1秒、50Hzでの実行に対応する計算になります。

このように、アクションチャンクの中身は、RT-2なら「0〜255の整数を並べたテキスト」、π0なら「連続値をそのまま並べたベクトル列」というように、モデルによって形式はまったく異なります。しかし、どちらもエンドエフェクタの移動量・回転量やグリッパーの開閉度といった具体的な数値をひとまとめにしているという点は共通しています。


3. アクションチャンクは、どうやってロボットに届くのか

ここまでで、VLAが行動をアクションチャンクとして出力するまでの流れを見てきました。ここからは、その行動を実際にロボットへ送り届ける流れを見ていきます。

π0は推論時に14GBものメモリを使う、計算量の大きいモデルです。ロボット搭載の組み込みコンピュータだけで動かすのは現実的ではないため、Hugging FaceのLeRobotでは、π0をGPUを積んだリモートのワークステーション上で「Policy Server」として動かし、ロボット側は軽量な「Robot Client」(Raspberry Pi 5などの組み込みコンピュータ)として観測データを送り、アクションチャンクを受け取る構成を取ります。両者はgRPCという通信方式でやり取りします。詳細はHugging Faceのブログ記事「Asynchronous Robot Inference: Decoupling Action Prediction and Execution」をご覧ください。

こうした、推論を担うVLAとロボット本体を別マシンに分ける構成は、ロボットの世界ではROS2(Robot Operating System 2)というミドルウェアでも広く採用されています。VLA自体を1つの「ROS2ノード」として実装し、推論した行動をROS2の標準メッセージ形式(目標座標や速度など)に変換して、ロボットコントローラー側のノードへ送信(Publish)します。ロボット側のノードはこれを購読(Subscribe)し、実際のモーターやグリッパーを動かします。


4. ロボット本体だけで完結できるVLAも登場してきた

VLM・VLAの基盤モデルは、性能を上げるために大規模化が進む一方で、モデルを小さく・軽くする取り組みも進んでいます。

Hugging Faceが公開したSmolVLA(450Mパラメータ)は、公式ブログで「CPUでも動かせるほど小さい」と紹介されるモデルです。

Figure社のHelixは、ゆっくり考える「System 2(VLM)」と、素早く体を動かす「System 1(行動生成モジュール)」という2種類のモデルを組み合わせる「デュアルシステム」構成により全体を軽量化し、ロボット本体の組み込みGPUだけで動作するモデルになったと紹介されています。

また、GR00T N1(NVIDIA)も同じデュアルシステム構成を採っていますが、公式にはクラウド上のGPUサーバーでの運用を主に想定しており、エッジデバイス上での動作は限定的な事例にとどまります。

このように、基盤モデルの大規模化とは別の方向として、小型化やアーキテクチャの工夫によってロボット本体だけで動かせるVLAも登場してきています。ただしπ0.5のようにリモートのGPUに推論を任せる構成が現在は主流です。


5. ドローンを操作したい場合

ドローンを操作したい場合、現在は主に以下3つの方法があります。

5-1. π0やRT-2などのメジャーなVLAをファインチューニングする

RT-2やπ0が出力するのは、エンドエフェクタの位置・回転の変化量とグリッパーの開閉度でした。これはロボットアームの手先を動かすための行動空間で、機体全体の推力や姿勢を制御するドローンの操作とは全く異なるものです。地面に固定されたロボットアームのように「安定した土台」があることを前提に訓練されているため、機体全体が浮遊し姿勢が変わり続けるドローンのデータは学習に含まれていないのです。そこで、ドローン操作用にこれらのVLAを活用する場合は、事前にドローンのデータでファインチューニングしておく必要があります。例えば、2026年の論文「π, But Make It Fly」では、π0を270回分のドローン専用データで追加学習し、物体を掴んだ重さで機体が沈み込む問題に対応する「Payload-Aware Guidance」などの工夫を加えています。

5-2. ドローン操作に対応しているVLAを使用する

既存のVLAを流用するのではなく、最初からドローン向けの行動空間で設計されたVLAも登場し始めています。2026年3月に発表されたAerialVLAは、前方カメラと下向きカメラの画像、自然言語の目標指示を入力に、前進方向(Δx)・高度(Δz)・ヨー角(Δψ)というドローン固有の3つの値を出力します。専用の行動トークンを新設するのではなく、既存のLLMが持つ数字トークンをそのまま流用する「Standard Numerical Tokenization」という方式が特徴です。シミュレーター(AirSim上のTravelUAVベンチマーク)での成功率は47.96%ですが、実機での検証はまだ報告されていません。

5-3. VLMを活用して、ドローン操作用のテキストを出力するように指示する

MAVLinkはArduPilotやPX4といったフライトコントローラが使う通信プロトコルです。そしてMAVProxyはこれをベースにした地上局(Ground Control Station)ソフトです。2025年1月に発表されたUAV-VLAは、VLMとLLMを組み合わせ、このMAVLinkの命令コマンドを「文字列」として直接出力させる方式を発表しました。この方式は以下3つの行程で構成されています。

  1. 自然言語での指示から具体的な巡回目標をGPTで抽出する「Goal Extracting GPT module」
  2. VLM(Molmo)で衛星画像から目標のピクセル座標を検出し緯度・経度に変換する「Object Search VLM module」
  3. 得られた座標からMAVProxyで実行可能な行動列(ミッションファイル)を生成する「Actions Generation GPT module」

この一連の流れで、30枚の衛星画像に対する飛行計画の生成を約5分24秒で完了でき、人間のオペレーターより6.5倍速かったと報告されています。


まとめ

この記事では、VLM・VLAが出力する「行動」が、実際にどんな数値で表現され、どうやってロボットやドローンを操作するかを紹介しました。

  • モデルは行動をアクションチャンクというもので出力します。アクションチャンクの中身は、モデルによって「整数を並べたテキスト」(RT-2など)か「連続値を並べたベクトル列」(π0など)かに分かれますが、どちらもエンドエフェクタの移動量や関節角度といった具体的な数値をまとめたものです
  • 出力された行動は、ロボットアームの世界ではROS2を使って実機に送信します。ドローンの世界ではMAVLinkという命令コマンドの形式で実機に送信する場合もあります
  • 基盤モデルは巨大なため、ロボット本体ではなくクラウドや別マシンのGPU上で動かし、ネットワーク越しに通信する構成が今も主流ですが、SmolVLAやHelixのような小型化・軽量化の工夫でロボット本体だけで動作するVLAも登場しています
  • ドローンの操作には、既存VLAのファインチューニング、ドローン専用VLAの活用、VLMにMAVLinkコマンドを出力させる方法という3つのアプローチがあります

参考文献

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?