- リンクを取得
- ×
- メール
- 他のアプリ
- リンクを取得
- ×
- メール
- 他のアプリ
NI USRPシリーズの中にNI USRP-2900というデバイスがあります。
これは製造元のEttus ResearchではB200と呼ばれているデバイスで、名称は違いますが内部の基板は一緒です。(以下では名称をB200に統一します)
公式には対応されていませんがB200はLabVIEWで使用することが出来ます(B200miniは不可)。
B200が今までのUSRPと違うのは、サイズが小さいこと、USB接続でバスパワー動作することが特徴で、追加の電源や機材を必要とすることなく普通のノートPCに接続することができます。
つまりソフトウェア無線環境がノートPCだけで作れてしまうのです。
そこでドルフィンシステムもB200をソフトウェア無線デバイスとして使用するべく購入し動作確認テストを行いました。
これに対応する方法は存在していて25M IQレートでも安定して送受信を行うことが出来るようになるのですが、PXI接続のUSRP-RIOに比べると危うい接続方法であることは変わりません。
B200に期待したのはUSB接続の安定性。イーサネットよりも安定していることを期待していました。
しかし実際にベンチマークを取った結果は以下の通りです。
以上の表には、120秒連続でIQデータを受信し、その送受信サンプル数、データ落ちサンプル数、データ落ち回数を表にしてあります。
ThinkPad T430という現在ではそれほどでもないスピードのノートPCを使用して、ベンチマークを取得しています。
まず上側のWindows7を見ると、
次にLinuxの方を見ると、とても安定しています。
WindowsよりもLinuxの方が安定してデータ取得が出来ています。
ベンチマークソフトはデータ取得だけで他に高負荷な処理はしていません。なのに10Msps程度でもデータ落ちが発生していますので、B200のデータ取得そのものに問題があります(後述)。
弊社と日本NIさんとも連携して調査にあたりましたが、根本的な対策には至りませんでした。
「ドローンに搭載して通信しつつGPSで取得した位置情報を元に航跡を記録したい」
と、いうことをしたいと思いますが残念ながら出来ません。
こちらはLabVIEWでの動作になりますが、IQデータ収録中はGPSからのデータを取得することでIQデータ落ちが発生してしまいます。
仕様のようです。とても残念ですね。
これは位置がずれているのではなくて、NMEAデータの60進数10進数の取違でした。
NMEAが出力する緯度経度は60進数で出力されますが、Google マップ等で指定する緯度経度は10進数で指定します。
私は60進数の値をGoogle マップに入れていたので、位置がずれているように見えていました。
誠に申し訳ありませんでした。
対応は以下のコードをVIで作ればOKでした。
B200にはGPSDOモジュールを搭載するとGPSに同期したクロックやトリガを使用することができます。
複数のB200を一度に収録開始したりするには便利ですね。
で、このGPSからはNMEAを取得できますので、GPS時間や位置情報を取得することができます。
早速取得してみると・・・
なんと衛星が8ヶ見つかっているにもかかわらず、位置が大幅にずれています。
現在位置は池袋ですが、表示位置は神奈川県の綾瀬市。
こちらの現象の原因は不明。GPSDOの故障ではないか?と言われましたが・・・
さらに今後調査していきます。
これは製造元のEttus ResearchではB200と呼ばれているデバイスで、名称は違いますが内部の基板は一緒です。(以下では名称をB200に統一します)
公式には対応されていませんがB200はLabVIEWで使用することが出来ます(B200miniは不可)。
B200が今までのUSRPと違うのは、サイズが小さいこと、USB接続でバスパワー動作することが特徴で、追加の電源や機材を必要とすることなく普通のノートPCに接続することができます。
つまりソフトウェア無線環境がノートPCだけで作れてしまうのです。
そこでドルフィンシステムもB200をソフトウェア無線デバイスとして使用するべく購入し動作確認テストを行いました。
USB接続の限界とデータ落ち
USRP Nシリーズはイーサネットで接続をするため、連続してデータ取得が間に合わず都度都度切断されてしまいます。これに対応する方法は存在していて25M IQレートでも安定して送受信を行うことが出来るようになるのですが、PXI接続のUSRP-RIOに比べると危うい接続方法であることは変わりません。
B200に期待したのはUSB接続の安定性。イーサネットよりも安定していることを期待していました。
しかし実際にベンチマークを取った結果は以下の通りです。
ベンチマーク環境
PC
|
ThinkPad T430
|
CPU
|
Intel Core i7 3520M @ 2.90GHz
|
インターフェイス
|
USB 3.0(直結)
|
ベンチマークソフト
|
benchmark_rate (UHD)
|
Windows7 120秒
Msps
|
10
|
15
|
20
|
25
|
30
|
35
|
40
|
45
|
61.44
|
Num received samples
|
1.2G
|
1.8G
|
2.4G
|
3G
|
3.6G
|
4.2G
|
4.8G
|
5.4G
|
5.4G
|
Num dropped sample
|
156.9K
|
0
|
0
|
1.5M
|
143K
|
0
|
222K
|
349K
|
1.91G
|
Num overflows detected
|
3
|
0
|
0
|
11
|
2
|
0
|
4
|
4
|
33227
|
Ubuntu Linux 120秒
Msps
|
10
|
15
|
20
|
25
|
30
|
35
|
40
|
45
|
61.44
|
Num received samples
|
1.2G
|
1.8G
|
2.4G
|
3.G
|
3.6G
|
4.2G
|
4.8G
|
5.4G
|
492.905M
|
Num dropped sample
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
121.483M
|
Num overflows detected
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
2456
|
Msps : IQレート(サンプリングレート)。10なら10Msps
Num received samples : 受信した総サンプル数
Num dropped sample : 取りこぼしたサンプル数
Num overflows detected : 取りこぼした回数
以上の表には、120秒連続でIQデータを受信し、その送受信サンプル数、データ落ちサンプル数、データ落ち回数を表にしてあります。
ThinkPad T430という現在ではそれほどでもないスピードのノートPCを使用して、ベンチマークを取得しています。
まず上側のWindows7を見ると、
- 上限の61.44Mspsは1/3程データ落ちしているので限界のようですが、
- 10Mspsでも45Mspsでも発生していますので、確実に大丈夫というレートはなさそうです。
- もっと高速なIntel Core i7 4790 @ 3.60GHz搭載PCでも傾向は同じだった。
次にLinuxの方を見ると、とても安定しています。
- 61.44MspsはWindowsと同じでハードウェアの限界に見える
- 他のレートでは安定している。
- 表に出してはいませんが、40Mspsを600秒連続取得してもデータ落ちは発生しませんでした。
- とはいうものの他のプロセスが動作してCPU時間を食うと転送が落ちます。安定しているかどうかは程度の問題です。
WindowsよりもLinuxの方が安定してデータ取得が出来ています。
ベンチマークソフトはデータ取得だけで他に高負荷な処理はしていません。なのに10Msps程度でもデータ落ちが発生していますので、B200のデータ取得そのものに問題があります(後述)。
対策ならず
Windows上で安定して動かすために、ベンチマークソフトの修正、OSの環境設定、OSの変更などあらゆる対策をとってみましたが、データ落ちの発生を回避することは出来ませんでした。弊社と日本NIさんとも連携して調査にあたりましたが、根本的な対策には至りませんでした。
- 日本NIでも再現した
- 本社でもこの現象は把握している
- Why Am I Getting Lower Than Expected Streaming Rates on my NI 2900/2901 Device?
- http://digital.ni.com/public.nsf/allkb/CDDC3DE200B4A9D486257F8700761DF7?OpenDocument
- Ettusが公開しているベンチマークはLinuxで取得したベンチマーク。詳細な動作環境などは不明。
- (2016/06/16時点で非公開を確認しました)
USRP B200 and B210 - USB 3.0 Streaming Rate Benchmarks
https://kb.ettus.com/detail/usrp-b200-and-b210-usb-30-streaming-rate-benchmarks
- (2016/06/16時点で非公開を確認しました)
- USRP-RIOと違いDMA転送ができないため(PIO?)CPU速度が重要
GPS NMEAはデータ送受信中は取得できない
ソフトウェア無線機にGPSが搭載されていたら、「ドローンに搭載して通信しつつGPSで取得した位置情報を元に航跡を記録したい」
と、いうことをしたいと思いますが残念ながら出来ません。
こちらはLabVIEWでの動作になりますが、IQデータ収録中はGPSからのデータを取得することでIQデータ落ちが発生してしまいます。
仕様のようです。とても残念ですね。
GPSの位置ずれ問題
2016/07/13 追記これは位置がずれているのではなくて、NMEAデータの60進数10進数の取違でした。
NMEAが出力する緯度経度は60進数で出力されますが、Google マップ等で指定する緯度経度は10進数で指定します。
私は60進数の値をGoogle マップに入れていたので、位置がずれているように見えていました。
誠に申し訳ありませんでした。
対応は以下のコードをVIで作ればOKでした。
60進の緯度経度情報を10進緯度経度へ
複数のB200を一度に収録開始したりするには便利ですね。
早速取得してみると・・・
現在位置は池袋ですが、表示位置は神奈川県の綾瀬市。
以上、ドルフィンシステム福島でした。
コメント
福島さん、この情報、ちょうど探していた情報ドンピシャでした。掲載ありがとうございます。
返信削除B200の記事にコメントがつくとは・・・とってもマニアックなお方ですね。
返信削除お役に立てたようで、良かったです!