日記・備考録
Diary/Memorandum

2005 | 2006 | 2007 | 2008 | 2009 | 2010 | 2011 | 2012 | 2013 | 2014/ 1 2 3 4 5 6 7 8 9 10 11 12 | 2015
October November
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
December | Home

2014/12/01〜

...................................................................................................................................

2014/11/26

u-blox, u-blox sets new benchmark for GNSS precision timeing with two new module, November 26, 2014

NEO/LEA-M8Tが正式発表。最初に聞いていた話としては昨年夏には出るはずだったのだけど。製品版ではGLONASSのIFB校正が行われていることを望む。あと早くGalileoの正式対応も。なお、u-center 8.12のconfigureではRXM-SFRBX (0x02,0x13) の出力をenableにできないので、対応するCFG-MSG (0x06,0x01) を自分で作って送る必要がある。ついでに、誰も関心ないかもしれないけど、IMESにも正式対応しており、RXM-SFRBXを使ってIMESメッセージを取得できる。

...................................................................................................................................

2014/11/25

GitHubのRTKLIBのStarがやっと3桁に乗った。といってもささやかなもので、Starが10,000を超えているものも多い。最もStarの多いリポジトリを探すのは結構難しいが、とりあえずlanguage:xxxでsearchして、Sort: Most starsとすればよい。ついでなので、2014/11/25現在の言語別ベスト3を調べてみた。

(1) JavaScript: 1. angular/angular.js 32,004, 2. bartaz/impress.js 22,418, 3. hakimel/reveal.js 18,145
(2) Java: 1. elasticsearch/elasticsearch 9,028, 2. nathanmarz/storm 8,432, 3. jfeinstein10/SlidingMenu 6,644
(3) Ruby: 1. rails/rails 24,013, 2. Homebrew/homebrew 20,251, 3. jekyll/jekyll 17,460
(4) Python: 1. jakubroztocil/httpie 12,366, 2. django/django 11,992, 3. kennethreitz/requests 11,726
(5) PHP: 1. laravel/laravel 13,202, 2. symfony/symfony 9,251, 3. bcit-ci/Codelgniter 8,603
(6) CSS: 1. twbs/bootstrap 74,719, 2. FortAwesome/Font-AAwesome 28,380, 3. zurb/fundation 18,655
(7) C++: 1. rogerwang/node-webkit 17,409, 2. ariya/phantomjs 12,007, 3. facebook/hhvm 10,294
(8) C: 1. torvals/linux 17,481, 2. antirez/redis 11,115, 3. kripken/emscripten 7,462
(9) C#: 1. dotnet/corefx 5,335, 2. SignalR/SignalR 4,637, 3. hbons/SpaarkleShare 3,247
(10) Objective-C: 1. AFNetworking/AFNetworking 14,635, 2. facebookarchive/three20 7,464, 3. BrandLarson/GPUImage 7,324

ところで、いつの間にか.NET coreがOSS化されている。調べるとVisual Studioも無償化されたらしい。これってExpressみたいにGUI AP作れない版ではなくフルセット版みたい。ただし、個人開発者、オープンソース開発プロジェクト、PC台数250台未満または年商1億円未満の企業等、利用には制限が付く。

...................................................................................................................................

2014/11/24

GPS World, CSR Demonstrates SiRFDrive in Chicago, November 24, 2014

SiRFDriveと呼ぶCSR SiRFstarV 5ea受信機に実装されたデッドレコニング (DR) アルゴリズムのデモビデオ。左がDR有り、右がDRなしを表している。使っているのはGPSとGLONASS。概ねC/N0 15dBHz以上で信号追尾している。これ読むと"MEMS sensors and vehicle inputs" を使っているらしいので、MEMSジャイロと車速センサを入力している様。MEMSセンサのグレードが書いていないが、MPU3300 (15°/hr) クラスを組み合わせれば、これ位の性能が出てもおかしくはない。

-------------------------------------

Sensors in Motion, MEMS Symmetrical Resonating Gyroscope Brief

Sensors in Motion社のSymmetrical Resonating Gyroと呼ぶジャイロの宣伝資料なのだけど、他社製ジャイロとの比較が参考になるので貼っておく。0.05°/hr以下クラスのMEMSジャイロは量産品としては初めてだと思うが、流石にITARフリーではない様。前から書いているが、DARPAのMicroPNTプロジェクトでは0.01°/hrの超小型MEMSジャイロとCSAC (chip-scale atomic clock) を数10mWの航法デバイスに統合する研究をやっている。これら技術が実用化されて民生に降りてくれば、GNSSは時々のキャリブレーションにだけ必要という話になる。まあ時々のキャリブレーションだけなら別に高価な衛星使わなくても、という気もする。ということで10年20年後を想定すると、測位衛星開発に何千億使うくらいなら、1/10位はこういう研究開発に賭けるのは意味があるのではないか。(衛星技術と地上技術のトレードオフというのはいつの時代にもあって、莫大なお金を使って衛星開発しても、地上技術の進歩の方が速くて、結局使われなくなったというのは、携帯電話の世界では既に起こったことなので。)

-------------------------------------

ESA, Galileo satellite set for new orbit, November 10, 2014

8月の打上失敗で不正な軌道に投入されたGalileo FOC衛星について、今月一連の軌道制御が実施されている。目的は、バンアレン帯による衛星の放射線被爆を減少させ、かつ航法のためより有効に利用できる様に、近地点高度を上げること。2週間でFOC1号機の軌道を移動させた後、2号機も同様の制御を行う。ただ、残燃料が十分でないため当初予定軌道までの移動は不可能で、近地点高度を17339kmまで上げる制御を行う。回帰日数は20日。この制御によりユーザの信号レベル変動やドップラシフトが低減し、可視条件も改善される。近地点で地球センサが使用できず、姿勢制御精度が悪化する問題も解決される。衛星の姿勢モードは今まで太陽指向だったが、11/3にはFOC1号機のモードが地球指向に変更された。計15回の軌道制御完了後、公式の軌道上試験が開始できる見込み。

