LLMエージェントは画面の中では賢い一方、現実世界のロボットを動かす標準的な土台が足りません。DiMOSは、Claude CodeやOpenClawのようなエージェントに「身体」を接続するためのオープンソースOSです。
この記事でわかること
- DiMOSが解決する課題とアーキテクチャの全体像
- 対応ハードウェアと主な機能
- MCP経由で外部エージェントと接続する方法
- ハードウェアなしで試せる入門手順
なぜDiMOSが必要か
従来のロボット開発フレームワークは、古典的な制御ループを前提に設計されています。ROS2でもAI機能は後付けが多く、LLMエージェントを制御ループの中心に据えるには追加の橋渡しが必要です。
DiMOS(Dimensional)は、LLMエージェントを最初から制御ループの一員として組み込む「エージェントネイティブ」なOSとして設計されています。開発者はPythonだけで四足歩行ロボット、ヒューマノイド、ドローン向けのアプリを組み立てられ、ROSの導入は必須ではありません。
DiMOSとは
https://github.com/dimensionalOS/dimos
DiMOSはDimensional社が公開するオープンソースのロボット向けOSです。公式READMEでは「The Agentive Operating System for Physical Space(物理空間向けのエージェントOS)」と位置づけられています。GitHub上のスター数は約3,500、フォーク数は約700に達しており、2026年6月時点でも活発に更新が続いています。ライセンスはApache License 2.0で、無料で利用できます。
現時点はプレリリースのベータ段階です。最新の安定版はv0.0.12(2026年5月9日公開)で、空間メモリエンジン「memory2」、非同期モジュール、MuJoCoシミュレーション対応などが追加されています。
4つの構成要素
DiMOSの内部は、4つの概念で整理されています。
Module(モジュール)は、カメラ処理やモーター制御などの独立したサブシステムです。各モジュールはforkserverのワーカープロセス上で並列実行されます。
Stream(ストリーム)は、モジュール間のPub/Sub通信です。LCM、ROS2、DDSなどのトランスポートを選べます。
Blueprint(ブループリント)は、複数のモジュールを接続してロボットスタックを構成する設計図です。autoconnect()でストリーム名と型が一致するモジュールを自動接続します。
Skill(スキル)は、エージェントが呼び出せる物理操作の関数です。@skillデコレータを付けたメソッドは、MCP(Model Context Protocol)のツールとして外部エージェントに公開されます。grab()、follow_object()、jump()のような動作がスキルとして定義できます。
主な機能
DiMOSはナビゲーション、知覚、エージェント制御、空間メモリの4領域をカバーします。
ナビゲーションではSLAM、動的障害物回避、経路計画、自律探索に対応します。知覚では物体検出、3D投影、VLM(Vision Language Model)、音声処理を扱います。空間メモリでは時空間RAGや物体の位置追跡を行い、エージェントが「キッチンはどこか」を記憶して参照できます。
エージェント制御では、自然言語の指示をスキル呼び出しに変換します。ターミナルからdimos agent-send "explore the room"と送ると、四足歩行ロボットが部屋を探索するデモが動作します。公式動画では「hey Robot, go find the kitchen(ロボット、キッチンを探して)」という指示も紹介されています。
対応ハードウェア
DiMOSは複数メーカーのロボットに対応しています。
| カテゴリ | 対応機体 | 安定度 |
|---|---|---|
| 四足歩行 | Unitree Go2 pro/air | 安定 |
| 四足歩行 | Unitree B1 | 実験的 |
| ヒューマノイド | Unitree G1 | ベータ |
| ロボットアーム | Xarm、AgileX Piper | ベータ |
| ドローン | MAVLink、DJI Mavic | アルファ |
ドローン向けには、MAVLinkプロトコル経由のプログラマブルなインターフェースが用意されています。move()、takeoff()、land()、fly_to()などのスキルがLLMエージェントから呼び出せます。DJI製ドローンはRosettaDroneアプリを介してMAVLinkブリッジを構成し、DimOSと接続します。リプレイモードではハードウェアなしで2,148フレームの映像と4,098フレームのテレメトリを再生できます。
MCPで外部エージェントと接続する
DiMOSの最大の特徴は、MCPを第一級のプロトコルとして実装している点です。MCPはAnthropicが提唱した標準で、AIツールと外部サービスを接続するための共通インターフェースです。
エージェント対応のブループリントでは、McpServerとMcpClientの2モジュールが動作します。McpServerがすべての@skillメソッドをMCPツールとしてhttp://localhost:9990/mcpに公開し、McpClientがLangGraphベースのLLMエージェントとしてツールを呼び出します。
公式READMEでは、OpenClawやClaude Codeなどの外部エージェントにAGENTS.mdを読ませることで、DiMOSアプリの開発を任せられると案内しています。OpenClaw連携用のroboclawプラグインも別リポジトリで公開されており、MCP互換のエージェントフレームワークなら接続先を増やしやすい設計です。
CLIからもスキルを直接呼び出せます。
dimos --replay run unitree-go2-agentic --daemon
dimos mcp list-tools
dimos mcp call relative_move --arg forward=0.5
dimos agent-send "walk forward 2 meters then wave"
はじめ方
インストールは対話式スクリプトか、Pythonパッケージのどちらでも行えます。
curl -fsSL https://raw.githubusercontent.com/dimensionalOS/dimos/main/scripts/install.sh | bash
uv venv --python "3.12"
source .venv/bin/activate
uv pip install 'dimos[base,unitree]'
ハードウェアがなくても、収録済みデータのリプレイで動作を確認できます。
dimos --replay run unitree-go2
dimos --simulation run unitree-go2-agentic
dimos --replay run drone-agentic
実機のUnitree Go2を使う場合は、ロボットのIPを環境変数に設定して起動します。
export ROBOT_IP=<YOUR_ROBOT_IP>
dimos run unitree-go2
エージェント機能を使う場合はOPENAI_API_KEYの設定が必要です。デフォルトのLLMはGPT-4oです。Ollamaを使ったローカルLLM実行にも対応しており、dimos --simulation run unitree-go2-agentic-ollamaで試せます。
ROSとの関係
DiMOSはROSなしで動作しますが、ROS2との相互運用もサポートしています。ROSTransportでROSトピックとブリッジでき、既存のROSエコシステムと段階的に統合できます。新規プロジェクトではPythonとDiMOSのモジュール体系だけで完結させ、必要に応じてROSを足す使い方が想定されています。
注意点
DiMOSはベータ段階のため、APIの破壊的変更が続いています。v0.0.12ではベースインストールからperceptionやsimが分離され、追加のextra指定が必要になりました。実機でエージェントを動かす際は、公式が警告している通り、誤動作を防ぐための物理的な安全対策を必ず用意してください。
MCPサーバーはデフォルトでlocalhostにバインドされます。外部ネットワークからアクセスする場合はMCP_HOST=0.0.0.0の設定が必要ですが、ロボット制御権限が外部に漏れないよう、ネットワーク設計には注意が要ります。