SSブログ

ミリ波レーダーを使った動体検知システム(1/5)

 TI社製のミリ波センサー(レーダー)を使った動体検知システムを作ろうと思い、評価モジュール IWR1642BOOST (DSP とMPUを統合したシングルチップ 76GHz ~ 81GHz ミリ波センサ IWR1642 を搭載した評価検討用基板)とRaspberry pi3を使って検出物の位置表示とアラーム機能を出すプロトシステムを作製しました。
 検出距離は対象物の大きさやレーダー設定によりますが、TIの表示ソフト(mmWave Demo Visualizer)によると人(大人)で40m 程度、乗用車であれば 75m程度は可能なようです。
将来的には獣害検知や防犯用途に使えるようにしたいと思っています。
 * IWR1642BOOST はMouser で購入しました。単価US$299 でしたが税金や送料含めて 39,000円でした。

1. システム
 写真1と図1にシステムの写真と構成図を示します。

写真1 システムの写真
写真1_レーダーシステム.png

図1 システムの構成
図1_レーダーシステム構成.png
ここでは自作したRaspberry pi3B&3.5"モニター一体ユニットを使っていますが、Raspberry piが使える環境であれば問題ありません。モニターはHDMI接続でも良いですが、レーダー画面のWindowは 480x320 (dots) になります。 ソフトウェアのアラーム音制御部は自作オーディオ回路専用です。

 ミリ波レーダー用のデバイス選定に当たっては検出距離の大きいIWR1642 を選びました。(注意 IWR1642は産業用、AWR1642は車載用)
このデバイスは内部にMCUとDSPを持っていて、車載用や産業用にレーダー性能を最適化して用いるにはそれぞれのプログラムをカスタマイズが必要で、そのためにはSDKを使ったソフト開発が必要です。
これに要求されるレーダーシステム、アルゴリズムならびにソフトウェアの知識はかなり高度で、とても私の能力の及ぶところではありません。
しかし動物や高速でない車などの物体の位置検出をするのであれば、IWR1642BOOSTにはデモ用のプログラム(mmWave SDK)を使ってPC側のアプリケーションを作ることができます。(通常IWR1642BOOSTは 購入時にこのデモ用プログラムが書き込んであります。)
今回は物体検知用のRaspberry pi3 用アプリケーションを作ってみました。
ベースにしたのはmmWave Demo Visualizerです。
Demo Visualizerにも検出位置をプロットして表示する機能があるので、レーダーに対しVisualizerと同じような事をすればレーダーは位置データを送信して来るはずです。
そこでDemo Visualizerが作るレーダー設定ファイルの内容をRaspberry pi3から送ったところレーダーのデータを受信できるようになりました。後はこのデータを使って検出物体の位置表示をすればよいことになります。

Demo VisualizerのX-Y Scatter Plot も物体の平面上位置を表示するのですが、検出点ドット表示が瞬間的で移動の状態が見づらいです。そこで今回作ったソフトでは図2のように残像機能を持たせてみました。

図2 残像を持たせた検出点表示
図2_レーダー表示.png
図2では5つの点が見えますが Demo Visualizerでは1つずつが瞬間的に表示されるので常に1つしか見えません。作ったソフトでは2秒の残像時間(時間は変更可)を持たせてあるので点が連続して表示され、表示された時間順に消えて行くので動きがわかりやすくなります。

2. 設定手順と使用方法
 大まかな設定手順は以下のようになります。
使用方法も含めた詳細はこちらの資料に書きましたので参照してください。

(1) 図1のようなハードウェア環境とGoogle ChromeブラウザがインストールされたPCを準備する。 (私はWindows10を使いました。)

(2) 準備した”Chromeを使えるPC”と”IWR1642 BoosterPack”をUSBケーブルで接続し、ChromeでmmWave Demo Visualizer を使えるようにするための諸設定をする。

(3) mmWave Demo Visualizerでレーダーが目的とする性能になる様パラメータを設定し、それをレーダーに送る。(この時点でVisualizer に検出物体の位置や速度のグラフィカルな表示ができるようになる。)

(4) このレーダー設定ファイルをダウンロードして Raspberry pi3 の指定されたフォルダーにコピーする。

(5) Chrome用PCからUSBケーブルを抜き Raspberry pi3に接続してレーダーのプログラムを起動する。
新たなレーダー設定ファイルを作らない場合は、2回目以降のmmWaveRadar.pyの起動ではこれらの手順を行う必要はありません。