...................................................................................................................................

2014/11/22

ということで80並列で流してみた。流石に80並列だとファイルサーバがボトルネックになりそうでファイルサーバのCPU利用率は100%に張り付いている。解析サーバのCPU利用率は平均で60%位。ファイルサーバをもう少し速いインスタンスに変えた方が良いかも。

-------------------------------------

SSHFSを使ってファイルサーバのディレクトリをマウントする様にした。途中で接続が切れた場合のリカバリが心配だが、性能的にも問題ない様だ。いったい今まで苦労して何してたのかという感じ。これで80並列で解析を流せる。インスタンスをterminateし忘れた日には....。

...................................................................................................................................

2014/11/21

調べていたら、ssh経由でリモートファイルシステムをマウントできるSSHFSというコマンドがあるのを知った。AWSの場合ポート制限が厳しくて、ポート空けるの面倒なのだけどこれなら簡単。元々入力データを全部コピーする必要もないし。後は性能が出るかどうか。ちょっと試してみよう。

-------------------------------------

入力データを流し込む際に今はファイルサーバから順番に解析サーバに転送しているのだけど、これを解析サーバ間で伝搬させていけば時間をlog2(n)/n (n=20なら2割) に削減できるかも。同じアベイラビリティゾーン内ならデータ転送タダだし。

-------------------------------------

さて、AWS CLIを使いたいのは、20インスタンス並列で解析を流したいからなのだけど、解析用インスタンスのローカルストレージに入力データを流し込むのが実行時間のボトルネックになっている。EBSを複数インスタンスでアタッチできれば簡単なのだけど出来ない。さてどうするか。(もちろんオンデマンドやリザーブド使える人はそれ使えばよい。結局、安いスポットで最大限解析効率を上げるにはどうすればよいかという話)

-------------------------------------

やっぱりAWSをコマンドラインでコントロールできないと色々と不便なので、AWS CLIを使ってみる。以下メモ。

(1) AWS CLIのインストール
ubuntu 13.04:
$ sudo apt-get install pip
$ sudo pip install awscli
ubuntu 14.04:
$ sudo apt-get install awscli
$ aws --version
aws-cli/1.2.9 Python/3.4.0 Linux/3.13.0-24-generic

(2) AWS CLIのセットアップ
Security CredentialsでAccess Keysを作成。
$ aws configure
AWS Access Key ID [None]: xxxxxxxxxxxxxxxxxx
AWS Secret Access Key [None]: xxxxxxxxxxxxxxxxxxx
Default region name [None]: us-west-2
Default output format [None]: text
$ aws help
$ aws ec2 help
$ complete -C aws_completer aws

(3) EC2インスタンス一覧
$ aws ec2 describe-instances --query 'Reservations[*].Instances[*].[InstanceId, InstanceType, Placement.AvailabilityZone, LaunchTime, PublicIpAddress, State.Name]'

i-0fxxxxxx      c3.8xlarge      us-west-2b      2014-11-20T03:24:38.000Z        54.148.xx.xx    running
i-a6xxxxxx      c3.8xlarge      us-west-2b      2014-11-20T03:24:38.000Z        54.148.xxx.xx   running
i-0dxxxxxx      c3.8xlarge      us-west-2b      2014-11-20T03:24:38.000Z        54.148.xx.xxx   running
i-f9xxxxxx      m3.medium       us-west-2b      2014-11-20T03:21:10.000Z        54.148.xxx.xxx  running
i-a5xxxxxx      c3.8xlarge      us-west-2b      2014-11-20T03:24:38.000Z        54.148.xx.xxx   running
...

(4) EC2の細かいリファレンスはここ参照。一応タブでコマンドライン補完できるけど、基本的にスクリプト中で使うためのもので、インタラクティブな使い勝手は良くない。

...................................................................................................................................

2014/11/20

InsideGNSS, Topcon Engineers Track New GLONASS Signal, November 14, 2014

6月に打ち上げられたGLONASS-M衛星には。L3 CDMA信号試験用ペイロードが搭載されている。信号構成はこの記事に示されたGLONASS-K1のL3信号と同等の様。ところでTopcon NET-G5なんて受信機出ているんだ。452CHとのことで、NET-G3 (72CH) やNET-G3A (144CH) に比較して飛躍的にCH数が増えている。

補足: Trimble NetR9が440CH、Leica GR10/GR25/GMX902 GNSSが120CH、NovAtel OEM628が120CH, OEM638が240CH、JAVAD TR-G3Tが216CH、TRE-3が864CH、Septentrio PolaRxS PROが136CH、PolaRx4TR PROが264CH。JAVADの864CHは普通には使いきれないと思うが、多分全信号を追尾するという方針なのであろう。(11/21追記)

-------------------------------------

ジョブ開始してしばらく時間がたつとCPU利用率が上がり始めた。これ、AWS側で新しいインスタンス割り当てる際に、CPU負荷を見て負荷の低いCPUから順に割り当てる処理が入っているんじゃないかなあ。今4並列でCPU負荷75%位でまだ少し余裕があるけど、5並列で速くなるかは微妙なところ。(メモリやディスクは十分足りてるけど、I/O競合で効率が落ちるかも。あと最近のCPUは温度が上がりすぎると自動的にクロック落とすので。)

-------------------------------------

