2020年4月17日金曜日

赤外線で体温測定は難しい。

FLIRの開発部長よりサーモで体温測定をする場合はFLIR E95(約160万円)かFLIR T540(約190万円)であれば可能ですが、LEPTONはその様な精密な造りでは無くまた精度も保証していないとの事…
皮膚及びセンサー自体は環境温度の影響を受けると思い
NECの資料を参考に係数と使って体温を算出すると使えない結果になりました。
https://jpn.nec.com/techrep/journal/g10/n03/pdf/100312.pdf#search=%27%E8%B5%A4%E5%A4%96%E7%B7%9A%E3%82%B5%E3%83%BC%E3%83%A2%E3%82%B0%E3%83%A9%E3%83%95%E3%82%A3%E3%81%AB%E3%82%88%E3%82%8B+%E5%A4%AA%E7%94%B0%E4%BA%8C%E9%83%8E%27
今までの経験でも温度測定結果はばらつく事は分かっていましたが、今回はその原因の可能性を調べてみました。
LEPTONは放射温度測定機能無しと有りのモデルがあり、有りの方は冷接点がありその電圧差で絶対温度を出力する仕様になっていますが、実際ある程度ソフトで修正しても仕様書上は±3度が限界です。
原因の一つは通電時のセンサーを収納している温度です。






環境温度は気温と言うよりセンサーの周囲温度の影響大きいようです。

もう一つの問題は人の皮膚温度は性別、年齢などの個人差があり屋外から屋内に移動して直ぐや自転車で冷たい風に吹かれた顔の皮膚温度で体温を導き出すのは無理があります。
それも今回は極力環境温度に馴染ませる様に条件を調整はしました。

BOSONはセンサーが大きくデータを見る限り比較的安定しているようなので引き続き観察してみます。

因みに共立電気の放射温度計も試してみましたが、精度はダメです。但し測定範囲が広いので体温に近い低温では仕方がないと思います。


結局はデータをとって確認するしか方法がありません。
温度測定はそう簡単なものではないと改めて痛感しました。


2020年4月12日日曜日

今、出来る事。

先ず、生き残る事。
その為にするべき事は感染しない事、感染を増やさない事。
出来るだけ人との接触をしない。
手洗い、うがいをする。

次にそうする為に考え行動する事。
マスクをする、人と距離をとる。
距離が取れない場合はアクリル板で人の間を仕切る。

日本のニュースやネットの情報は不安を煽るのが上手で収束のシナリオを提示する事をしないので確率論終わりの始まりを数理学的に解説した動画をご覧下さい。このチャンネルは秀逸で以前もAIの説明につかったところです。
https://youtu.be/Kas0tIxDvrg
youtubeの言語設定を日本語にすると日本語字幕がでます。

結論を言うと今指数関数的に感染者は増えていますが、増大係数が1を超えている間は増え続けますがまた1に戻った段階で指数関数的に減ってきます。

これを早める為に、手洗い、うがい、外出を控えると指数関数的に減ると言う事です。
批判ばかりしないでこの様な情報も使って冷静に行動する事をしないと人は疲れてしまいます。

ところで、菊水酒造が77度の蒸留酒を作って販売したそうです。

消毒用として販売するには許認可が必要な為、消毒用として販売しない知恵も使って通常のルートで販売しました。

なので私たちも出来る事を始めます。
何がどれくらい役に立つかは後回し!

太陽光パネルの不良を検出する為に開発したAIメンテくんを応用して出勤者の発熱を検出するシステムを開発。

  1. 画像認識で顔を検出。
  2. 顔全体の中で最高温度を検出。
  3. 閾値を超えたら発報

新たに基準温度をとってそれより高いか低いかを比較する機能を追加

この為に同僚に協力をお願いして顔の皮膚温度と体温と気温との相関関係をを調べる。
今回女性のデータは一人ですが、男女で違う事も考慮。データが少ないですが、年齢でも
違いがある事が分かった。
発熱を探し出すには機器の性能だけでは無く、使い方も啓蒙する事が必要です。

なんでもかんでも追加するのではなく、必要な機能を絞る様にしています。