以上でDemo Vosualizerより検出状態が見やすくなりアラームなど付随機能も使えるようになります。

3. 関連ドキュメント
 設定がうまくできない時や疑義があるときはTIのドキュメントを参照してください。
数多くの関連ドキュメントがあって必要なものを探すのが結構大変でしたのでまとめました。こちらを参照して入手してください。

 この中のSDKドキュメントにはレーダーの計測原理やパケット構成、変数構成なども詳しく書かれていて、プログラミングする際には必要になるかと思います。
(インストールしたSDKの \ti\mmwave_sdk_02_01_00_04\docs でCtimmwave_sdk_02_01_00_04docs.html をクリックして表示し、xwr16xx mmw Demo をクリックするとメインページのMillimeter Wave (mmw) Demo for XWR16XX に辿り着きます。 02_01_00_04の部分はダウンロードしたものによって異なります。

 IWR1642BOOSTのMPUとDSPのプログラムが書いてなかったり変更する際には“Uniflash” というツールを使って行うようで、MMWAVE SDK User Guide – “4. 2. How to flash an image onto xWR14xx/xWR16xx EVM”に方法が書いてあります。

4. プログラム
 プログラムのダウンロードは以下からできます。
mmWaveRadar0.1(tar.gz)
mmWaveRadar0.1(zip)
<2020.01.27 追記>
検出点表示でx,y方向の制限設定を間違えたため、正面方向の検出表示の距離がレーダー設定レンジの半分しかありません。
こちらの修正をお願いします。
<2022.09.09 追記>
レーダー設定処理中にエラーが検出されることがります。
概要と対策はこちらを参照願います。
<追記終>

プログラムの主な処理フローはこちらを参照してください。
パケット構成はこちらを参照してください。

今回のリリース版はレーダー性能評価とアプリケーションの必要機能検討のためのもので、メニューには今後検討したいものを暫定的に入れてますがまだ使えないものが多いです。

5. 今後の課題
(1) 検出点の絞り込み精度の改善
 環境によっては反射物などの存在によって物体のゴーストが検出され、物体の位置が絞り込めないことがあります。移動物体が検出されたか否かの結果だけを利用するのであればあまり問題はないのですが、できればゴーストを除去してより確率の高い位置を出せるようにしたいと思います。
今後、検知ゾーンを設定してその中に検出された時にアラームを出すようなシステムにしようとしていますが、その場合にはこれは重要な性能です

(2) レーダー設置場所と監視場所が離れている場合の通信と電源供給方法
 現在はレーダーとRaspberry pi はUSBケーブルで接続しているので データ転送速度を考えるとせいぜい数mです。これでは監視場所とレーダー位置の距離が限られてあまり使えません。したがって実際には監視用に別途PCを設け、レーダーに繋げたRaspberry piから監視用PCにデータを送信することが必要になります。
 レーダーからのパケットをそのまま転送するとなると高速大容量ですのでUDPやTCPプロトコルを使う事が必要でWiFiやEthernetでの通信になり、これらの安定した通信環境を整えることが必要です。
 レーダーとUSB接続したRaspberry piはパケット転送のみに用いたのではもったいないので、パケット解析をして検出点データのみを監視用PCに送るようにすれば、例えばMONO Wireless のTWELITEなどでも送信ができる可能性はあると思います。(TWELITEのプログラム変更が必要となりますが。)これができればレーダーと監視点の距離はかなり離れていても使えるようになります。

 レーダーとRaspberry piは電源の安定上それらに近いところに電源供給回路を置かなくてはなりません。しかし、「ACをこれらに近いところまで引っ張って行き、ACアダプターを使ってDC 5Vを供給する」というのは余りスマートではない上に、屋外でACを引き回すのは危険でもあります。
そこで屋内に置いたACアダプターで屋外へ高めのDC(例えば24V)を供給し、レーダーとRaspberry pi近くで DC-DCコンバーターで安定化した5Vを供給することを検討したいと考えています。
Ethernetを使うのであればPoE (Power over Ethernet) という方法もありますが、趣味で行うには複雑すぎるのでやめておきます。


===== 関連記事 =====
ミリ波レーダーを使った動体検知システム(2/5)
ミリ波レーダーを使った動体検知システム(3/5)
ミリ波レーダーを使った動体検知システム(4/5)
ミリ波レーダーを使った動体検知システム(5/5)
ポータブルミリ波レーダーの製作


>> ブログ記事一覧へ
nice!(0) 
共通テーマ:趣味・カルチャー

nice! 0