Chotu Robo Server

by vishalmysore
Verified

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Integrations

  • Controls Arduino-based hardware components like LEDs, motors, servos, fans, sensors, and relays through an Arduino Nano 368 board when running in Wired Mode

  • Provides Johnny-Five JavaScript robotics library integration for hardware control and communication with the microcontroller

  • Uses the Johnny-Five JavaScript robotics library to interact with hardware components and manage the MCP server functionality

**Chotu Robo Server - Arduino 用 MCP サーバー**

デモ

👉 チョートゥロボ デモ 1

👉 チョットロボ デモ 2

👉 チョーチュロボ デモ 3

👉 Chotu Robo の記事

概要

このプロジェクトでは、Claude AI by AnthropicのMCP(Model Context Protocol)フレームワークを用いて、Arduinoベースのロボット( NodeMCU ESP32またはArduino Nano 368ボードを使用)とAIを統合する方法を紹介します。MCPは、ユーザーがスマートフォンやパソコンから操作できるシンプルなインターフェースを通じて、ハードウェアコンポーネントとAIをシームレスに接続します。

このシステムは、LED、モーター、サーボ、ファン、センサーなど、様々な物理コンポーネントと連携できるロボットサーバーChotu Robo )として機能します。これらのコンポーネントは、サーバーにコマンドを送信することでリモート制御でき、サーバーはESP32またはArduino Nano 368マイクロコントローラーを介してハードウェアを制御します。

この設定により、モバイルまたは Web アプリケーションから AI アシスタント (Claude など) を介してロボットを制御するなど、将来の AI ベースのアプリケーションの可能性が開かれます。

Chotu ロボットは、有線モードと無線モードの 2 つのモードで動作し、それぞれ異なる使用例とハードウェア構成に合わせて設計されています。

有線モード - Arduino Nano 368

有線モードでは、ロボットはArduino Nano 368ボードを使用し、コードはUSB経由で直接アップロードされます。このモードでは、動作に物理的なUSB接続が必要となるため、ネットワーク経由のリアルタイムコマンドはサポートされません。ロボットは事前にアップロードされたコードを実行するため、Wi-Fiやネットワーク接続が不要なプロジェクトに適しています。

ワイヤレスモード - ESP32 Wi-Fi対応Webサーバー

ワイヤレスモードでは、ロボットはESP32ボードから電力を供給されます。ESP32はローカルWi-Fiネットワークに接続し、Wi-Fi対応のWebサーバーを起動します。このサーバーは、REST APIまたはWebSocketを介してリアルタイムコマンドをリッスンします。このモードでは、ロボットは外部デバイスと対話し、LED、モーター、サーボ、ファンなどのさまざまなハードウェアコンポーネントを制御できます。

ESP32をWi-Fiに接続すると、ハードウェア機能をリアルタイムで制御するコマンドを受信します。これらのコマンドは、TypeScript MCPサーバーまたはJava SpringベースのMCPサーバーから送信できるため、自動化、ロボット工学、IoTアプリケーション向けのマイクロコントローラーハードウェアとAIベースシステムをシームレスに統合できます。

特徴

  1. LED コントロール: 指定された時間 LED を点滅させます。
  2. ブザー制御: 指定された時間ブザーを鳴らします。
  3. モーター制御: モーターを一定の速度で一定時間動作させます。
  4. サーボ制御:サーボモーターを特定の角度に動かします。
  5. ファンコントロール: ファンのオン/オフを切り替えます。
  6. リレー制御: リレーのオン/オフを切り替えます。
  7. センサーの読み取り値:
    • センサーから温度を読み取ります。
    • 超音波センサーを使用して距離を測定します。
  8. AI を活用したコマンド: 移動、開始、停止、旋回、速度調整などのアクションについて AI ベースのプロンプトを使用してロボットを制御します。