10台×4並列で解析流すためには、最初にEBSサーバから入力データ (圧縮して12GB位) を全インスタンスに転送して解凍する。同一リージョン (米国西部オレゴン) なので転送速度は30MB/s程度は出ているが、全セットアップに2H位かかる。それから、負荷分散して10インスタンスで解析実行し結果回収。この実行時間が1回あたり5H位。条件を変えて3回流し直して、全部合わせて22H。全部スポットで平均$0.3/hrとして、$0.3×22×10=$66。後は途中でコケないことを祈るだけ。しかし半分くらいのインスタンスは負荷が40%位までしか上がらない。これ、裏で別ジョブが動いているのではと思うのだけど値段変わらないんだよね。

-------------------------------------

Amazonに最大インスタンス数増やしてくれってリクエスト送ったら、既に増えてますよ、との回答。以前は確かスポットは5インスタンスが最大だったはずだけど使用実績があると自動的に増えるのかも。ということで、豪勢に10インスタンス並列で動かす。しかしterminateし忘れた時の料金が......。

-------------------------------------

UBX-13003221-R07, u-blox M8 Receiver Description Including Protocol Specification, November 10, 2014

u-blox M8のマニュアルが更新されている。UBX-RXM-RAWX (0x02 0x15) とUBX-RXM-SFRBX (0x02 0x13) が公式に追加されている。これらメッセージは "supported on u-blox M8 firmware version 2.30 (only available with Raw Data Product variant)" とあり、NEO/LEA-M8T以外では使用できないと思われる。なお、M8モジュールのProduct SummaryやData Sheetには、まだNEO/LEA-M8Tは記載されていない。

UBX-RXM-RAWXのprMesの記述で"GLONASS inter frequency channel delays are compensated with an internal calibration table." とあるが、u-blox社から提供を受けたpreproductionのEVK-M8Tではかなり大きな (数m程度の) コードIFBが見られた。これは正式製品版までに改良するのかもしれない。

-------------------------------------

これ公式には何もないのだけど、NEO/MAX-M8NのTRKメッセージは次のF/Wから出力できなくなる可能性が高いので、ご注意を。従ってu-blox 8でrawを使いたい場合はまだ未発表のNEO/LEA-M8Tを使うことをお勧めする。なおこの情報の信頼性については自己責任で判断下さい。また本件u-blox社に問い合わせするのもご遠慮下さい。

...................................................................................................................................

2014/11/18

AWSのBillsが$100を超えてしまった。C3.8xlarge 5台×4並列で回しているのだけどそれでも1ジョブ9時間位かかる。CPU負荷は平均70%位。スパコン欲しい。

...................................................................................................................................

2014/11/17

H.Liu, Status and Issues of DBDS, Stanford's 2014 PNT Challenges and Opportunities Symposum, October 28-30, 2014, Stanford University, CA, US

BeiDouのステータス。BeiDouにおけるISTB (inter satellite type bias) やRTCMにおけるIODE問題について状況をまとめている。今年のスタンフォードPNTシンポジウムの発表資料。これ以外はここ参照。

...................................................................................................................................

2014/11/15

ASRock BIOSの"Load Optimized CPU OC Setting"で設定済みOC設定をロード。Turbo 4.2GHzは3回走らせて3回とも途中でフリーズする。Turbo 4.0GHzで常用できるかはもう少し検証が必要。以前AWS EC2 (c3.8xlarge, E5-2780v2 x 2) で測った時はOMP_NUM_THREADSを20に設定して186.9 sだったので、速度的には概ね満足。これ見るとXeon E5-2699v3 x 2 (36 core) が欲しくなるなあ。

Core i7 5960X: 151.0 s (8 core, HT=OFF, ubuntu 14.04, OC=Turbo 4.0GHz)
Core i7 5960X: xxx.x s (8 core, HT=OFF, ubuntu 14.04, OC=Turbo 4.2GHz)

補足: OC=Turbo 4.0GHzでかなり解析流したけど、特に問題なさそうなのでこれで常用予定。CPU温度も負荷かけないで40°前後、高負荷で70°位なので問題なさそう。ただ4770Kに比較して実解析で最大2割位しか速くならない。多分4790K×2の方がコストパフォーマンスは良い。(11/18追記)

-------------------------------------

某APのテスト実行時間。

Core i7 2600K: 281.8 s (4 core, HT=OFF, ubuntu 13.04)
Core i7 4770K: 204.6 s (4 core, HT=OFF, ubuntu 13.04)
Core i7 5960X: 204.7 s (8 core, HT=ON, ubuntu 14.04)

Core i7 5960X: 172.9 s (8 core, HT=OFF, ubuntu 14.04)

うーん。ということで4770K (少しOC) に比較して速くなっていない。CPU負荷も650%位までしか上がらないし。これなら4790Kを2台買った方が良かった。
良く調べたらHT=ONになっていた。HT=OFFの結果を追加。まあまあ。次にOCを試す。

-------------------------------------

@SycomからCore i7 5960X+RAM32GB+SSD256GBの計算機が届いたので、さっそくubuntu 14.04をインストール。サクッと行列計算のベンチマーク。BIOS設定は初期設定のままで何もいじっていない。(MKL 11.1, HT=OFF, OC=Turbo 4.0GHz)

