---
# System prepended metadata

title: フロントガラスプロジェクト
tags: [AIM]

---

###### tags: `AIM`
# フロントガラスプロジェクト
## 関連メモ
* データ解析に必要な統計知識　
→　https://hackmd.io/brGi1hGfRXOk-3VN5kDyjw

## 必要な要件
- タグの移動方向の判別
- 通過した車線の判別
- 高速(120km程度)・低速(渋滞時の速度→10~30km程度)の両方に対応
- アンテナの設置角を考える(基本アンテナは動かさず、ソフトウェア側でなるべく処理したい)

## タグの移動方向の判別について
- RSSIや位相値を利用するとできそう。
    - アンテナに角度をつけるとRSSIや位相値で、方向を推定できる
- 位相値の変化だけでも方向を判別は可能っぽい
    - 位相値は低いところからピークを迎えてからちょっと下がる
    - もしくは、ちょっと上昇してからピークを迎えて開始点より下がる
    - 図の右側みたいな感じ
     ![](https://i.imgur.com/5yNuHke.png)
    - 単純に位相の変化開始点とピーク値と終了点をピックアップして、開始点と終了点の値を比較する。
    
## 車線の判別
- 各レーンにアンテナを設置
- 各アンテナで取得したRSSI値で、どのアンテナの近くを通過したかを判断する。
- 位相値の値で距離を判断可能であれば、どのアンテナに最も近づいたのかで判断しても良さそう。

## 移動速度の対応
- 高速移動に対応するにはアンテナの設置角度を大きくするとよいかも。
    - 角度を大きくすることで、遠い場所から読み取りを開始できる
    - 方向や車線の判別に必要なデータ数を十分に取ることができそう

## アンテナの設置角度
- 50º以上で設置するのが良さげ？？
    - 高速移動する場合を考えると、角度が小さい場合は読み取り範囲が狭くなり、取得可能なサンプル数が少なくなるため、移動方向や車線の判別が難しくなる。
    - 角度を大きめに設置すると、アンテナから離れた位置から読み取りが始まるため、通過までにサンプル数が多くなる。
- 高速移動時はこれで問題なさそうだが、低速移動時は？？
    - ~~設置角度が大きいと離れた位置から読み取り可能~~
    - ~~ゆっくり移動するタグのRSSIや位相値のサンプル数は、高速移動時より圧倒的に多くなる。~~
    - ~~大局的に見ると、RSSIや位相値の変化特徴は高速移動時と大差ない。~~
    - ~~高速移動と低速移動をどうやって判別して、処理してやるか。~~
    - 位相値の変化開始点と終了点を比較する方法なら、高速も低速も同じ処理でできるかなぁ。
    ***とりあえず卓上の簡単な実験環境で試してみるのがいいよね。遅い時にピークを取るのは結構大変かもよ？そういう意味では、その切り替えのポイントがどのくらいの速度なのか？みたいな話でもあるので(.m.e)***

## 実験環境
- アンテナの高さは3.5m
- どのようにアンテナを設置するのか
    - アルミパイプを使って設置しても良さそうだが、転倒の危険性
    → 三脚のように下部に足をつけて組み立てることで補強は可能かも。
- 移動速度は、10~30kmを想定(低速) 

## システム設計(?)
- リーダーアンテナ
    - 車載タグからEPCを取得
        - *RSSIや位相もね、ドップラーも取れるようにしておく(m.e.)*
- C#コンソールアプリ(?)
    - リーダーアンテナから以下のデータを取得・測定日時を追加してDjangoサーバに値を送信
    - C# Python間のデータやり取りは要勉強
        - *REST/API でやり取りもしくは Websocket で投げ込み続ける手もあるかも。
どちらにしろどんな構成にするかだよねぇ、RaspberryPiを中核にImpinjを制御するとともにWebサーバーにしちゃってもいいんだよねぇ (m.e.)
https://qiita.com/massa142/items/cbd508efe0c45b618b34*
- Djangoサーバ(Python)
    - 受け取ったデータをデータベースに保管
    - 測定結果を表示
        - 測定日時と表示件数を指定して表示
        - 数値の一覧表示とグラフ化したものを2パターン表示したほうがいい？
        →グラフのやり方は現状では分からないけど…
        ***どんなグラフがあったら良いか考えてみましょう（2021.6.14の定例で？ m.e.）***

## Webアプリケーション
### データベース設計
- Dataテーブル
    | データ項目 | 型 |
    |--|--|
    | タイムスタンプ | integer |
    | EPC | string |
    | アンテナ番号 | integer |
    | RSSI | double |
    | 位相値 | double |
    | 周波数(Channel) | double |
    | ドップラー | double |
    | リーダーの名前 | string |
    | 送信信号強度| double |
    | 実験No | integer |

- 実験時刻
    | データ項目 | 型 |
    |--|--|
    | 実験No | integer |
    | 開始時刻 | datetime |
    | 終了時刻 | datetime |
    
    - データの表示のみでアカウント管理が不必要であればテーブルは１つで十分ですか？
    ***とりあえずデータをアップロードして貯めるというスキルを作らないといけないから上記でいいんじゃないかな？まずは作ってみることが大切！！！（m.e.）***
    - 毎データ取得時間をいれていると重くなりそうなので、実験Noを指定して別テーブルで時刻と結び付けたほうがいいかなという気持ち

### CSVファイル読み込み
- https://qiita.com/t-iguchi/items/d2862e7ef7ec7f1b07e5
### REST/APIの設計
*将来的には、IMPINJ Itemsense や NEDAP Harmony などを参考にした仕組みがあったらいいけど、まずはこんなサイトを読んでみると良いかも？（m.e.）
https://qiita.com/mserizawa/items/b833e407d89abd21ee72*
    
### つくりたいページ
- 測定結果を表示するページ
    - データを一覧でばーっと書き出す表示方法
    ***RESTのAPI設計だね、まずはCSVで落とせればいいのかもしれないし、JSONでもよし。重要なのはどんな解析をするのか？どのアプリを使うの？などそれらに合わせた形が必要かな（m.e.）***
    - 指定した範囲のデータをいくつかのグラフに書き出す表示方法
        - 測定日時・件数・各数値の大きさで絞り込めたらいいかな…
        ***まずはどのライブラリを使うかだねぇ。Javascriptならこんなところを参考にしてみると良いかと。Highchart かな？（m.e.）
https://qiita.com/grgrjnjn/items/fa39778657493008c3b6
サーバーサイドで描画するなら matplotlib あたり？
https://qiita.com/nkay/items/d1eb91e33b9d6469ef51***

## 必要機材
実測に必要となる機材、特に東京から持っていくもののメモ

### ジグ関係
G-FUN/SUSのアルミパイプを使って3〜4m程度の高さを確保。名古屋市内で購入できるのは、熱田神宮の近くのカーマ。
下記サイトで設計したものをカットして送ってもらうことも可能。
https://store.g-fun.jp

### 卓上テスト用
ビデオスライダーとかをうまく使って位相の変動をリアルタイムでみられるようなテストに活用![](https://i.imgur.com/OHtbOrx.jpg)

#### 2021.6.19に持っていくもの
* **R/W XSPAN(フェーズドアレイアンテナ一体型）**
方向検知が可能なユニット、どの程度の精度が出るのかの確認用。
当プロジェクトでは、1枚のアンテナでソフト的に同様の性能を得ることが目的でもある。
![](https://i.imgur.com/8YEYLWK.jpg)
https://www.impinj.com/ja/products/readers/impinj-xseries-gateways
純正制御ソフトウェアは ItemTest（Winのみ対応）
https://support.impinj.com/hc/en-us/articles/204059593-Impinj-ItemTest-Software
* **ビデオスライダー(120cm)**
電動ではなく手動の方が便利！なんて家においてあっただけ.
https://www.amazon.co.jp/gp/product/B06ZZRRKW4/
* ~~G-FUNのコネクター類・・でも重いから名古屋で買おう~~
* 崎陽軒の焼売
* **M5Stack関係パーツ**
ステッピングモーター用モジュール等々
* **ログペリアンテナやダイポールアンテナ**
ログペリアンテナは指向性が強く周波数特性がよろしい・・らしく、測定によく使われるもの。![](https://i.imgur.com/OcUUAbh.png)

https://ja.wikipedia.org/wiki/対数周期アンテナ
https://engineer-climb.com/emission-antenna2/

ダイポールアンテナはアンテナの一番基本になるもの
![](https://i.imgur.com/Z0Arn6L.jpg)
https://ja.wikipedia.org/wiki/ダイポールアンテナ

その他、WIFIで使える広帯域アンテナも持っていく
*全てAlibabaで購入(https://agoal.aliexpress.com/store/2672017)*

* **この世で一番面白い統計学**
この内容を実装するだけでも十分！
![](https://i.imgur.com/qvIWJ1b.jpg)
https://www.amazon.co.jp/dp/447802605X

---
## ItemTest(IMPINJ)の使い方
Impinj社は、自社の機材用のテストアプリを提供している。
ソフト自体は、以下のサイトからダウンロード可能（最新版はサイト上で確認してね）
https://support.impinj.com/hc/en-us/articles/204059593-Impinj-ItemTest-Software

このソフトは Xarray/Xspan などのR/Wにも対応しているので、研究室にある Xspan を使うときにも動作確認に必須。
ちなみに Xspan のデモビデオも時間があるときに要確認！！
https://support.impinj.com/hc/en-us/articles/206488724-xSpan-Technical-Overview-Video-

* DATA SOURCES の右の「＋」ボタンを押してリーダーを追加。
（R/Wがないと設定画面が出せず！！どのアンテナポートを利用するか？セッションなどの設定をどうするかなどの基本的な設定行う。Session/Antenna/Modeあたりがポイント）
* Inventory の画面の右上で、読み取りモードの設定ができ、ここでマージンテストの設定を行う。

![](https://i.imgur.com/9UcdT2q.png)

TagLogging で、ログの保存先などを決定。
ログ取得のスライダーをグリーンにすることを忘れないように！
![](https://i.imgur.com/OFYaU00.png)

---
### **マージンテスト/Mergin Testとは？**
リーダーの出力を徐々に変化させ、最小出力とその時のRSSIを確認するテスト。近ければ出力が小さくても良いわけで、膨大なテスト空間がなくてもある程度のタグの特性の把握が可能。

* TIME でテストの時間と停止時間を決めるとともに、同じ出力で何度コマンドを出すかなどを決める。
* POWER 開始（最小）出力と最大出力、そしてそのステップ幅を設定する。
![](https://i.imgur.com/benniiU.png)