使用されるコンポーネント

  • NodeMCU ESP32またはArduino Nano 368 : ハードウェアの制御とサーバーとの通信を担当するマイクロコントローラー。
  • Johnny-Five : ハードウェア コンポーネントと対話するための JavaScript ロボットおよび IoT ライブラリ。
  • MCP フレームワーク: 外部システムとのリクエストとやり取りを処理し、AI ベースの通信を可能にするモデル コンテキスト プロトコル フレームワーク。
  • センサーとアクチュエータ
    • LED (ステータス表示用)
    • ブザー
    • サーボモーター
    • モーター
    • リレーモジュール
    • 超音波距離センサー
    • 温度センサー

仕組み

Chotu Roboサーバーは、AIシステムからのコマンドを処理するためのメインハブとして機能します。システムの動作フローは以下のとおりです。

  1. 設定
    • NodeMCU ESP32またはArduino Nano 368ボードは、さまざまなセンサーやアクチュエーター (LED、モーターなど) に接続されます。
    • Johnny-Fiveライブラリを使用すると、サーバーはマイクロコントローラーを介してハードウェア コンポーネントを制御できます。
  2. MCP統合:
    • McpServer は、ハードウェアと AI 間の通信を管理します。
    • サーバーは、 blinkLEDbuzzrunMotormoveServoなどのいくつかのツール(コマンド) を提供します。
    • 各ツールは特定の機能に関連付けられており、サーバーは AI システムからのコマンドを待機してそれらのアクションを実行します。
  3. AI制御
    • AI プロンプトは、ロボットの移動 ( move-chotu )、速度の制御 ( set-chotu-speed )、ロボットの方向転換 ( turn-chotu ) などのアクションをトリガーするために使用されます。
    • AIはClaudeやその他のAIアシスタントを使用してサーバーにコマンドを送信します。サーバーはこれらのコマンドを処理し、それに応じてハードウェアと対話します。
  4. リアルタイム通信
    • StdioServerTransport は、サーバーが外部の AI システムに接続し、コマンドをリアルタイムで実行できるようにします。
  5. ユーザーコマンド:
    • AI は**「Chotu を左に回して」「速度を 5 に設定して」**などのユーザーフレンドリーなコマンドを送信して、ロボットの動作を制御できます。

コマンドとツール

利用可能なコマンドとその機能の一部を次に示します。

  • blinkLED : 指定された時間、LEDを点滅させます。
  • buzz : 一定時間ブザーを鳴らします。
  • runMotor : 指定された速度で一定期間モーターを起動します。
  • moveServo : サーボモーターを指定された角度に移動します。
  • controlFan : ファンのオン/オフを切り替えます。
  • toggleRelay : リレー モジュールのオン/オフを切り替えます。
  • readTemperature : 現在の温度の読み取り値を取得します。
  • readDistance : 超音波センサーを使用して距離を測定します。
  • move-chotu : Chotu を特定のステップで移動します (AI プロンプト経由)。
  • start-chotu : Chotu を起動し、操作の準備をします。
  • stop-chotu : Chotu を停止し、操作をシャットダウンします。
  • turn-chotu : Chotu を指定された方向(左または右)に回転させます。
  • set-chotu-speed : Chotu の速度を設定します。

使い方

要件

  1. ハードウェア:
    • NodeMCU ESP32またはArduino Nano 368 (またはサポートされている任意の Arduino/ESP32 ボード)。
    • 各種センサーとアクチュエーター(LED、サーボ、モーター、超音波センサー、温度センサー、リレー)。
  2. ソフトウェア:
    • Node.jsをインストールします。
    • ハードウェア制御用にJohnny-Fiveをインストールします。
    • MCP SDKを使用して AI と統合します。
    • Arduino IDEを使用してマイクロコントローラーをプログラムします。