2020年4月3日金曜日

FLIR LeptonとBOSONの温度表示の注意点。

FLIR Lepton(with Radiometry) & BOSON の赤外線センサー(放射温度測定機能付きを含む)の温度表示の注意点をまとめました。

W&Tサーマルカムについて
現在使用しているセンサーはFLIR LeptonFLIR BOSONです。
私達のシステムについて温度精度に関するご質問をに対する参考にして頂ければと思います。

まずセンサーからのデータはLepton(14bit)でBOSON(16bit)なので温度に反応する制度はセンサー自体の仕様書の誤差と同じです。

2番目に放射温度計の基礎知識も必要です。
センサーは遠赤外線の8~14μmの波長を利用しています。
対象物の温度が同じでも表面の状態や材質でも測定する温度は違います。
その際に重要になるのが放射率です。
放射率=吸収率+反射率+透過率
同じ温度の物質でも反射したり透過したエネルギーの分だけ温度が低くなっています。
水は0.920.98、コンクリートは0.94、ガラスは0.750.95、木は0.500.80

理論上、空気は0で1の吸収率は黒体と呼ばれるものです。
実際は100mで(気温35度湿度80%)20%減衰します。


放射率の誤差と温度の誤差は計算では補正出来ないので注意して下さい。
詳細は放射率を調べて見てください。

センサーの感度の誤差と放射率で赤外線メーカーは±3から±5の温度誤差と書いています。

FLIRの赤外線センサーは感度としては0.05k(0.05度)
2種類のモデルがあり一つは熱電堆(熱を電気に変えるセンサーのみ)で放射温度測定機能なし
環境温度により温度の補正が必要。

熱電堆に放射温度測定機能付きです。
環境温度により温度の補正は不要。(とはいえセンサー誤差の考慮は必要)

熱電堆は絶対温度が測れません。その為、熱電対の温接点と冷接点をを使って補正して絶対温度に近づける様に放射温度測定機能付きがあります。(自動で温度補正されたでデータが出力される。)

Lepton3.0の場合(放射温度測定機能無し)は代わりにチップ温度と冷接点温度がi2cで確認出来るようになってます。なのでソフトで補正する必要がある。
BOSONも冷接点温度は出力出来ます。

ですから温度表示についての注意点を良く理解してください。
  1. 先ずセンサー自体の誤差
  2. センサー部品が受ける環境温度
  3. 理論上空気は放射率0ですが、実際には気温35度で相対湿度80%の場合センサーから対象物まででエネルギーは20%減ってしまいます。
  4. 対象物の放射率
  5. センサーと測定対象物との角度
  6. 測定物の測定範囲



何が言いたいかと言うと、この赤外線センサーは相対温度を測る機器を理解してください。
上記の注意点から温度はあくまで参考と考えるべきです。

もちろん放射温度測定機能付きのセンサーを環境温度に影響受けにくい様に設計したケースの入れると温度表示はより真値に近づきます。

ご参考までに

今回ソフトウェアを作るにあったって氷や沸騰するお湯と常温の水を測定した温度で校正しています。恒温槽などの設備がないのでどこまで正確な測定が出来ているかは分かりませんが、温度表示はあくまで参考にして下さい。
上記注意点を全て正確に校正(補正)出来てればさらに真値に近くと思います。
今後より正確な温度に改変されたい方は下記を参考にして下さい。
正直センサー単体の個体差もあり校正してもキリはないと思います。

