開発事例

MATLABで開発したアルゴリズムをGNU Radioに移植したSDR開発。ラズパイと低価格ソフトウェア無線機で多数のセンサーノードへの道筋を付ける。

  • このエントリーをはてなブックマークに追加

概要

国立大学法人A様 開発事例 (国プロ)

業種 : 国立大学法人 研究室
弊社サービス : SDR開発サービス
課題解決に活用したプロダクト : MATLAB, GNU Radio, USRP B200mini, HackRF One, BladeRF

ご要望

ある信号を検出するアルゴリズムを大学で開発中。
アルゴリズムの開発言語はMATLAB。研究者なのでプログラミング的な知見は乏しい。
検出アルゴリズムが動作するセンサーノードを、屋外に複数配置しセンシング実験をしたい。
センサーノードは複数用意したいので、出来るだけ低価格が良い。

課題

ネックになるのはセンサーノードのコスト。
ノードあたりの単価が上がると配置できるノード数が限られ、実験規模が小さくなりアルゴリズムの威力を示すことが出来ない。
できるだけノード単価を軽くしたい。
そのため最終的にはラズパイで動作し、コストが高いUSRPだけではなく低コストなソフトウェア無線機を使いたい、との意向。

提案

ドルフィンシステムからの提案は以下の2点。

提案 1. SDRソフトウェアプラットフォームとしてGNURadioを提案

オープンソースのSDRプラットフォームであるGNURadio。
GNURadioならラズパイでもWindows PCでも動かすことが出来るなど、状況に応じたプラットフォームの選択が可能。またUSRP以外のソフトウェア無線機にも数多く対応している。

提案 2. MATLABのアルゴリズムをC++に変換する

MATLABスクリプトをラズパイで動かすことは出来るが、ライセンス料がかかるためコスト増に直結する。
そこでMATLABスクリプトのアルゴリズムをC++に移植を行い、GNURadioの独自モジュールとして実装する。

この結果

上記2点の施策で、ラズパイ上で各種ソフトウェア無線機を使用したアルゴリズムの動作が可能で、かつノードのコストが数万円レベルに抑えることが出来る。

開発

各ソフトウェア無線機の挙動を確認するため、同一の信号を入力して確認。

 

使用するGNU Radioの関数によっては同じソフトウェア無線機でも挙動が異なる。
このような現象を洗い出す。

 

Windowsからラズパイにアクセスしリモート開発。

 

リストアップされたブロック

 

無事動作しました。

 

結果

弊社からの提案

  • GNU Radioを使用する
  • MATLABスクリプトをC++に移植する

を行うことで、ラズパイ上で各種ソフトウェア無線機を使用したアルゴリズムの動作が可能で、かつノードのコストが数万円レベルに抑えることが出来ました。

  • このエントリーをはてなブックマークに追加