セットアップ手順

  1. Node.jsJohnny-Fiveをインストールします。
    npm install johnny-five npm install @modelcontextprotocol/sdk Set up the ESP32 or Arduino Nano 368 on the Arduino IDE: Install the ESP32 board support in the Arduino IDE for ESP32 or Arduino Nano 368 board if using. Connect the NodeMCU ESP32 or Arduino Nano 368 to your computer via USB. Upload the Code to the Board: Use the Arduino IDE to upload the provided code to the ESP32 or Arduino Nano 368.
    サーバーを実行します。
    Start the MCP server by running the script. This will set up the server and establish communication with the hardware. Connect to the AI: Send commands from the AI system (like Claude) to control the robot.

AI コマンドの例: Chotu を移動する:

コマンド: 「チョトゥを5歩前進させる。」 アクション: ロボットは指定された歩数で移動します。速度設定:

コマンド:「速度を10に設定」 アクション:ロボットの速度がそれに応じて調整されます。左折:

コマンド: 「Chotu を左に回転させてください。」 アクション: ロボットは左に回転します。

MCP インスペクターを使用してデバッグします。

npx @modelcontextprotocol/inspector node build/choturobo.js

今後の改善

このプロジェクトは、より高度なAIベースのロボットシステムを開発するための基盤となるフレームワークとして機能します。以下の方法で機能を拡張できます。

  1. カメラやマイクなどのセンサーを追加します
  2. より優れた意思決定のために高度な AI モデルを統合します
  3. グラフィカル インターフェイスを介してロボットを制御するためのモバイル アプリまたは Web インターフェイスを開発します
  4. Raspberry Pi の使用:
    • セットアップ: Raspberry Pi を使用して MCP サーバーを実行し、ハードウェア コンポーネントを制御します。
    • インストール
      sudo apt-get update sudo apt-get install nodejs npm npm install johnny-five npm install @modelcontextprotocol/sdk
    • Javaベースのサーバーへの接続:
      • Java サーバーのセットアップ: リクエストを処理し、Raspberry Pi と通信するための Java ベースの MCP サーバーを作成します。
      • Javaコード例:
        import org.modelcontextprotocol.server.McpServer; import org.modelcontextprotocol.server.transport.WebSocketTransport; public class ChotuRoboServer { public static void main(String[] args) { McpServer server = new McpServer(); WebSocketTransport transport = new WebSocketTransport("ws://raspberrypi.local:8080"); server.connect(transport); // Define tools and prompts here server.tool("blinkLED", params -> { // Implement LED blinking logic }); server.start(); } }
      • サーバーの実行:
        javac -cp modelcontextprotocol-sdk.jar ChotuRoboServer.java java -cp .:modelcontextprotocol-sdk.jar ChotuRoboServer
    • Raspberry Pi を Java サーバーに接続する:
      • Raspberry Pi と Java サーバーが同じネットワーク上にあることを確認します。
      • WebSocket または REST API を使用して、Java サーバーから Raspberry Pi にコマンドを送信します。
      • Java サーバーから Raspberry Pi へのコマンドの例:
        WebSocketClient client = new WebSocketClient(new URI("ws://raspberrypi.local:8080")); client.connect(); client.send("{\"command\": \"blinkLED\", \"params\": {\"time\": 5}}");

これらの手順に従うことで、Chotu Robo プロジェクトをより高度な機能で強化し、AI および Java ベースのシステムとの統合を向上させることができます。

-
security - not tested
A
license - permissive license
-
quality - not tested

Arduino ベースのロボット (ESP32 または Arduino Nano) を AI と統合し、LED、モーター、サーボ、センサーなどのハードウェア コンポーネントを AI アシスタント経由で制御できる MCP サーバーです。

  1. DEMO
    1. Overview
      1. Wired Mode - Arduino Nano 368
      2. Wireless Mode - ESP32 Wi-Fi Enabled Web Server
    2. Features
      1. Components Used
        1. How It Works
          1. Commands and Tools
            1. How to Use
              1. Requirements
              2. Steps to Setup
              3. Debug using the MCP Inspector:
            2. Future Improvements
              ID: fjq5opdbhr