メインコンテンツまでスキップ

reCamera Gimbal の音源定位

はじめに

今回は少し遊び心を加えて、オーディオとビジュアルのエッジ AI を組み合わせた実験をしてみました!🤖

このデモでは、Seeed Studio reSpeaker USB Mic Array を RISC-V 搭載の reCamera Gimbal に接続しました。Sound Source Localization(DOA:到来方向推定)を活用することで、ジンバルのブラシレスモーターが自動的に回転し、リアルタイムで話者の方向を向くようになります。マルチモーダルなエッジデバイス同士がシームレスに連携できることを体験できる、とても楽しいデモです。

このデモを完成させたあとの動作イメージは次のとおりです。

ハードウェアの準備

reCamera Gimbal 1 台
reSpeaker XVF3800 1 台
コンピュータ 1 台

reCamera GimbalreSpeaker XVF3800

1. SenseCraft を開いてアプリケーションをデプロイする

1.1 reCamera Gimbal の設定

まず、reCamera Gimbal の電源は接続せずに、Type-C を直接コンピュータに接続し、192.168.42.1 にアクセスします。表示された画面の左下にある "Login to SenseCraft" をクリックしてログインし、その後 WiFi を接続します。接続する WiFi がコンピュータと同じであることを確認してください。そのうえで reCamera Gimbal の IP アドレスを確認し、その IP アドレスをコピーしてアクセスし、正常にアクセスできるか確認します。その後 Type-C ケーブルを抜き、12V 電源を接続します。reCamera Gimbal の自動キャリブレーションが完了したら、先ほどの IP アドレスをブラウザで再度開き、reCamera Gimbal の画面に入り、Node-RED が正常に起動していることを確認します。

1.2 アプリケーションのデプロイ

SenseCraft にアクセスし、"Applications" をクリックして "Sound source localization Camera" という名前のアプリケーションを探します。アプリケーション画面に入ったら "Deploy this Application" をクリックし、"Option 1: Deploy via USB" を選択します。

デプロイ後に表示されるワークフローは、次のようになっているはずです。

2. ソースコードの取得と Python 作業環境の構成

GitHub プロジェクト にアクセスし、パッケージをダウンロードして解凍します。

USB 経由で reSpeaker と通信するために、コンピュータに依存パッケージをインストールします。

# 提供された requirements ファイルから必要な Python パッケージをインストール

pip install -r Sound-Tracking/requirements.txt

# Conda を使用して libusb をインストール(バックエンドドライバサポートに必須)

conda install -c conda-forge libusb

WiFi 接続後、reSpeaker.py のコード内にある "192.168.31.198" を、あなたの reCamera Gimbal の実際の IP アドレスに置き換えてください。

3. テスト

コンピュータ上で Python スクリプトを実行し、次の処理を行います。

python Sound-Tracking/reSpeaker.py

マイクに向かって話すと、Python ターミナルに SPEECH_DETECTED:1 が継続的に表示されると同時に、reCamera があなたの声の方向の角度へすばやく回転するはずです。

もっと遊び方を広げよう!

このデモはあくまでスタート地点です。ぜひ皆さんに、この仕組みをベースに二次開発を行い、よりハードコアな遊び方を拡張していただきたいと考えています。例えば:

-トリガー連動:Node-RED や Python スクリプトを変更して、reCamera Gimbal が音源方向へ向いた直後に 録画を開始 したり、写真を撮影 したりするようにできます。

-インテリジェントセキュリティ:Home Assistant と組み合わせることで、室内で異常な物音が発生したときに、自動で追跡・録画を行うことができます。

-視覚と聴覚の二重確認:YOLO11n の物体検出と聴覚トラッキングを組み合わせます(例:音を検知 → その方向を向く → 視覚認識で「人」かどうかを確認)。

皆さんのアイデアを楽しみにしています!🎉

操作手順と注意事項

  1. デプロイの確認:Node-RED に前述のノードをインポートしたあと、右上の Deploy をクリックして反映させてください。

  2. テスト手順:まず Node-RED を起動し、バックグラウンドで動作していることを確認してから、PC 上で次のコマンドを実行して Python スクリプトを起動します。

reCamera Gimbal が WiFi に接続したあとの実際の IP アドレスで、reSpeaker.py コード内の "192.168.31.198" を必ず置き換えてください。

python Sound-Tracking/reSpeaker.py

マイクに向かって話すと、Python ターミナルに次のような出力が継続的に表示されるはずです。

SPEECH_DETECTED: 1

同時に、reCamera は音の発生源の物理的な角度へすばやく回転します。

  1. 物理的な向きのキャリブレーション:reSpeaker マイクアレイの「0 度」方向は、reCamera のデフォルトの「0 度」(正面)と完全には一致しない場合があります。パン・チルトが回転後に常に一定の角度だけずれている場合(例:常に 90 度ずれている)、Node-RED で新しく追加した Calculate & Throttle 関数ノードをダブルクリックし、該当コードのコメントアウトを解除して、オフセット計算 targetYaw = (targetYaw +90)% 360; を変更してください。

  2. アンチシェイク設計:Python コードは 0.1 秒ごとにデータを更新して送信するため、これらの高頻度な信号をすべてモータコントローラ(CAN バス)に送ると、デバイスのバスがオーバーロードしてフリーズしやすくなります。そのため、Node-RED の関数ノード内にアンチシェイクロジックを実装しています(角度変化が >5°、または時間間隔が >1 second のときのみ、ジンバル制御がトリガーされます)。

技術サポート & 製品ディスカッション

弊社製品をお選びいただきありがとうございます。製品をできるだけスムーズにご利用いただけるよう、さまざまなサポートをご用意しています。お好みやニーズに応じてお選びいただける複数のコミュニケーションチャネルがあります。

Loading Comments...