> For the complete documentation index, see [llms.txt](https://hacking-notes.jord4n.pro/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hacking-notes.jord4n.pro/ja/hacking-tools/enumeration/ruview-wifi-sensing.md).

# RuView WiFi センシング

カメラなしで Channel State Information を使って、存在、動き、バイタルサイン、部屋の活動を調べる方法を学ぶための RuView WiFi センシングメモ。

[RuView](https://github.com/ruvnet/RuView) は実験的なWiFiセンシング・プラットフォームです。カメラの代わりに、人が部屋の中を動く、座る、呼吸する、歩くときにWiFi信号がどのように変化するかを研究します。

<figure><img src="https://raw.githubusercontent.com/ruvnet/RuView/main/assets/v2-screen.png" alt="RuView WiFi DensePose observatory showing a room sensing demo with vital signs and presence panels"><figcaption><p>公式リポジトリの RuView Observatory デモ。</p></figcaption></figure>

{% hint style="info" %}
RuView は、許可されたラボや、人々が監視されていることを理解している空間でのみ使用してください。presence、pose、fall、vital-sign の出力は、独自に検証するまでは研究用シグナルとして扱ってください。
{% endhint %}

## ビジュアルデモと動画

ハードウェアを試す前に、これらのビジュアルでプロジェクトを理解してください。まずデモを見てから、インターフェースに表示される内容を自分で管理した実験結果と比較してください。

<figure><img src="https://raw.githubusercontent.com/ruvnet/RuView/main/assets/ruview-seed.png" alt="RuView overview graphic from the official repository"><figcaption><p>RuView の公式ビジュアル概要。</p></figcaption></figure>

### オンライン Observatory

公式ブラウザデモでは、空の部屋、バイタルサイン、複数人追跡、転倒検知、睡眠監視、侵入検知、捜索救助などのシナリオが順番に表示されます。

{% embed url="<https://ruvnet.github.io/RuView/>" %}

### Pose Fusion デモ

このデモは、視覚的な姿勢データと WiFi CSI の解釈の違いを理解するのに役立ちます。すべての部屋で同じように動作する証拠としてではなく、概念を確認するために使ってください。

{% embed url="<https://ruvnet.github.io/RuView/pose-fusion.html>" %}

### 点群デモ

点群デモは、センシング入力を空間的なビューに変換するという考え方を説明するのに役立ちます。

{% embed url="<https://ruvnet.github.io/RuView/pointcloud/>" %}

### 背景動画

この動画は RuView 専用ではありませんが、WiFi から DensePose を行う学術的な考え方を、簡潔かつ高レベルで説明しています。

{% embed url="<https://www.youtube.com/watch?v=OhrQ0T6Yl9k>" %}

| ビジュアル                 | 見るべきポイント                               |
| --------------------- | -------------------------------------- |
| Observatory デモ        | 存在、動き、信頼度、シミュレーションされたバイタルサイン、シナリオ切り替え。 |
| Pose Fusion           | 姿勢のような出力がどのように可視化されるか、そして検証がなぜ重要か。     |
| 点群                    | センシングがどのように空間表現になるか。                   |
| WiFi による DensePose 動画 | WiFi ベースの身体推定の背後にある研究背景。               |

## できること

RuView は、WiFi 信号の変化を、部屋レベルで役立つ情報に変換しようとします:

| ユースケース      | 平易な意味                                    |
| ----------- | ---------------------------------------- |
| 存在検知        | 部屋に誰かいますか？                               |
| 動き検知        | 誰かが歩いている、座っている、または動いていますか？               |
| バイタルサイン     | 小さな信号変化から、呼吸や心拍の傾向を推定します。                |
| 活動認識        | ジェスチャー、睡眠、部屋の活動、転倒の可能性など、繰り返しパターンを見つけます。 |
| スマートホームイベント | 存在や活動の状態を Home Assistant などのシステムに公開します。  |
| 研究デモ        | WiFi ベースの姿勢、点群、センシングシナリオを可視化します。         |

## 仕組み

WiFi はもともと部屋の中で反射しています。人がいると、その電波経路がわずかに変化します。RuView はその変化を **チャネル状態情報** （CSI）として読み取り、信号を整え、その場で起きていることを推定するモデルや簡単なルールに送ります。

簡単な流れ:

```
WiFi 信号
  -> ESP32 または CSI 対応ハードウェア
  -> CSI ストリーム
  -> RuView 処理
  -> 存在、動き、バイタルサイン、またはデモ可視化
```

わかりやすく言うと、カメラはピクセルを見ますが、RuView は電波反射の小さな変化を見ます。そのため研究には有用ですが、部屋のレイアウト、家具、壁、人の数、アンテナ位置、キャリブレーションの影響を強く受けます。

## 必要なもの

| 目的               | 推奨セットアップ                                               |
| ---------------- | ------------------------------------------------------ |
| まずインターフェースを試す    | シミュレーションデータを使った Docker デモ。                             |
| Python パッケージを学ぶ  | `pip install ruview` または `pip install wifi-densepose`. |
| 実際の CSI 取得をテストする | RuView ファームウェアを搭載した ESP32-S3 または ESP32-C6 ボード。         |
| より良い部屋カバレッジ      | 複数の ESP32 ノード、または小規模メッシュ。                              |
| モデル実験            | Hugging Face のモデルバンドルとローカルデータセット。                      |

## クイック Docker デモ

これはハードウェアを必要としないので、最初のテストとして最も簡単です。

```bash
docker pull ruvnet/wifi-densepose:latest
docker run -p 3000:3000 ruvnet/wifi-densepose:latest
```

開く:

```
http://localhost:3000
```

このモードを使って、ハードウェアを購入したり書き込んだりする前に、ダッシュボード、シナリオ、期待される出力を学んでください。

## Python パッケージ

Python パッケージをインストールします:

```bash
pip install ruview
```

代替パッケージ名:

```bash
pip install wifi-densepose
```

WebSocket と MQTT のワークフロー向けのオプションのクライアントサポートをインストールします:

```bash
pip install "ruview[client]"
```

基本インポート確認:

```python
from ruview import BreathingExtractor, HeartRateExtractor
```

## 事前学習済みモデル

RuView は、事前学習済みの WiFi センシング重みを Hugging Face で公開しています。ローカルにダウンロードするには:

```bash
pip install huggingface_hub
huggingface-cli download ruvnet/wifi-densepose-pretrained --local-dir models/wifi-densepose-pretrained
```

これらのファイルは、学習、確認、実験に使用してください。ライブ運用では、モデル形式やサーバー対応が変更される可能性があるため、最新のリポジトリ नोटを確認してください。

## ESP32 ハードウェアのセットアップ

実際の CSI センシングには、WiFi チャネル情報を公開できる ESP32 ハードウェアを使用します。README では、実用的な選択肢として ESP32-S3 と ESP32-C6 が挙げられています。

一般的な高レベル手順:

1. ESP32 CSI ノードのファームウェアをビルドするか、ダウンロードします。
2. ファームウェアをボードに書き込みます。
3. WiFi 認証情報とターゲットサーバーの IP を設定します。
4. RuView のセンシングサーバーまたはブリッジを起動します。
5. ダッシュボードを開き、小規模な部屋で実験します。

プロジェクト README にある書き込み例:

```bash
python -m esptool --chip esp32s3 --port COM9 --baud 460800 \
  write_flash 0x0 bootloader.bin 0x8000 partition-table.bin \
  0xf000 ota_data_initial.bin 0x20000 esp32-csi-node.bin
```

WiFi を設定:

```bash
python firmware/esp32-csi-node/provision.py --port COM9 \
  --ssid "YourWiFi" --password "secret" --target-ip 192.168.1.20
```

## 最初の実験

姿勢やバイタルサインを試す前に、まず簡単な実験から始めてください:

| 実験        | 記録する内容                |
| --------- | --------------------- |
| 空の部屋      | 誰もいないときの基準信号。         |
| 1 人が入室    | 存在の変化と信頼度。            |
| 部屋の中を歩く   | 動きの信号とタイミング。          |
| 静止して座る    | 誤検知と安定性。              |
| 人なしでドアが開く | 環境ノイズの確認。             |
| 2 人が入室    | 人数カウントと動きが不安定になるかどうか。 |

良いメモがあると、結果がより役立ちます:

* 部屋のレイアウト。
* センサー位置。
* WiFi チャネル。
* 人数。
* ノード間の壁や家具。
* 成功・失敗のテストを繰り返す。

## 便利なコマンド

シミュレーションデモを実行:

```bash
docker run -p 3000:3000 ruvnet/wifi-densepose:latest
```

モデルファイルをダウンロード:

```bash
huggingface-cli download ruvnet/wifi-densepose-pretrained --local-dir models/wifi-densepose-pretrained
```

プロジェクトの firmware フォルダから ESP32-C6 ファームウェアをビルド:

```bash
cd firmware/esp32-csi-node
idf.py set-target esp32c6
idf.py build
idf.py -p COM6 flash
```

リポジトリのスクリプトからライブ RF 部屋スキャンを実行:

```bash
node scripts/rf-scan.js --port 5006
```

## 使う場面

RuView は次のような場面に適しています:

* 無線および IoT 研究。
* カメラなしセンシングのプライバシー評価。
* スマートホームの存在検知実験。
* WiFi をセンサーに変える方法の理解。
* CSI、動き、RF フィンガープリントのラボデモ。

これは次のものの代わりにはなりません:

* 認定医療機器。
* 単独で信頼できる安全アラーム。
* カメラ並みの個人識別または姿勢推定システム。
* 適切な物理的セキュリティ検証。

## 検証チェックリスト

どの出力も信用する前に:

1. デモまたはサーバーが動作していることを確認します。
2. ハードウェアが RSSI だけでなく CSI を出していることを確認します。
3. 空の部屋での基準値を記録します。
4. 各テストを数回繰り返します。
5. 検知されないはずの否定テストを実行します。
6. バイタルサインや安全イベントを独立した参照値と比較します。
7. 成功したスクリーンショットだけでなく、失敗も記録します。

## 参考資料

* [RuView 公式リポジトリ](https://github.com/ruvnet/RuView)
* [RuView ユーザーガイド](https://github.com/ruvnet/RuView/blob/main/docs/user-guide.md)
* [RuView オンライン Observatory デモ](https://ruvnet.github.io/RuView/)
* [Hugging Face の RuView 事前学習済みモデル](https://huggingface.co/ruvnet/wifi-densepose-pretrained)
* [RuView モーションキャプチャガイド](https://ruview.blog/ruview-motion-capture/)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://hacking-notes.jord4n.pro/ja/hacking-tools/enumeration/ruview-wifi-sensing.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