LEPTONの場合、
その係数は
0.56
459.67
1.8
0.05872
472.22999
32.0
read_lepton_frame();
     
     for (int frame_number = 0; frame_number < 60; frame_number++){     
       for (i = 0; i < 82; i++)
       {
          p=lepton_image[frame_number][i] ;
          if(i >= 2){ 
              if(p < min) min = p;
              if(p > max) max = p;
          }
          if(i==0) lepton_image[frame_number][i]=(p & 0x00ff);
       }
     }     
     diff = max - min;
     diff = diff / 256.0f;
     if(diff < 0.56f) diff = 0.56f; // 0.66

        lepton_command(SYS, 0x10 >> 2 , GET); //センサー温度i2cから取得
        float aux=read_data() ;

        float fpatemp = aux/ 100.0f;
        float fpatemp_f = fpatemp * 1.8f - 459.67f;

       Serial.println(fpatemp-273.15);
        value_min = ((0.05872 * (float)min - 472.22999f + fpatemp_f));
        value_min= (value_min - 32.0f) / 1.8f;    
        value_max = ((0.05872 * (float)max - 472.22999f + fpatemp_f));
        value_max = (value_max - 32.0f) / 1.8f;

       Serial.println(value_min);
       Serial.println(value_max);

BOSONの場合も 多項式で計算しました。(Polynomial)
37.4度39.2度41.2度42.5度43.5度43.9度44.度44.4度45.7度38度42.9度45度
35.3355435.1220634.9477835.4122934.8318535.1766535.5   34.3911436.0179836.5126435.4622435.31798



コロナウィルスでサーモグラフィーを使って体温の高い人を抽出で皮膚表面温度を測る場合は室温15度以下だと誤差が大きくなるので注意が必要。
その際の環境温度は20度から25度以上が安定します。体温に近い温度にする方が誤差は小さくなります。





校正はそれぞれの現場で体温と気温を測ってこの表を参考にすると良いでしょう。

2020年4月1日水曜日

発振器を動かす(あえなく失敗)

これが動かないと何も始まらない。

ショットキーバリアダイオードの向きが中華製仕様書自体の
表記ミスで動かなかった。
勉強になったのは逆接しても電圧が出てその電圧が順方向ドロップよりなぜ大きくなるかが分からなかった。
単に方向が間違って漏れ電流の電圧を測っていただけですが、結構悩みました。
次に発振器が発信しない。

色んなメーカーの中からこのアバルコムの発振器を選定も素直に動いてくれません。
エプソン等日本のメーカーを選ぶにも中国で量産出来るものかも分からず…
最初の制定を間違えたのかとも思いますが、基板の実装可能な部品にいつも日本のメーカーの全てのサイズがあるわけではないので元の部品に近いサイズの同等品を探す事から初めています。

適当に配線すると発振しない。あれ? 何で?
良く仕様書を見ると300kでプルアップしろって書いてある。
オリジナルのブレイクアウトボードには何もついていないのですが、元のメーカーと品番が分からないのでこんな事になっています。
(とは言え仕様書をよく読むのは基本なので悪いのはこちらですが…)

まあそれは良いとして、これからが大変半田付けしてテストするのですが、この小ささです。
この四隅に空中配線する事が出来るか? やらんといかんのですが。
他の機器と一緒に写真を撮るとゴミみたいなやつ(アルミテープに固定しています。)

半田付けで熱を掛け過ぎて壊さない様にしないといけないと同時に隣の半田が溶けて外れない様にするのも同時にしないといけません。職人技?失敗してももう一個予備はあります。
アップにするとこんな感じ。
取り敢えず300kの抵抗を数本買いに行こうっと。

ここはハードウェア担当の私の仕事です。ソフト上は完成しています。
関西電機アプリにとって非常に重要でこれが無いとFLIRやGROUP GETSのブレイクアウトボードの使うしかないのですが、FLIRは無駄にデカくて邪魔なピンが沢山ついています。
GROUP GETSは入力のショットキーバリアダイオードのバイアス電圧が高く安定しないトラブルが出ています。(多分ショットキーバリアダイオードに不良品が混じっている?)

なので自社設計です。もう2回製作に失敗しています。ショットキーバリアダイオードの逆接はメーカーの仕様書が逆になっていたのが原因だったので、ここを確認出来れば出来るはず。

さて先ずは空中配線は2mm間では4つを同時に半田出来ませんでした。
次にスルーホールの基板に半田付けてみました。
2.54mmピッチでもまだ大きく半田が回り込んでいない感じ。
付いている様に見えますがオシロで見る限りどこかが繋がっていない。

1.27mmのスルーホールの基板を1枚手配しました。

2020年3月24日火曜日