matmul()   200 x   200: time=   0.087 s (   183.4 MFLOPS)
matmul()   500 x   500: time=   0.002 s (124875.0 MFLOPS)
matmul()  1000 x  1000: time=   0.017 s (117588.2 MFLOPS)
matmul()  2000 x  2000: time=   0.085 s (188188.2 MFLOPS)
matmul()  5000 x  5000: time=   0.660 s (378750.0 MFLOPS)
matmul() 10000 x 10000: time=   4.906 s (407643.7 MFLOPS)
solve()    200 x   200: time=   0.060 s
solve()    500 x   500: time=   0.007 s
solve()   1000 x  1000: time=   0.019 s
solve()   2000 x  2000: time=   0.092 s
solve()   5000 x  5000: time=   1.046 s
solve()  10000 x 10000: time=   7.723 s

相変わらず2000x2000で極端に性能が落ちる原因は不明。i7 4770Kでも210GFLOPS位は出るので、コストパフォーマンスは微妙。普通には4790Kあたりの方が良いだろう。これから実APで性能を測る。

補足: HT=ONの値だったので、HT=OFF, OC=Turbo 4.0GHzの値に差し替え。400GFLOPSオーバーは素晴らしい。(15:36追記)

再補足: Xeon E5-2687W x 2 の結果はこの記事参照。Xeonは、2 wayでメモリ帯域もDDR3-1600 × 8 CH = 102.4GB/s で、5960XはDDR4-2133 × 4 CH = 68.3 GB/sなので、実APでは多分Xeonの方が速い。(11/21追記)

...................................................................................................................................

2014/11/14

11/12-13と宇科連@長崎に参加。PPP高度化関連の発表をして頂いた関係者の皆様お疲れさまでした。幾つか面白い話は仕入れたのだけど、皆ここには書けない。

...................................................................................................................................

2014/11/11

Mikhailから (というか何故か香港から) 代わりのNAVIOが届いた。IMUのサンプルを再実行。

$ cd ~/Navio/C++/Exambles/AHRS
$ ./AHRS

ROLL: -179.58 PITCH: +0.77 YAW: -117.00 PERIOD 1205.7347s RATE 0Hz
ROLL: -179.69 PITCH: +0.71 YAW: -116.94 PERIOD 0.0009s RATE 1175Hz
ROLL: -179.80 PITCH: +0.65 YAW: -116.94 PERIOD 0.0009s RATE 1172Hz
ROLL: -179.92 PITCH: +0.58 YAW: -116.96 PERIOD 0.0008s RATE 1177Hz
ROLL: +179.95 PITCH: +0.52 YAW: -116.97 PERIOD 0.0009s RATE 1175Hz
ROLL: +179.82 PITCH: +0.44 YAW: -116.98 PERIOD 0.0009s RATE 1176Hz
ROLL: +179.69 PITCH: +0.37 YAW: -116.99 PERIOD 0.0009s RATE 1175Hz
ROLL: +179.54 PITCH: +0.30 YAW: -117.01 PERIOD 0.0009s RATE 1176Hz
ROLL: +179.39 PITCH: +0.22 YAW: -117.03 PERIOD 0.0009s RATE 1176Hz
...

今度はちゃんと動いた。IMUのバイアス安定度を見るため、静止状態のまま10分間データを取る。

$ ./AHRS > ahrs.out
$ wc -l ahrs.out
11828 ahrs.out

大体, 20Hzで出力されている様だ。取ったデータをpython/matplotlibでグラフ化。せっかくなのでRasPiにmatplotlibをインストールしてVNCサーバ上で実行。なおnumpyは標準でインストールされている。

$ sudo apt-get install python-matplotlib
$ tightvncsever -geometry 1600x1200

$ cd ~/Navio/C++/Example/AHRS
$ awk '{if(NR>=100) print $2,$4,$6}' ahrs.out > ahrs.txt
$ python
>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> c=np.loadtxt('ahrs.txt')
>>> fig=plt.figure()
>>> ax=fig.add_subplot(111)
>>> ax.plot(c)
>>> fig.show()

最初の5秒は変な値が出力されるのでカットしている。こう見るとyaw軸はかなりドリフトしているが、5°/10分位の安定度はありそうだ。使っているのはInvenSenseの9軸IMU MPU9250だが、仕様みてもbias instabilityの値が書いていない。姉妹品の3軸ジャイロ MPU3300で15°/hrなのでこの倍くらいと予想していたが、まあよいところだった様だ。なお、MPU9250の値段はサンプル$6.62。ublox NEO-6Tモジュールが$180位なので、バランス的にはあまり良くない。出来れば$100位で10倍くらい精度の良いIMUが欲しいのだけど、5°/hrクラスはまだ$1000-3000する (ちなみにもう一桁良いのはもう一桁高い)。これって多分出荷前の校正を自動化できないのが大きいのではないか。逆に校正なしで出荷してGNSSと組み合わせたセルフキャリブレーションでコスト下げるって有効ではないか。

...................................................................................................................................

2014/11/10

Xperia Z3 tablet compact来た。初Android。薄さと軽さは概ね満足なんだけど、iOSを使いなれた身からすると、Androidイマイチ。特に画面デザインやフォントが汚いのはどうにも。スクロール結構引っかかるしね。なにかとGoogleにお伺いを立てないといけないのも使う気がそがれる。GNSSもGLONASS対応じゃないし感度も悪い。とりあえずGNSS RadarRTKGPS+はインストールした。今のところ書籍リーダにしか使うつもりないので、インストール済アプリを殆ど削除したいのだけど、消し方が分からない。RTKLIBもVCLをFireMonkeyに変換すればAndroidでも動くらしいので、そのうちAndroid対応にするかも。

-------------------------------------

OpenStreetMap Forum

u-bloxが次期モジュールでL2をサポートか ?? まあ、M8でRF 2ch化したんだから、できれば、次は3ch化して自由な組合せで使えるようにしてほしい。

補足: これもしかすると、既にM8Tでサポート済みなのかも。そうするとM8TでPPPが使えるということになる。ただL2CだけだとGPSの半分は使えないので実用的かというとちょっと疑問。(11:33追記)

