日記・備考録
Diary/Memorandum

2005 | 2006 | 2007 | 2008 | 2009 | 2010 | 2011 | 2012 | 2013 | 2014 | 2015 | 2016/ 1 2 3 4 5 6 7 8 9 10 11 12 | 2017
Search
August September
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
October | Home

2016/10/01〜

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

2016/09/26

Beyond Your Expectation, LiGHTHOUSE Technology & Consulting Co., Ltd.

会社のHPが全面改訂されたらしいので宣伝。製品カタログのPDFもダウンロードできる。興味を持たれた方はContactからお問い合わせを。

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

必要があってRTKLIB 2.4.3 b25でビデオキャプチャ機能を追加したのだけど、これには、FireMonkey (FMX) のTVideoCapture関連APIをそのまま使っている。最初はDirectShowを直接使うつもりだったがCOMの面倒くささに挫けて安易な道に。ちなみにVCLにはビデオキャプチャ機能はない様だ。FMXでは、ターゲットプラットフォームでiOS、AndroidやOS Xも選べるので、容易にマルチプラットフォームで動くAPが書ける。初めてFMXを使ったのだけど、使い勝手はそれほどVCLと変わらないようだ。ただTIniFileが無かったり、描画関係が結構変わっていたりして慣れは必要。

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

2016/09/23

bcc64が遅いのが分かって落ち込んでいるのだけど、せっかくだからRTKLIBをDLL化するか。(DLL化は何度か試みているのだけど、AP毎にコンパイルオプションが微妙に違う所が悩ましい) でも、LIBCの問題だとすると解決しないか。

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

2016/09/22

C++ Builderコンパイラ性能の計測。RNX2RTKPによる、10Hz×36分、1周波後処理基線解析、combinedモード。

Compiler Option OS CPU Execution Time
bcc32 (RAD Studio 10.1) Release Windows 7 64bit Core i7 2600K 1 min 35.2 sec
bcc64 (RAD Studio 10.1) Release Windows 7 64bit Core i7 2600K 3 min 14.7 sec
gcc 4.7.3 (x86_64) -O3 ubuntu 13.04 64bit Core i7 2600K 1 min 11.3 sec
MSC platform=win32 (Visual Studio 2015) Release Windows 7 64bit Core i7 2600K 1 min 54.0 sec
MSC platform=x64 (Visual Studio 2015) Release Windows 7 64bit Core i7 2600K 1 min 29.6 sec
clang 3.2.1 (x86_64, based on LLVM 3.2) -O3 ubuntu 13.04 64bit Core i7 2600K 1 min 11.7 sec

bcc64は驚くほど遅い。てっきり最適化が効いていないのかとオプションを何度も確認したが、「最適化」「できるだけ速いコードを生成する」は「true」になっている。コンパイルもbcc32に比較してかなり遅いがそれは許す。ただ、実行時間が、gccと比較して3倍近く、bcc32と比較しても2倍、では使い物にならない。\18万返せ。

補足: bcc32 --version, bcc64 --versionの結果。bcc64はLLVMベースの様だ。(9:31追記)
Embarcadero C++ 7.20 for Win32 ... Revision 7.20.5913.35779
Embarcadero C++ 7.20 for Win64 ... bcc64 version 3.3.1 (35832.774a6b6.824f5ad) (based on LLVM 3.3.1) Target: x86_64-pc-win32-elf Thread model: posix

再補足: MSC (VS 2015) の結果を追加。やっぱりgccは速い。(11:30追記)

再々補足: clangの結果を追加。こう見るとLLVM自身は十分速いのだけど。bcc64のLIBCが遅すぎるのか。(12:11追記)

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

2016/09/21

Embarcadero, C++ Builder

C++ Builder 10.1 Berlin Professional版を購入。\183,600也 (税込)。キャンペーンでMobile Add-On Packが付いている。相変わらず、Starter Editionでは64bitコンパイラが使えないし、Mobile Add-Onが有ればiOSとAndroid用アプリも開発できるかも、ということで清水の舞台から飛び降りる気分でポチった。もちろん次期バージョンのRTKLIBのためである。

殆どの開発環境がタダで手に入る時代に\20万近く払うのはどうだろう、とか当然思うわけで。あと、Embarcaderoみたいな、(有る意味) あくどい商売しているメーカにお金を貢ぐのは、という話もある。ただ、VCLからQtに乗り換えるオプションも含めて、色々考えた結論として、次期バージョンはC++ Builderのまま行くことにした。

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

P.Groves, It's Time for 3D Mapping-Aided GNSS, InsideGNSS, 2016

