ショーケースに戻る
PoC公開日: 2024年12月15日
AI×ロボティクス:仮想空間での可能性を探ってみた
~Unity×WebSocket×Claude APIによる次世代製造業シミュレーション~
AIロボティクスUnityWebSocketClaude API3Dシミュレーター製造業
🎧 音声版記事
0:000:00
はじめに
製造業でのAI活用が話題になる中、「AIでのロボット制御」に興味を持ち、まずは仮想空間で検証してみることにしました。
Unity環境でロボットを動かし、AIが状況を判断して制御する仕組みを作ってみた結果、いくつかの興味深い発見がありました。実機を使わずブラウザで動作するデモとして、AIロボティクスの可能性を探る第一歩となる検証ができました。
何を試したのか
1. Unity環境でのロボット制御
Unity Editorで手動設定していたロボットの動作を、プログラムで動的に制御できるか試しました。
- 結果: CharacterController、Animator、物理演算すべてC#スクリプトから制御可能でした
- 分かったこと: GUI操作の大部分はコードで自動化できる
2. WebSocket通信でのリアルタイム制御
UnityとAIサーバーをWebSocketで繋いで、リアルタイムでロボットを制御できるか検証しました。
- 結果: 安定した双方向通信を確立できました
- 分かったこと: ブラウザ上のUnity Objectが外部AI・LLMシステムと連携可能
3. AI判断による動作制御
環境の状況(オブジェクトの位置、ロボットの状態など)をAIに渡して、適切な動作を判断させる仕組みを作りました。
- 結果: 複数の条件を組み合わせた指示に対応できました
- 分かったこと: 現在は簡単な例ですが、より複雑な産業データでの判断にも応用できそう
技術的な構成
システムアーキテクチャ
ハイブリッド環境で構築しました:
┌─────────────────────┐ ┌─────────────────────┐ │ Windows環境 │ │ WSL2環境 │ │ ┌─────────────────┐ │ │ ┌─────────────────┐ │ │ │Unity Editor │ │ │ │Node.js Server │ │ │ │- C# Scripts │ │ │ │- Express │ │ │ │- WebGL Build │ │ │ │- WebSocket │ │ │ └─────────────────┘ │ │ │- Claude API │ │ │ │ │ │ └─────────────────┘ │ │ │ │ │ │ │ │ ┌─────────────────┐ │ │ ┌─────────────────┐ │ │ │Unity WebGL │◄─────┼─►│MCP Server │ │ │ │(Browser) │ │ │ │localhost:8000 │ │ │ └─────────────────┘ │ │ └─────────────────┘ │ └─────────────────────┘ └─────────────────────┘
技術スタック
- Unity: 2022.3 LTS、WebGL、ML-Agents
- Node.js: 18.x、Express、WebSocket
- AI判断エンジン: Claude API(メイン)、パターンマッチング(バックアップ)
- 通信: WebSocket (ws://localhost:8000)
- 環境: Windows 11 + WSL2 Ubuntu
Windows-WSL連携の実装
実際の開発環境構築手順:
# WSL2でMCPサーバー起動
cd /home/user/robotics-project/mcp-server
npm install
npm start # ポート8000で起動
# Windowsからアクセス確認
# ブラウザで http://localhost:8000/test
ファイル共有設定
# Unity C#スクリプトをWSL2からWindowsにコピー
cp /home/user/project/unity_project/*.cs /mnt/c/Projects/RoboticsDemo/Assets/Scripts/
実装のポイント
現在は自然言語での指示をサンプルとして実装していますが、本質的には「環境データを入力として、AIが最適な制御判断を行う」仕組みです。将来的には以下のような産業データでの活用が考えられます:
- 気象条件、設備稼働状況
- 品質データ、在庫状況
- センサー情報、作業進捗
見えてきたメリット
すぐに実感できる利点
- コスト面: 実機なしで検証可能、初期投資を大幅削減
- 速度面: アイデアをすぐに試せる、反復検証が容易
- 安全面: 危険な動作も仮想空間なら安心
産業応用の可能性
今回の検証で、以下のような応用が現実的に見えてきました:
製造ライン
- 生産データを元にしたAI判断による最適化
- 設備状態を考慮した動作調整
品質管理
- 複数センサーデータの統合判断
- 検査基準の動的調整
協働ロボット
- 作業環境に応じた安全制御
- 人間との協調動作の最適化
実装の詳細
主要コンポーネント
1. Unity側 (C#)
RobotController.cs - ロボットの基本制御
public class RobotController : MonoBehaviour
{
private CharacterController controller;
private Queue<RobotCommand> commandQueue = new Queue<RobotCommand>();
public void ExecuteCommand(string action, Dictionary<string, object> parameters)
{
var command = new RobotCommand { action = action, parameters = parameters };
commandQueue.Enqueue(command);
}
private IEnumerator ProcessCommandQueue()
{
while (commandQueue.Count > 0) {
var command = commandQueue.Dequeue();
yield return ExecuteCommand(command);
}
}
}
MCPBridge.cs - Unity-AIサーバー間の通信
public class MCPBridge : MonoBehaviour
{
private WebSocket webSocket;
private const string SERVER_URL = "ws://localhost:8000";
void Start()
{
ConnectToMCPServer();
}
private void ConnectToMCPServer()
{
webSocket = new WebSocket(SERVER_URL);
webSocket.OnMessage += OnMessageReceived;
webSocket.Connect();
}
private void OnMessageReceived(object sender, MessageEventArgs e)
{
var data = JsonUtility.FromJson<MCPMessage>(e.Data);
robotController.ExecuteCommand(data.action, data.parameters);
}
}
2. AIサーバー側 (Node.js)
server.js - WebSocketサーバー
const express = require('express');
const WebSocket = require('ws');
const ClaudeIntegration = require('./claude-integration');
const app = express();
const wss = new WebSocket.Server({ port: 8000 });
wss.on('connection', (ws) => {
console.log('Unity client connected');
ws.on('message', async (message) => {
const data = JSON.parse(message);
if (data.type === 'natural_language_request') {
const result = await claudeIntegration.processNaturalLanguage(data.text);
ws.send(JSON.stringify(result));
}
});
});
通信プロトコル
メッセージフォーマット
{
"type": "robot_command",
"action": "move_forward",
"parameters": {
"distance": 5.0,
"speed": 1.0
},
"timestamp": 1672531200
}
サポートするアクション
move_forward
/move_backward
: 前進・後退turn_left
/turn_right
: 左右回転grab_object
/release_object
: オブジェクト操作get_status
: ロボット状態取得
開発環境の構築手順
1. WSL2環境でのサーバー構築
# プロジェクトディレクトリ作成
mkdir robotics-llm-demo
cd robotics-llm-demo
# Node.js環境構築
npm init -y
npm install express ws
# Claude API設定(オプション)
echo "CLAUDE_API_KEY=your_api_key_here" > .env
2. Unity環境の準備
# Windows側でUnityプロジェクト作成
# C:\Projects\RoboticsDemo\
# WSL2からスクリプトファイルをコピー
cp /home/user/project/*.cs /mnt/c/Projects/RoboticsDemo/Assets/Scripts/
3. WebGL設定
Unity Build Settings:
- Platform: WebGL
- Template: Custom(MCPサーバー連携用JavaScript追加)
- Compression: Gzip
動作テスト手順
# 1. WSL2でサーバー起動
cd /path/to/project/mcp-server
npm start
# 2. ブラウザでテストページ確認
# http://localhost:8000/test
# 3. UnityからWebGLビルド
# Build & Run → ブラウザで動作確認
トラブルシューティング
よくある問題と解決法
- CORS エラー: サーバーでCORS設定を追加
- WebSocket接続失敗: ファイアウォール設定を確認
- Unity WebGL メモリ不足: Build Settingsでメモリを増量
拡張のポイント
現在の実装から発展させやすい箇所:
- AI判断の高度化: より複雑な環境データ処理
- マルチロボット対応: 複数ロボット同時制御
- 学習機能: Unity ML-Agentsとの統合
まとめ
今回は小さな第一歩でしたが、AI×ロボティクスの可能性を具体的に体験できました。
特に印象的だったのは:
- 仮想環境なら気軽に試行錯誤できること
- AIによる判断制御が思った以上にスムーズに動作すること
- Webブラウザで動くため、誰でも簡単にアクセスできること
製造業でのAI活用はまだ始まったばかりですが、こうした小さな検証の積み重ねが、将来の大きな変化につながっていくのかもしれません。
お問い合わせ
導入にご興味をお持ちの方は、ぜひお気軽にご相談ください。貴社の要件に合わせた最適な構成のご提案から、構築、運用支援まで一貫してサポートいたします。
技術仕様詳細
使用した技術スタック:
- Unity 2022.3 LTS - 3D環境構築
- WebSocket - リアルタイム通信
- Claude API - AI判断エンジン
- Node.js + Express - サーバーサイド
動作環境:
- Windows 11 + WSL2 Ubuntu
- Node.js v18.x
- Unity WebGL Build
- モダンWebブラウザ