-------------------------------------

淘宝網, 美格申子

怪しさ満開。"\" は多分中国元 (18.7円/元) だよね。このアンテナとかNovAtel OEM4とか欲しいのだけど、誰か何か買った人います?

補足: 基板に"WWW.RTKLIB.COM" って印刷しないでもらえます? なんか問い合わせ来たのだけど。(11:33追記)

...................................................................................................................................

2014/11/09

ちょっと思いついたんだけど、u-blox M8T×2使うとGPS+GLO+QZS+BDSという受信機作れるなあ。受信機バイアスをエポック毎に推定しているので2つの受信機同期させなくても問題ない気がする。

しかし、u-blox受信機の完成度の高さは流石である。少なくとも安い受信機に (だけじゃなく高い受信機にも) よく見られる動作の不安定さやF/Wのバグがほぼ皆無である。たぶん社内の品質管理基準が相当に高いのであろう。いずれにしても、M8Tによるmulti-GNSS RTKは、2周波RTK-GPSに匹敵する性能が出そうなのでEdisonと組み合わせた小型RTKエンジンを誰か製品化して欲しい。GPS+QZS+BDSでRTKを使う場合、アンテナ選定が問題になる。今RTK評価にTW3400を使っているが問題ない (B1は仕様範囲外だがC/N0もNovAtel GPS-703-GGGとそん色ない)。普通にはTW2400で良いのでないか。

...................................................................................................................................

2014/11/08

rtklib 2.4.2 p10 (patch, repository) is released. u-blox NEO/LEA-M8T is officially supported.

パッチ2桁台にしたくなかったのだけど、2.4.3にするには文書見直す必要があるし。2.4.3は今のところ来年春かな。2.4.3からはパッチパッケージは廃止してgithub一本にする予定。なお、NEO/LEA-M8T対応のため、u-blox社からEVK-M8T及び文書類の提供を受けている。ここに感謝します。

-------------------------------------

Edison。メモを兼ねて。ログインまでは下記参照。PCからはputtyで接続。FTDIのドライバはWindows 7の場合、自動的にインストールされる。

# opkg install git
# cd ~
# git clone https://github.com/tomojitakasu/RTKLIB --depth 1
# cd RTKLIB/app/rnx2rtkp/gcc
# make
...
# wget ftp://user:password@terras.gsi.go.jp/data/GRJ_2.12/2014/001/21100010.14o.gz
# wget ftp://user:password@terras.gsi.go.jp/data/GRJ_2.12/2014/001/06270010.14o.gz
# wget ftp://user:password@terras.gsi.go.jp/data/GRJ_2.12/2014/001/06270010.14N.tar.gz
# gunzip *.gz
# tar xvf *.tar
# time ./rnx2rtkp 21100010.14o 06270010.14o 06270010.14n -o out.txt
real 2m 29.52s
user 2m 22.29s
sys 0m 5.53s

gitはopkgで追加インストールが必要。vi, gcc, tar, gzip, wget, topは標準で含まれているが、wgetは最小限のオプションしか使えない。gccバージョンは4.8.2。ftpは含まれていない。
rnx2rtkpのmake実行時間は197秒。RasPiは362秒だったので半分強。rnx2rtkpの実行時間は150秒、RapPiは326秒だったのでこれも半分弱。ただしblas, lapackライブラリは含まれていないので使うためには自分でビルドが必要。コア数を考慮するとCPU性能は大ざっぱにRasPiの4倍。RasPiは使っていると結構熱くなるが、Edisonは殆ど熱くならないので消費電力も少なそう。Raspibianに比較するとパッケージが貧弱なのは仕方ないか。まあ内蔵フラッシュ4GBしかないので、どうせ色々と入れられないし。

-------------------------------------

Edison開発方法

分かりやすいEdison start方法。感謝。

-------------------------------------

Intel Edison来た。もう秋月でも普通に買えるのでsparkfunで買う必要はなかった。

-------------------------------------

SpaceFlightNow, Japanese satellites launched on Soviet-era missile, November 6, 2014

少し関わっていたのももう4年位前なのだけど、やっとASNARO-1が打ち上がった様だ。しかしDneprって"rocket"じゃなくて"missile"らしく、NASASpaceFlight.comには無視されている。

-------------------------------------

某EVK2式によるGPS+BDS+QZS RTK。0m基線。AR=Contiouous+BDS AR=ON。Ratioの値に注目。まあ20衛星使えれば性能出るわね、という感じ。あとは条件の悪い環境でどれくらい落ちるかというのはこれから色々と評価予定。

-------------------------------------

InternetWatch, 自作GPS・QZSSロボットカーが集結、衛星航法による自律走行技を競う, 2014/11/06

Kevin、受信機は何使っているんだろう。来年は金に糸目をつけずMADOCA-PPP/INS統合 合計\300万で参加予定 (嘘)。あるいはM8T-Edisonの小型RTK航法モジュール使うか。

...................................................................................................................................

2014/11/07

某所から、某受信機の、出来たてのEVK入手したので、RTKのテスト。結果は良好。
某所から、Edisonの受信機ドータボードの試作品も入手出来そうなので、なんかすぐに小型RTK航法モジュール作れそう。

...................................................................................................................................

2014/11/04

CNET Japan, インテルの超小型開発ボード「Edison」を活用したロボットやドローン - 写真で見る, 2014/10/20

「Raspberry Pi Model B+の実環境性能の約2倍だ。」とある (BとB+ではCPUは同じ) ので、多分edisonで10HzのRTKは可能だろう。探したらこんな比較もあった。