KANSAI DENKIサーマルカム

鍵となる技術に着目して(赤外線センサーLEPTONをWiFi機器ESP8266に無線で繋げる)開発しました。4年前に同じ様な開発をドイツ、オーストリアにありました。それぞれ会社は無くなりました。結局どこもマイナーな問題で行き詰まっていました。
今も3年前のまま、Available soonっていつ?

①CPUをシングルコアにするかマルチにするか?
②VSYCN=赤外線センサーのデータを転送する際のタイミングを決めるピン。
どちらも赤外線の画像データを安定させる為の問題です。

私たちは当初から力技で両方も問題に取り組んでいました。ESP8266はシングルコアです。ESP32はマルチコアでVSYCNを併用すれば安定します。ESP8266でもVSYCNを併用すれば安定しますが、スケッチにdelay, yieldを適宜挿入する事でタイミングを調整してVSYCN無しでも安定する様になっています。ここまで千数百回のコンパイルで実験しています。細かなプログラム追加後の調整も経験的な変更を加えて安定させています。

元々FLIRのブレイクアウトボードがLEPTON初期の80x60をベースに作っていて160x120の様に4画面を後で合成する様なモデルを想定したブレイクアウトボードにしなかったので上記2社が消滅したと言っても良いと思います。

delayとyieldで擬似的にVSYCNと同じ様に画像のタイミングを取るのは小野さんでないと出来ない神業です。(私がVSYCNピン付きのブレイクアウトボードを完成出来ていないのが原因でもありますが。。。)
ぼちぼち開発再開しないと(^◇^;)時間が無くて2.5mm角の発振器に300kのプルアップ抵抗を付けて確認するのが億劫で出来ていない。(言い訳?)

流石中国のM5stackのエンジニアも初期モデルで上記2社と同じミスを犯して現在VSYCNからタイミングを測る様に修正しているので早晩バージョン2が出来る様です。

1stバージョンはこれで完成。カナダ、アメリカの開発者の評価が高い様です。


関西電機工業ブランドはこの2ndバージョンでアップルのマルチスプレッドの制約の緩和とopenGLの許容のお陰でリリース出来ました。アンドロイドと違いアップルの制約は厳格で今回のタイミングでないと出来なかったアプリの様な気がします。

もう一つアプリをリリースする予定。
より解像度の高いFLIR BOSON(320x240)これにiPhoneのインとアウトの可視カメラ映像にYoloの画像認識を掛け合わせた機能を追加中。

もうすぐNVIDIA Jeton NXも販売されます。Jetson Nanoより実用的な機能。ソフトウェアなXavierと共通なので現在XavierでソフトをバージョンUP中。

これでiPhoneで直ぐに実行しかもバッテリで動作するシステムと常時稼働のJestonの両方が揃うのでいろいろなアプリケーションで使えます。
ここまで凄いアプリになるなんてw。




2020年3月22日日曜日

coronavirusとサーマルカム

ここ2ヶ月程はシンガポールとフィリピンのダウンロードが特に増えています。

今回のコロナウィルスに関係しているのでしょう。
有料のThermal Cam3xを無料にした方が社会貢献が出来そうです。
FLIR Lepton3.5やオムロン以外のサーモグラフィーセンサーがコロナウィルスの騒動で軒並み売り切れです。
サーモグラフィーセンサーとスマホが無線で接続出来るのでスマホをウィルス感染のリスクが減るのも結果としてメリットになりました。

アプリの取り扱いが難しいので有料のアプリを試そうと言う人は中々いません。
BOSONのアプリも進行中でこれもまた画期的なアプリになりそうです。
玄人受けしそうな内容になります。小出しにするとサーモグラフィー画像だけでなくiPhone11のインアウトの可視画像にも画像認識が使える様になります。
サーモグラフィーはBOSONなのでLeptonより精細なサーモグラフィー画像で画像認識と録画が出来る。




2020年3月17日火曜日

NVIDIA NGC

ドライバーは入っている模様
ファイル名はEnglishになっている。
CUDAツールキットとしては入っていない?
一旦作業休止