ショーケースに戻る
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でメモリを増量

拡張のポイント

現在の実装から発展させやすい箇所:

  1. AI判断の高度化: より複雑な環境データ処理
  2. マルチロボット対応: 複数ロボット同時制御
  3. 学習機能: 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ブラウザ
本記事の内容は2025年6月時点の情報です。