-------------------------------------

某所から、某受信機の、出来たてのドラフト版マニュアル入手したので某ドライバの改修。ま、某というのはM8Tなんだけどね。

...................................................................................................................................

2014/11/03

NAVIO続き。

(22) どうもCPU負荷が高くなりすぎて、ドライバ内で入力データ取りこぼしている可能性が高いので、ubx-spi-to-tcpのメインループにwaitを入れる改修。
$ cd ~/Navio/Utilities/ublox-spi-to-tcp
$ vi ublox-spi-to-tcp.c
#include <time.h>
...
int main(int argc, char *argv[])
{
...
struct timespec tv={0,20000};
...
nanosleep(&tv,NULL);
}
return 0;
}

これで5Hzでも入力データを取りこぼさなくなった。

補足: SPIドライバの負荷が高く、データを取りこぼす問題についてはこれを参照。ドライバのパッチも提供されている。また問題が再発したらこれを試してみるつもり。(11/4追記)

(23) ということで、RTKRCVのLAPACKを有効にして再メイク。RTKのテスト。基準局はNovAtel+STRSVR、0m基線。
$ cd ~/RTKLIB-master/app/rtkrcv/gcc
$ vi makefile
CTARGET = ... -DLAPACK
LDLIBS = ... -lblas -llapack
$ rm rtkcmn.o; make
$ ./rtkrcv -s -o rtk.conf
rtkrcv> sol .2

2014/11/03 13:32:25.0 (FIX   ) N:35 52 22.7619 E:138 23 22.8092 H:1003.927 A: 0.0 R: 14.9 N: 7
2014/11/03 13:32:25.2 (FIX   ) N:35 52 22.7619 E:138 23 22.8092 H:1003.924 A: 0.2 R: 14.9 N: 7
2014/11/03 13:32:25.4 (FIX   ) N:35 52 22.7620 E:138 23 22.8091 H:1003.924 A: 0.4 R: 15.0 N: 7
2014/11/03 13:32:25.6 (FIX   ) N:35 52 22.7619 E:138 23 22.8091 H:1003.924 A: 0.6 R: 15.0 N: 7
2014/11/03 13:32:25.8 (FIX   ) N:35 52 22.7618 E:138 23 22.8092 H:1003.926 A:-0.2 R: 15.0 N: 7
...

rtkrcv> !top

top - 04:33:20 up  4:59,  3 users,  load average: 2.09, 1.87, 1.35
Tasks:  70 total,   1 running,  69 sleeping,   0 stopped,   0 zombie
KiB Mem:    447864 total,   358928 used,    88936 free,    17400 buffers
KiB Swap:   102396 total,        0 used,   102396 free,   303468 cached

 3789 pi        20   0  3004  736  620 S  19.4  0.2   5:17.11 ublox-spi-to-tc
 3884 pi        20   0 44064 6672 1948 S  19.4  1.5   3:14.64 rtkrcv
10512 root      20   0     0    0    0 S  16.2  0.0   0:03.73 kworker/u2:0
10708 pi        20   0  5716 1424  956 R   9.7  0.3   0:00.10 top
...

5HzのRTKでCPU負荷はublox-spi-to-tcpが20%、RTKRCVが20%。仰角マスク15度で衛星数は7なので何とか間に合っているが、衛星数が14になったら少し厳しいのではないか。GPS+GLO+QZSやGPS+BDS+QZSでは2Hzが限界か。GPS/INS統合も20Hzで回るかどうかは微妙。

-------------------------------------

NAVIO 昨日の続き。

(19) U.FL - SMA変換ケーブルがAmazonから届いたので、屋上のアンテナ (GPS-703-GGG) に接続。再度GPSのサンプルを実行。
$ ./gps
Ublox test OK
Current location data:
iTOW: 117377.000000
Latitude: 35.8XXXXX
Longitude: 138.3XXXXX
Height: 10045.640000
...
なんか高度が変な気がするが、気のせいだろう。u-bloxはちゃんと動いている様だ。

(20) 次にAccelGyroMagのサンプル。
$ cd ../AccelGyroMag
$ make
$ ./AccelGyroMag
Acc: +0.000 +0.000 +0.000 Gyr: +0.000 +0.000 +0.000 Mag: +0.000 +0.000 +0.000
...
これもやはりうまく繋がっていない様だ。

(21) 次にBarometerのサンプル。
$ cd ../Barometer
$ make
$ ./Barometer
Failed to open device: Permission denied
...
$ sudo ./Barometer
Temperature(C): 43.493839 Pressure(millibar): 901.503418
...
なんか気温が変な気がするが、データはちゃんと取れている様だ。(良く考えたら基板温度だから妥当かも)

(22) IMUはちゃんとデータが取れないのでMikhailに問い合わせを送る。ubloxは動く様なのでこれに従いRTKを動かしてみる。ubloxとrtkrcvを繋ぐためのブリッジユーティリティublox-spi-to-tcpが用意されているのでこれを使う。
$ wget httsp://github.com/emlid/RTKLIB/archive/master.zip
$ unzip master.zip
$ cd RTKLIB-master/src
$ more rtklib.h
...
#define VER_RTKLIB "2.4.2"
#define PATCH_LEVEL "p9"
...

バージョンは2.4.2 p9。
$ cd ~/Navio/Utilities/ublox-spi-to-tcp
$ make
$ ./ublox-spi-to-tcp 5000 &
Waiting for connection.
$ cd ~/RTKLIB-master/app/rtkrcv/gcc
$ make
$ cp ../single.conf .
$ vi single.conf
inpstr1-type =tcpcli
inpstr1-path =127.0.0.1:5000
inpstr1-format =ubx
misc-startcmd =
misc-stopcmd =
file-cmdfile1 =../../../data/ubx_spi_raw_5hz.cmd
$ ./rtkrcv -s -o single.conf
Connection accepted.
** rtkrcv ver.2.4.2 console (h:help) **
rtkrcv > sol 1

