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

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 スクリプトを起動します。

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

python Sound-Tracking/reSpeaker.py

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

SPEECH_DETECTED: 1

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

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

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

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

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

Loading Comments...