OpenSource-Hub

RuView

アプリケーション

ruvnet/RuView

カメラ不要で、WiFi信号を利用して空間知能と生命徴候モニタリングを実現。

概要

RuViewは、ESP32センサーを用いてWiFiチャネル状態情報(CSI)を収集し、壁越しの人体検知、呼吸・心拍数モニタリング、姿勢推定を実現します。すべてエッジデバイス上で動作し、クラウドやインターネットは不要です。

README プレビュー

# π RuView\n\n\n  \n    \n  \n\n\n> **Beta Software** — Under active development. APIs and firmware may change. Known limitations:\n> - ESP32-C3 and original ESP32 are not supported (single-core, insufficient for CSI DSP)\n> - Single ESP32 deployments have limited spatial resolution — use 2+ nodes or add a [Cognitum Seed](https://cognitum.one) for best results\n> - Camera-free pose accuracy is limited (PCK@20 ≈ 2.5% with proxy labels) — [camera ground-truth training](docs/adr/ADR-079-camera-ground-truth-training.md) targets **35%+ PCK@20**; the pipeline is implemented, but the data-collection and evaluation phases (ADR-079 P7–P9) are still pending, so no measured camera-supervised PCK@20 has been published yet\n>\n> Contributions and bug reports welcome at [Issues](https://github.com/ruvnet/RuView/issues).\n\n## **See through walls with WiFi** ##\n\n**Turn ordinary WiFi into a spatial intelligence / sensing system.** Detect people, measure breathing and heart rate, track movement, and monitor rooms — through walls, in the dark, with no cameras or wearables. Just physics.\n\n### π RuView is a WiFi sensing platform that turns radio signals into spatial intelligence.\n\nEvery WiFi router already fills your space with radio waves. When people move, breathe, or even sit still, they disturb those waves in measurable ways. RuView captures these disturbances using Channel State Information (CSI) from low-cost ESP32 sensors and turns them into actionable data: who's there, what they're doing, and whether they're okay.\n\n**What it senses:**\n- **Presence and occupancy** — detect people through walls, count them, track entries and exits\n- **Vital signs** — breathing rate and heart rate, contactless, while sleeping or sitting\n- **Activity recognition** — walking, sitting, gestures, falls — from temporal CSI patterns\n- **Environment mapping** — RF fingerprinting identifies rooms, detects moved furniture, spots new objects\n- **Sleep quality** — overnight monitoring with slee

FAQ (5)

トラブル対応
WiFi CSIによる人間検知は詐欺ですか?なぜ私のラップトップでは動作しないのですか?

これはデマではなく、確立された技術です。最も一般的な問題は、サポートされていないハードウェアを使用することです。Channel State Information (CSI) を公開するのは特定のチップセットのみです。内蔵のラップトップ WiFi を含むほとんどのコンシューマー向け WiFi アダプターは CSI をサポートしていません。互換性のあるハードウェアを使用してください:ESP32-S3(最も安価で簡単)、修正済みファームウェアを搭載した Intel 5300 NIC、または ath9k パッチを適用した Atheros AR9580。ESP32-S3 の場合は、firmware/esp32-csi-node/ からファームウェアをフラッシュし、ステップバイステップのチュートリアル(issue #34 参照)に従ってください。アンテナの近くを歩き、アグリゲーターの振幅の変化を観察してください。サポートされているハードウェアを使用しても問題が解決しない場合は、新しい issue でシリアル出力とアグリゲーターログを提供してください。

参照 Issue #37
トラブル対応
Dockerイメージghcr.io/ruvnet/ruviewをプルする際に「denied」エラーが発生するのはなぜですか?

正しいイメージ名は ghcr.io/ruvnet/wifi-densepose:latest であり、ghcr.io/ruvnet/ruview ではありません。リポジトリ所有者はコンテナに wifi-densepose という名前を付けました。正しい名前を使用してください:GitHub Container Registry から docker pull ghcr.io/ruvnet/wifi-densepose:latest、または Docker Hub から docker pull ruvnet/wifi-densepose:latest。amd64 と arm64 の両方のアーキテクチャが利用可能で、公開されています。

参照 Issue #852
トラブル対応
sensing-serverで可視化ページを開くときの404 errorの修正方法

サーバーはUIディレクトリから静的ファイルを提供します(デフォルト: バイナリからの相対パス ../../ui)。404エラーが発生した場合、パスが正しくない可能性があります。uiフォルダが存在し、サーバーの作業ディレクトリからアクセス可能であることを確認してください。--ui-pathフラグで上書きできます。例: --ui-path ./ui または絶対パス。サーバーを再起動し、ログに正しいUIパスが表示されていることを確認してください。

参照 Issue #188
トラブル対応
なぜ私のESP32 CSIノードはstate=8とyield=0ppsを表示し、UDPデータがセンシングサーバーに届かないのですか?

プリビルドのリリースバイナリでは、CSI収集がWi-Fi管理フレーム(ビーコン、プローブ)のみに制限されています。これによりCSIコールバックレートが低下し(多くの場合約18秒間隔)、アグリゲーターがステート8を超えて進行しイールドを生成するために必要な最小フレームレートに達しなくなります。その結果、UDP経由でCSIフレームが送信されず、ダッシュボードがOFFLINEのままとなります。回避策:DATAプロミスキャスフィルタを有効にして(sdkconfigまたはソースを修正)ファームウェアをソースからビルドし、すべてのデータフレームをキャプチャしてください。恒久的な修正:#906でマージされ(ディスプレイなしボードがデータフレームをキャプチャするようになりました)、#908で更新されたバイナリが公開されました。最新のリリースバイナリを使用するか、mainブランチからビルドしてください。

参照 Issue #897
トラブル対応
激しいWiFiデータトラフィック下でESP32-S3のプロミスキャスモードをMGMTのみに設定した場合、CSIコールバックが非常にまばらになる(70秒間にたった3回)のはなぜですか?

MGMT-onlyプロミスキャスモードは、管理フレーム(ビーコン、プローブ等)のみをキャプチャし、データフレームはキャプチャしません。YouTube 4K + iperfのような高負荷トラフィックはデータフレームで構成されているため、CSIコールバックは偶発的な管理フレームでのみトリガーされます。データトラフィックから頻繁にCSIを取得するには、スニファを構成してDATAフレームもキャプチャするようにしてください(例:MGMTとDATAの両方を有効にする、またはすべてのフレームをキャプチャするフィルタを設定する)。

参照 Issue #866