都市部の条件の悪い環境で3D地図を使って測位精度を向上させるという研究。NLOS衛星をどう判定するか肝。Enhanced GNSS RangingとShadow matchingを統合して、数10mから数mまで誤差を低減できるとしている。似たような研究は、早稲田の鈴木君もずいぶん前からやっていて、今年のIONのベストプレゼンも取っている。当然、今後スマホに実際に実装されてくる可能性が高いので、パテント取ってQualcommに売れば億万長者だな、などと不埒なことを考えてしまう。

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

2016/09/20

S.Carcanague et al., Finding the Right Algorithm Low-cost Single-Frequency GPS/GLONASS RTK for Road Users, InsideGNSS, 2013

少し古い記事だけど、低価格RTKについてのよいまとめ。

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

RTKLIB 2.4.3 b24で、RTKRCVの複数コンソール接続に対応。複数コンソールを使うには-pオプションでポートを指定して、そのポートにtelnet端末で接続する。パスワード入力が面倒な場合は -w "" オプション付けて。

ついでなのでRTKRCVのコンソールでオプション変更するのは以下みたいな感じ。最近組み込みでRTKLIB使う人も増えてきたので。そのうちAndroid 7.0のGNSS raw data APIのドライバ追加しよう。

rtkrcv> opt path
 inpstr1-path       =192.168.0.11:10008
 inpstr2-path       =192.168.0.11:10009
 inpstr3-path       =
 outstr1-path       =
 outstr2-path       =
 logstr1-path       =
 logstr2-path       =
 logstr3-path       =
rtkrcv> set inpstr2-path 192.168.11:10010
option instr2-path changed. restart to enable it
rtkrcv> restart
stop rtk server
rtk server restart
rtkrcv>

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

M8N F/W3.01の件、結構興味持ってる人多い様で。ヒントだけ書くと位置交換、XOR、ビット回転を組み合わせている。2.01と3.01を両方持っていれば、形式はほぼ同じなので、共通部分を突き合わせれば解析できるはず (参考)。暇な人はどうぞ。

なお、著作権法第30条では「著作物」を「技術的保護手段の回避」を行って「複製」するのは「私的使用」でも許されていない (罰則はない様)。まあ、受信機から出力されるデータが「著作物」となるかはかなり微妙で、多分当たらないけど。

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

2016/09/17

NovAtel, OEM7 Receivers

NovAtel社がOEM7受信機を発表。628フォームファクタの729、小型の7600, 7700等。OEM6に比較して、チャンネル数が555になり、GPS/QZS L1C, GLO L3, L5, BDS B3, GAL E6, QZS LEX, SBS L5, IRN L5のサポートが追加されている。同時に新しいアンテナVEXXIS (多分ヴェクシスと読む) も発表された。GNSS-850ではGLO L3, GAL E6やBDS B3がサポートされる。IRNSSを正式サポートした市販受信機は初めてではないか。

値段次第だが7700はちょっと欲しい感じ。

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

川元他, 電子基準点リアルタイム解析システム (REGARD) プロトタイプの開発, 国土地理院時報 (2016, 128集)

REGARDの概要。

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

2016/09/14

昨日、夜アップした記事を削除。$18でRTKしたい人は自分でなんとかする様に。

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

2016/09/13

(記事削除。9/14追記)

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

u-blox M8N F/W3.01では、以前のF/Wで使えた非公開のUBX-TRK-MEAS (0x30 0x10) メッセージが利用できなくなくなった。有志 (主にロシア人) の解析によると、これらメッセージはスクランブル後、UBX-SEC-XXX (0x27 0x00) に格納されて出力されるらしい。

ということで、このメッセージをデスクランブルするためのublox.cのパッチ、すなわちM8N F/W3.01で生観測データを利用可能にするパッチ、を送ってもらったのだけど、これRTKLIBにマージして公開すると著作権法第120条の2の「... 技術的保護手段の回避を行うことをその機能とするプログラムの複製物を公衆に譲渡し、...」あたりに抵触しそうだなあ (三年以下の懲役若しくは三百万円以下の罰金)。仕方ないのでボツ。どうしても興味のある方は個別に問い合わせを。

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

2016/09/11

これもあんまり大した話ではないのだけど、切り替えが面倒なのでRTKNAVIに5パネルモードを追加。

こんな感じでL1,L2,L5を同時監視できたりする。

補足: これ良く見るとスカイプロットでGLONASSのL5が受かっていたり変だね。ということでb24でバグ修正。(9/13追記)

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

2016/09/09

Apple WatchにGPSが載ったので買おうかなあと思っているのだけど、どこを見ても稼働時間の仕様が見つからない。と思ったら見つけた。「最大18時間」。細かくはここ参照。「Apple Watch Series 2の内蔵GPSを使用した場合のワークアウト時間は最大5時間です。」

