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 Gimbal | reSpeaker 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 の物体検出と聴覚トラッキングを組み合わせます(例:音を聞く → その方向を向く → 視覚認識でそれが「人」かどうかを確認)。
皆さんのアイデアを楽しみにしています!🎉
操作手順と注意事項
-
デプロイの確認:Node-RED に前述のノードをインポートしたあと、右上の Deploy をクリックして反映させてください。
-
テスト手順:まず Node-RED を起動し、バックグラウンドで動作していることを確認してから、PC 上で次のコマンドを実行して Python スクリプトを起動します。
WiFi 接続後、reSpeaker.py コード内の "192.168.31.198" を、reCamera Gimbal の実際の IP アドレスに置き換えてください!
python Sound-Tracking/reSpeaker.py
マイクに向かって話すと、Python ターミナルに次のような出力が継続的に表示されるはずです。
SPEECH_DETECTED: 1
同時に、reCamera は音の発生源の物理的な角度へすばやく回転します。
-
物理的な向きのキャリブレーション:reSpeaker マイクアレイの「0 度」方向は、reCamera のデフォルトの「0 度」(正面)と完全には一致しない場合があります。パン・チルトが回転後に常に一定の角度だけずれている場合(例:常に 90 度ずれている)、Node-RED の新しく追加した
Calculate & Throttlefunction ノードをダブルクリックし、該当コードのコメントアウトを解除して、オフセット計算targetYaw = (targetYaw +90)% 360;を変更してください。 -
アンチシェイク設計:Python コードは 0.1 秒ごとにデータを更新して送信するため、これらの高頻度な信号をすべてモータコントローラ(CAN バス)に送ると、デバイスのバスがオーバーロードしてフリーズしやすくなります。そのため、Node-RED の function ノード内にアンチシェイクロジックを実装しています(角度変化が
>5°、または時間間隔が>1 secondのときのみ、ジェネレータがトリガーされます)。
技術サポート & 製品ディスカッション
弊社製品をお選びいただきありがとうございます。製品をできるだけスムーズにご利用いただけるよう、さまざまなサポートをご用意しています。お好みやニーズに応じて選べる複数のコミュニケーションチャネルがあります。