2014/11/03 10:26:59.0 (SINGLE) N:35 52 22.7956 E:138 23 22.7856 H:1005.814 (N: 2.656 E: 2.145 U: 7.353)
2014/11/03 10:27:01.2 (SINGLE) N:35 52 22.7998 E:138 23 22.7601 H:1006.725 (N: 2.656 E: 2.144 U: 7.352)
2014/11/03 10:27:03.0 (SINGLE) N:35 52 22.7911 E:138 23 22.7690 H:1004.636 (N: 2.656 E: 2.144 U: 7.351)
2014/11/03 10:27:05.2 (SINGLE) N:35 52 22.7879 E:138 23 22.7798 H:1004.712 (N: 2.656 E: 2.144 U: 7.349)
2014/11/03 10:27:07.4 (SINGLE) N:35 52 22.8036 E:138 23 22.7723 H:1003.389 (N: 2.656 E: 2.144 U: 7.348)
...

rtkrcv > !top

Tasks:  66 total,   1 running,  65 sleeping,   0 stopped,   0 zombie
KiB Mem:    447864 total,   345096 used,   102768 free,    13384 buffers
KiB Swap:   102396 total,        0 used,   102396 free,   297964 cached

 3110 root      20   0     0    0    0 D  37.4  0.0   2:20.34 kworker/u2:2
 2673 pi        20   0  3004  732  616 D  28.5  0.2   2:09.18 ublox-spi-to-tc
 3123 pi        20   0  5720 1512 1040 R   1.9  0.3   0:00.23 top
 3120 pi        20   0 16968 5464 1168 S   1.5  1.2   0:04.69 rtkrcv
 2178 pi        20   0  9392 1652 1048 S   0.9  0.4   0:11.22 sshd
...

一応単独測位解は出るようになったけど、ublox-spi-to-tcpがCPU 30%近く食っているのは、何とかした方が良いかも。あと5Hzでraw出しているはずだけど、解がかなり抜けている。これSPIの速度が間に合っていないのじゃないかなあ。

(以下続くかも)

-------------------------------------

仕事でCore i7 5960X (8 core) のマシンを入れたのだけど、サイズの大きなところでは概ね300GFlopsは出る様 (MKL 11.1, HT=OFF)。10%程度オーバクロックできればXeon E5-2687W×2とあんまり変わらないはずで、1台組むか。ということで@SycomのBTOで注文。@Sycom選んだ理由は選べるパーツが多かったから。

...................................................................................................................................

2014/11/01

NAVIOのセットアップ。メモを兼ねて。

(1) NAVIOの他に用意したもの。
- Raspberry Pi type B (Amazonで\4,500)
- U.FL - SMA変換ケーブル (千石で\680)
- Transcend 32GB SDHCカード (秋葉で\1,680)
- micro-USBケーブル、HDMIケーブル、LANケーブル、USBキーボード
- 0.7A以上のUSB電源、ここではVaioのACアダプタを利用。
Raspberry PiとSDカードは相性がかなりあるらしく (参照)、このTranscendはセーフ。\999のノーブランド買わないで良かった。

(2) 本家からraspbianイメージ (zip) をダウンロード。解凍したimgファイルをWin32 Disk ImagerでSDカードに書き込み。

(3) Raspberry PiにSDカード、USBキーボード、LAN、ディスプレイを接続して電源接続。

(4) raspi-configでExapnd FilesystemとInternationalisation Options -> Change Localeを設定。Localeはja_JP.UTF-8選択。

(5) ログイン。ユーザ:pi, パスワード: raspberry

(6) キーボード配列の変更。
$ sudo vi /etc/default/keyboard
XKBMODEL="jp106"
XKBLAYOUT="jp"

(7) IPアドレス確認
$ifconfig
eth0 ... inet...: 192.168.xxx.xxx

(8) PCからputtyでSSH接続してログイン。
login as: pi
pi@192.168.xxx.xxx's password: ****

(9) とりあえず必要そうなパッケージを入れる。
$ sudo apt-get install vim
$ sudo apt-get install ftp

(10) NAVIO用ドライバとRTKLIBをgithubからclone。なおgitは標準でインストール済み。
$ git clone https://github.com/emlid/Navio
$ git clone https://github.com/tomojitakasu/RTKLIB

RTKLIBのリポジトリが大きすぎてダウンロードにやたら時間がかかる。指摘は貰っているのだけどバイナリファイルは別リポジトリにした方が良いかも。

(11) とりあえずrnx2rtkpの性能を測る。
$ cd RTKLIB/app/rnx2rtkp/gcc
$ make
...
$ wget ftp://terras.gsi.go.jp/data/GRJ_2.12/2014/001/21100010.14o.gz --ftp-user=xxx --ftp-password=xxx
$ wget ftp://terras.gsi.go.jp/data/GRJ_2.12/2014/001/06270010.14o.gz --ftp-user=xxx --ftp-password=xxx
$ wget ftp://terras.gsi.go.jp/data/GRJ_2.12/2014/001/06270010.14N.tar.gz --ftp-user=xxx --ftp-password=xxx
$ gunzip *.gz
$ tar xvf *.tar
$ time ./rnx2rtkp 21100010.14o 06270010.14o 06270010.14n -o out.txt
real 5m26.355s
user 5m15.090s
sys 0m6.080s
うーん、BBに比較しても倍以上遅い。

