第3話でご紹介するデモは、温度センサー、湿度センサー、気圧センサーを搭載したマイコンボードから送信されるデータをNVIDIA NemoClawで観測します。データの取得は、AIエージェントのCron機能を利用して、一定間隔で行います。
システム構成
センサーデータは、マイコンボードからBLE UARTで送信されます。NemoClawがBLE UARTのインターフェースを持たないため、REST APIエンドポイントであるセンサーデータサーバーを設け、NemoClawはそのサーバーからデータを取得します。
|
モジュール |
役割 |
|
Raspberry Pi Pico 2 WH |
センサーデータの発信元 |
|
センサーデータサーバー |
センサーデータを公開するAPIエンドポイント |
|
vLLMサーバー |
ローカルLLMの実行 |
|
NemoClaw |
中心的なAIエージェント、SKILL.mdに基づく行動 |
|
Discord |
ユーザーへの通知チャネル |
センサーデータサーバー
BLE UARTで受信したセンサーデータを、REST APIで公開するセンサーデータサーバーを作成し、NemoClawは、このサーバーからデータを取得するようにしました。APIは本デモ固有のものですが、FastAPIを利用することにより、容易に実装できました。下図は、作成したAPIをSwagger UIを用いて表示しているものです。
ネットワークポリシー
NemoClawのAIエージェントがセンサーデータサーバーにアクセスするためのネットワークポリシーは以下のとおりです。
preset:
name: sensor-api
description: "Sensor API"
network_policies:
sensor_api:
name: sensor_api
endpoints:
- host: xx.xx.xx.xx # 実際のIPアドレスを記載する
port: 8100
protocol: rest
enforcement: enforce
rules:
- allow: { method: GET, path: "/" }
- allow: { method: GET, path: "/status" }
- allow: { method: GET, path: "/sensor/latest" }
- allow: { method: GET, path: "/sensor/history" }
- allow: { method: GET, path: "/ble/scan" }
- allow: { method: POST, path: "/ble/connect" }
- allow: { method: POST, path: "/ble/disconnect" }
binaries:
- { path: /usr/bin/curl }
- { path: /usr/local/bin/node }
エージェントスキル
センサーデータサーバーの利用方法は、Agent Skillsに準拠した形式で記述し、nemoclaw sandbox skill installコマンドでインストールします。このエージェントスキルにより、プロンプトで指示せずとも、AIエージェントはセンサーデータの取得方法を理解します。
AIエージェントとの会話例
以下は、AIエージェントにセンサーデータを読み出すよう依頼した例です。「BME688」はセンサーデバイスの型名です。
Cronジョブの例
以下は、Cronジョブで、センサーデータを定期的に監視した場合の例です。
プロンプト:「bme688-sensor-api SKILLを参照して、BME688センサーから出力されるデータに変化がないかモニターします。」
お問い合わせ
第3話では、温度センサー、湿度センサー、気圧センサーデータを定期的に取得し、NemoClawで観測する方法について解説しました。
第4話では、加速度センサー(IMU)を利用して活動の変化を検出し、AIエージェントへリアルタイムに通知する方法を解説します。