GPS腕時計はやっぱり重量とバッテリ稼働時間が重要だよなあ、と思うので主なGPS腕時計のスペックだけ (稼働時間はGPS使用時、測位ができるもの)。

Garmin ForeAthlete 920XTJ: 約61g, 約38H (ウルトラトラックモード)
Epson WristableGPS MZ-500B/S: 約65g, 46H (毎秒計測)/110H (間欠計測)
Suunto Spartan Ultra Black: 77g, 26H (trainning mode)
Apple Wath Series 2: 28.2g (アルミニウム 38mm), 最大5H

Garminのウルトラトラックモードは間欠計測のはずなので、こう見るとEpson凄い。

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

2016/09/06

RTKLIB 2.4.3 b22

Linux上に展開して、

>> cd rtklib/app/str2str/gcc
>> make
>> cd ..
>> ./run_cast.sh start

とやってあげると、STR2STRがNTRIP Casterとして立ち上がるはずである。
設定は直接run_cast.shを編集、ソーステーブルはsrctbl.txtを編集。終了はrun_cast.sh stop、ソーステーブルの読み見直しはrun_cast.sh reload。

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

2016/09/05

Natural Earth - Downloads

あんまり大した話ではないのだけど、RTKLIB 2.4.3 b12でシェープファイル地図の読み込みに対応した。探すとシェープファイル地図って幾らでもあるようだ。上記で提供されるLarge scale dataをRTKPLOT 2.4.3 b21で表示。なお、b20は全球表示に少し問題が残っている。また、地球の縁にかかったポリゴンをちゃんと表示するのは結構面倒で、ちゃんとはサポートしていない。

補足: 上記の様にRTKPLOTの"Gnd Trk"における地図投影法は (概ね) 正射図法 (orthgraphic projection) である。正距円筒でもメルカトルでもUTMでも平面直角座標でもない。((概ね) と書いたのは地球の扁平効果が入っているから) なお、Google Mapsはメルカトルの様である。Google Earthは (多分) 正射図法か。(9/6追記)

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

メモ: ソケットプログラムTIPS。ノンブロックソケット受信でコネクション切断を検出する方法。
タイムアウト0でselect()を使う。select()が1を返し、続くrecv()が0を返す場合、コネクションは切断されている。以下はrtklib 2.4.3 b20 stream.cのコード。b20以前では、TCPサーバがクライアントからのコネクション切断を正常に検出できない問題が残っている。

/* non-block receive ---------------------------------------------------------*/
static int recv_nb(socket_t sock, unsigned char *buff, int n)
{
    struct timeval tv={0};
    fd_set rs;
    int ret,nr;
    
    FD_ZERO(&rs); FD_SET(sock,&rs);
    ret=select(sock+1,&rs,NULL,NULL,&tv);
    if (ret<=0) return ret;
    nr=recv(sock,(char *)buff,n,0);
    return nr<=0?-1:nr; /* -1: error or connection closed */
}

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

RTKLIB 2.4.3 b20

RTKLIB 2.4.3 b20でSTRSVRにNTRIP Caster機能を追加。試験してないけどSTR2STRでも以下で動くはず。

str2str -in ntripc_s://:pwd@:port -out ntripc_c://usr:pwd@:port -ft srctblfile

ソーステーブルを指定した場合はテーブルに指定したマウントポイントだけ、しない場合はどんなマウントポイントでも受け入れる。NTRIP ver.1.0のみのサポートで今のところ管理機能は最小限。接続可能NTRIP serverまたはclient数は、stream.cで定義されるMAXCLI (=32) に制限される。複数サーバが接続された場合、変換機能は正常動作しない。portを省略した場合はNTRIP server用が80, NTRIP client用が2101を使う。NTRIP server用とNTRIP client用に同一ポートを指定することはできない (Start時にbindエラーになる)。RTKNAVIでも出力ストリームにNTRIP Casterを選べるようにしたので、単一ストリームをNTRIP配信するだけならNTRIP Casterを立ち上げる必要はない。(RTKNAVIのNTRIP Casterは正常動作しない。b21以降修正。15:45追記)

無償で使えるNTRIP Casterで良いのがなかなかないので追加した。2.4.3正式版までには管理機能をもう少し追加する予定。STR2STRはRTKRCVみたいにTelnetでログインして監視や設定ができる様にするつもり。

補足: UBUNTUだとポート80ってrootじゃないとソケットオープンできないのか。確かに攻撃多そうだしね。(9/6追加)

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

2016/09/03

M8PによるRTKマニュアルを少し改訂。

勘違いがありM8P-0は基準局専用ではなくローバ (移動局) 専用であった。

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

〜2016/08/31


Home by T.Takasu