(12) コンパイルが遅いのも萎えるので、ちゃんと測ってみた。Raspberry Pi上でrnx2rtkpのコンパイル・リンクに362秒、Core i7 2600K + Ubuntu だと 9.6秒なので40倍くらい遅い。両者ともシングルコアしか使っていないはずで、コア数も考慮すると普通のPCの160倍くらい遅いことになる。さすがにRaspberry Piを普通のPCとして使うのは無理がある。

(13) LAPACK, BLASを有効にして再メイク。なお、ライブラリは標準で入っているが、ldが何故か*.so.3等をリンクしてくれない様で、リンクエラーになる。仕方ないのでシンボリックリンクを追加している。
$ cd /usr/lib
$ sudo ln -s libblas.so.3 libblas.so
$ sudo ln -s liblapack.so.3 liblapack.so
$ cd ~/RTKLIB/rnx2rtkp/gcc
$ vi makefile
CFLAGS = ... -DLAPACK
LDLIBS = ... -lblas -llapack
$ make clean; make
$ time ./rnx2rtkp 21100010.14o 06270010.14o 06270010.14n -o out.txt
real 3m44.100s
user 3m32.370s
sys 0m6.800s
ということで少しは早くなったけど、BBに比較してもかなり差がある。10HzのRTKは少し厳しいかも。
BB (original) はCortex-A8 600MHzだけど、これ見るとiPhone 3GSとほぼ同じなので最大2.4GFlops。Raspberry PiはARM1176JZF-S 700MHzで最大0.7GFlops。性能的には厳しい。ちなみにTegra K1 (2.2GHz) は70GFlopsでさすがに速い。edisonはAtom 500MHz×2なのでSSEを使えば6GFlops位か。(以上、単精度ピーク)

(14) CPU遅くて結構がっくりきたのだけど、気を取り直して、NAVIOのデバイス関係の設定。まずここを参考にSPIとI2Cデバイスを有効にする。
$ cd /etc/modprobe.d
$ sudo cp raspi-blacklist.conf raspi-blacklist.conf.org
$ sudo vi raspi-blacklist.conf
# blacklist spi-bcm2708
# blacklist i2c-bcm2708
$ cd /etc
$ sudo cp modules modules.org
$ sudo vi modules
...
spi-bcm2708
i2c-bcm2708
spi-dev
i2c-dev
$ sudo shutdown -r now

(15) デバイスの確認。
$ cd /dev
$ ls
... i2c-1 ... spidev0.0 spidev0.1 ...
$ sudo apt-get install i2c-tools
$ sudo i2cdetect -y 1

     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: 40 -- -- -- -- -- -- -- 48 -- -- -- -- -- -- --
50: 50 51 -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: 70 -- -- -- -- -- -- 77

(16) UARTポートを有効化。
$ git clone https://github.com/lurch/rpi-serial-console
$ cd rpi-serial-console
$ ./rpi-serial-console disable

(17) VNC serverのインストールと起動
$ sudo apt-get install tightvncserver
$ tightvncserver -geometry 1600x1200
Password:*****
Verify:*****
PCのVNCビューア (RealVNC) で接続すれば、Raspberry PiのXウインドウで操作が出来る様になる。

(18) Navioのサンプルを少し使ってみる。デスクトップのLXTerminalを起動。まずはAHRS。内部でPIGPIOというライブラリを使っているらしいので取ってきてインストール。
$ cd
$ wget abyz.co.uk/rpi/pigpio/pigpio.zip
$ unzip pigpio.zip
$ cd PIGPIO
$ make
$ make install
$ cd ~/Navio/C++/Exambles/AHRS
$ make
$ ./AHRS
ROLL: +0.00 PITCH: +0.00 YAW: +0.00 PERIOD 0:0009s RATE 1169Hz
...
NAVIO動かしてもROLL, PITCH, YAWの値が変わらないのでどうもうまくデバイスの値が取れてないっぽい。

(19) それじゃ次にublox。
$ cd ../GPS
$ make
$ ./gps
Ublox test OK
Current location data:
iTOW: 4833.999999
Latitude: 0.000000
Longitude: 0.000000
Height: 0.000000
ここで問題が発覚。千石で買ったU.FL - SMA変換ケーブルのSMAコネクタ側がオスになっていて普通と反対なので、どうやってもアンテナが繋がらない。これコネクタ付け変えるか、別のケーブル買ってくるしかないなあ。仕方ないのでAmazonで注文。

(以下続くかも)

-------------------------------------

4カ月位我慢して使ったのだけど、Suface Pro 3を止めて、Vaio pro 13"に戻ることにした。理由は、

(1) 電車内の膝上や狭い机上で、スタンドを出してキーボード広げて使うのはかなり辛い。
(2) タイプカバーキーボードの出来が悪い。特にファンクションキーがFnキーとの組合せでないと入力できないのは致命的。キー間が空いていなくて良くミスタイプするし、打感もペナペナで気分悪い。
(3) USB 1本しかないし、SDスロットもmicro SDしかない。USBの給電弱くてDVDドライブ使えないし、やはり色々と困る。
(4) ACアダプタがごつくて携帯性が悪い。
(5) APが対応してないので、結局ペン入力は最初に試した以降一度も使っていない。タッチは使うけど、結局metro AP使ってないので、ほぼなくてもOK。
(6) タブレットとして使うにはやはり重すぎる。タブレット用には新しい8インチのXepria Z3買うつもり。

Vaio proの一番の問題はスライドパッドの出来が悪くて操作性最悪なこと。MBA 13"のretinaモデルが出れば、またそっちに行くかもしれない。

...................................................................................................................................

〜2014/10/31


Home by T.Takasu