日記・備考録
Diary/Memorandum

2005 | 2006 | 2007/ 1 2 3 4 5 6 7 8 9 10 11 12 | 2008
November December 2007
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 31
January | Home

2008/01/01〜

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

2007/12/31

さて今年も今日でお終い。
今年を振り返ってみると一年それほど大過なく好きなことをやってこれた年だったとは言えると思う。研究面では思ったように成果が出なかった気もするが、地道な努力がそのうち良い結果となって現れることを祈っています。皆様よいお年を。

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

2007/12/29

プログラムチューニングやコンパイルオプションの設定により、Armadillo上でのrtklibの実行は1エポック1.5s位までは高速化できた。後はやはりsoft-floatかMaverickCrunchの有効化しかないのでこれは最低限gccやlibcの作り直しが必要でもう少し時間がかかるだろう。
しかし高速化のためにはプロファイルをちゃんと取らなければいけないと痛感。プロファイルを取れば性能ネックが何処にあるか一目瞭然。(
補足: Linuxではスタックオーバフロー例外のオーバヘッドが結構大きいことを発見。ちょっと大きいローカル配列はmallocで確保したほうが良い。12/31追記) さて年末で雑事が溜まっているのでひとまず作業は中断。

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

2007/12/28

Debian Wiki, ARM EABI Port
ARMの浮動小数点演算を高速化する
EABI:Embedded Application Binary Interfaceと呼ぶABI。これの実装にはKernelを2.6.18以降に上げる必要があるしカーネルだけでなく全てのライブラリやバイナリを作り直す必要がある。まだstableでも無いようだし誰かがちゃんとポーティングしてくれるのを待つしかないのかなあ、と半分あきらめモード。しかし新しいことをやろうとすると何事もすんなりとはいかんなあ。(とりあえずsoft-floatでも10倍くらいは速くなるようなのでもう少し頑張ってみるか)

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

2007/12/27

組み込みLinuxは結構面白い。USBメモリも標準でサポートされているので全くプログラムを書かないでも

cat /dev/ttyACM0 > ublox.log

とやるだけで簡易ロガーになる。ただ少し消費電力が厳しい。Armadillo-220、ublox AEK-4P、1G USBメモリ、USB無線LAN (Planex GW-US54GXS) を使って簡易ロガーを動かして、5V 1800mAhのLiバッテリ (JTT Mobile Battery Slim) で1時間40分しか持たなかった。データをRAMにバッファリングしてUSBメモリへの保存頻度を下げればもう少し稼働時間は延ばせるかもしれない。(USBメモリの書き込みを止めたら稼働時間は2時間15分になった。結構USBメモリは電力を食っている様だ)

rtklib_2.1をクロス環境でコンパイルしてArmadilloで実行し実行時間を測る。rnx2rtkpの短基線二周波KGPS測位。30s間隔24H分2880エポック。

Armadillo-220 (ARM9 200MHz) : 17800s (6.18s/epoch) (Linux2.6+gcc4.1.2)
PC (C2Q Q6600 2.4GHz) : 14s (0.0049s/epoch) (Win XP+VMWare+Linux2.6+gcc4.1.2)
PC (C2Q Q6600 2.4GHz) : 20s (0.0069s/epoch) (Win XP+Cygwin+gcc 3.4.4)

Armadilloの値は途中までの計測による予測値。なおBLAS/LAPACKは使っていない。大体PCの1000倍強実行時間がかかっており相当遅い。PCの1/100程度の性能はあるだろうと予測していたのだが。Armadilloで使っているARM9には一応浮動小数点機構が付いているらしいのだが、現行ディストリビューションでは使われていない様だ。従って浮動小数点演算はライブラリエミュレーションであり、ここで10倍以上遅くなっているはず。この性能ではRTK-GPSには全然使えない。もっとチューニングの必要がある。あとPCでも1エポック5msもかかっているのは少し遅すぎるのでこれも調査する必要がある。

少しARMの浮動小数点演算について調べた。
(1) Armadilloの開発環境ではhard-floatなオブジェクト (すなわちFPU命令を埋め込んだオブジェクト) を生成する。hard-floatオブジェクトではFPUがない場合例外が発生するのでFPU命令毎にカーネルエミュレーションにより命令実行される。これはオーバヘッドが大きい (
補足: 例外発生するとコンテキストスイッチが起こりキャッシュもフラッシュされるのでまともな性能は出ない。結局現行の多くのARM Linuxディトリビューションでは浮動小数点演算を多用するAPはまともに動かないということ。12/28追記)
(2) コンパイラ設定でsoft-float (すなわちFPU命令をコンパイラがライブラリ呼び出しまたは整数演算命令に変換) なオブジェクトを生成することもできる (FPUなしの場合この方が速い) が、この場合libcを含め使っているライブラリを全てsoft-floatで作り直す必要がある。これは相当に大変そう。
(3) Armadillo-2x0で使っているARM9ベースのCPU EP93シリーズにはMaverickCrunchと呼ぶFPU対応コプロセッサが搭載されているが、まだ現行gccがちゃんと対応していないらしい。

どうもFPUのカーネルエミュレーションは遅すぎる様でsoft-floatに比較しても10-20倍時間がかかる様だ(参考)。RTK-GPSの場合多分実行時間の90%以上が浮動小数点演算なのでちょっと実用にならない。これはなんとかならないだろうか。

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

2007/12/26

Reuters, Russia launches final satellites for its own GPS, Dec 25, 2007
2007/12/25 19:32UTC, 3機のGLONASS衛星、ロシアカザフスタンのバイコヌール宇宙センタから打ち上げ成功。記事では"航法システム完成のため最後の3機"と書いているのだけど、FOC24機にはならないのでまだ完成には時間がかかるのではと思う。いずれにしてもGLONASSが実用的に使える様になりつつあるので来年になったら少し本格的にGLONASSの利用に取り組んでみたい。

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

2007/12/25

覚書。Armadillo-220でのubloxと無線LAN (Planex GW-US54GXS) USBドライバのインストール法。

(1) ublox
 (a) 開発環境でmake menu config。Kernel/Library/Default Selection-Customize Kernel SettingsをON。
 (b) Linux Kernel Configuration - Device Drivers - USB support - USB Modem (CDC ACM) supportをON。
 (c) atmark-dist-20071214/vendors/AtmarkTechno/Armadillo-220.Base/ext2_devtable.txtに以下行を追加。
 /dev/ttyACM c 666 0 0 166 0 0 1 2
 (d) make allしてkernelとromfsを作り直し。
(2) 無線LAN (Planex GW-US54GXS)
 (a) linux-1.26.12.3-a9-13/drivers/usb/net/zd1211_driver/zdusb.c 67行に以下行を追加。(ベンダID/プロダクトID追加)
 {USB_DEVICE(0x2019,0x5303)},
 (b) inux-1.26.12.3-a9-13/drivers/usb/net/zd1211_driver/Makefile 8行を以下に変更。
 ZD1211REV_B=1
 (c) 開発環境でmake menu config。Kernel/Library/Default Selection-Customize Kernel Settings, Customize Vendor/User SettingsをON。
 (d) Linux Kernel Configuration - Device Drivers - USB support - USB Network Adapters - USB ZD1211 based Wireless device SupportをON。
 (e) Userland Configuration - Network Application - wireless_tools suport, iwconfigをON。
 (f) make all してkernelとromfsを作り直し。

なんのことはない、Linux2.6では両方とも既にドライバがサポートされているのでそれを有効にしてカーネルを作り直せばよい。ただ少しソースを直す必要がある。なおubloxは汎用USBシリアルデバイス (CDC ACM) として認識され、デバイス名は/dev/ttyACM0。また無線LAN設定はユーティリティiwconfigを使う。しかし組み込みLinuxは色々と制約があって普通のLinuxと使い勝手は随分と違う。でもやっと少し様子が分かってきたのでこれからは作業が進むだろう。

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

200712/23

ちょっとやりたいことがあって組み込みLinuxカードarmadillo-220を購入。ARM9 200MHz、RAM32MB、Flash RAM 8MB+256MB、USBホスト、LAN、シリアルI/O×3、パラレルI/O×16bit、で名刺以下サイズ。Linuxがプリインストールされているので電源とシリアル端末をつなげばすぐLinuxマシンとして利用できる。さてまずはubloxと無線LANをUSBで繋ぎたいので、ちょっとドライバを書かなければいけない。

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

2007/12/21

Spaceflight Now, Final Delta launch of 2007 lofts new GPS satellite, 20 December, 2007

2007/12/20 20:04UTC、GPS 2R-18衛星、米国フロリダ州ケープカナベラルからDelta2ロケットで打上げ成功。Delta2は79回連続の打上げ成功で1989年の登場から134回中132回の成功とのこと。これで軌道上のBlock IIR-M衛星は5機目。次の打上げは来年3月中旬に6機目のBlock IIR-Mを予定。(補足; 衛星番号はSVN57/PRN29で、スロットC1に投入される模様。12/25追記)

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

2007/12/19

ubloxのAEK-4T受信機のMSAS補正が旨く働かない件について以前何度か書いたが、現在ublox japan社から改修F/W版AEK-4Tをお借りして少し評価している。その結果を記録のため少し貼っておく。

まず固定点測位。屋根の上のアンテナ(NovAtel GPS-702-GG) と2分岐スプリッタ経由で新F/W版AEK-4Tと旧F/W版AEK-4Tを繋いで測位。1Hz 約5H分。NMEA解の基線解比較誤差、左: 新F/W、右: 旧F/W。参考のためRAW+RTLIB-MSAS-DGPS解

次に移動体測位。自動車ルーフにNovAtel GPS-702-GGを設置し2分岐スプリッタ経由で新F/W AEK-4TとNovAtel OEM-Vを接続。家の回りを40分ほどドライブ。左: NMEA解軌跡、右: NMEA解測位誤差 (NovAtel KGPS-FIX解比較)。参考のためRAW+RTKLIB-MSAS-DGPS解軌跡誤差生データ取得状況なおグラフ中青がDGPS(MSAS)解、赤が単独測位解を示している。またKGPS-FIX解が得られない区間は精度評価出来ないので精度は条件が良い区間のみの結果であることも注意。

さて、新F/Wでは旧F/Wにあった問題点は是正されていると考えられる。
固定点測位結果については非常に良い、というか良すぎる。フィルタは最も緩い設定にしてあるのだがスムージングのせいかマルチパスが非常に良く抑制され垂直RMS誤差が1mを切っている。使っているアンテナは測量級であるがこれはDGPS専用受信機に匹敵する精度と考えられる。
移動体測位に関してはMSAS補正が有効にならない区間が多い。MSASは受かっているのでこれに関してはまだF/Wの改良が必要と思われる。ただ旧F/WのMSASロスト後の再捕捉に非常に (数分〜数10分) 時間がかかる問題点は新F/Wでは見られなかった。

いずれにしてもF/Wさえ頑張ればMSASは非常に有効に働くということであり、他メーカの受信機F/Wも頑張って欲しいところである。

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

2007/12/13

ION GNSS 2007のproceedingがやっと公開されたので面白そうなものを少し読む。

D.Odijk et al., Two Approaches to Precise Kinematic GPS Positioning with Miniaturized L1 Receivers, ION GNSS 2007
低価格一周波受信機による精密測位性能評価。通常のRTKに加えて"time-differences"を使った"time relative method"を提案している。受信機としてublox TIM-LL/LPとSeptentrio AsteRx1を使って実評価している。公園の滑り台の上に基準局、roundabout (メリーゴーランド)上にローバ受信機を置き、回転させて測位精度を測っているのが面白い。昔RTK-GPSの精度評価用にジェットコースターを使って軌跡再現性を測ろうかと思っていたのだがこれはもっと簡単。結論があんまりよく分からないのだが、やっぱり低価格一周波受信機では色々工夫してもなかなか実用的な性能は出ないなあ、と言ったところか。

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

2007/12/05

TIOBE Programing Community Index
世界で最もポピュラーなプログラム言語は何か、というリスト。検索エンジンのヒット数でランクを決めているらしい。ここのところJavaがずっと安定した人気を保っているのはホントかねという気はする。最近の人気上昇組はPHP、C#、Rubyといったところか。Matlabも渋く23位に入っている。さてちょっとでもプログラムを書いたことがある言語を上げていくとJava、C、Basic、C++、Perl、JavaScript、Pascal、Fortran、Matlab、Ada、Awk、Bash、Csh、で今まで書いたコード量は、Cがダントツで、続いてC++、Matlab、Bash (sh)の順かなあ。今後やってみたい言語はRuby、C#、好きな言語は実はAwkやshだったりする。しかし世の中には色々なプログラム言語があるものだ。

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

2007/12/04

Robot Watch, 第2回GPSロボットカー学生コンテスト開催 〜GPSの測位データでロボットを制御!, 2007/12/4
先日のGPSシンポ時に行われたGPSロボットカーコンテストの詳細なレポートが上がっている。ちょうどGPSのロボット応用に興味が出てきて最初から最後まで見学していたのだが結構面白かった。来年は国際大会になるらしいのでぜひまた沢山の参加者がエントリして盛り上がってくれることを願う。

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

2007/12/02

NewScientist, China's satellite navigation plans threasten Galileo, November 8 2006
ちょっと古い記事だが中国のCompass/Beidou関連ニュースを貼っておく。これによるとBeidouは軍用信号に加えて2008年から10m精度の"open"サービスを開始するとある。まだ技術仕様がちゃんと公開されている訳ではないし性能や信頼性もよく分からないので中国以外で本当に使われるようになるかは不明であるが、GPS信号互換性が高く受信機ファームウェア改修程度で済むのであれば今後利用が進む可能性はある。openサービスに関しては中国 とその近隣国が対象とある。MEO衛星については全世界で使えるのではないかと思うが、もしかすると中国近隣以外では信号を出さないあるいは精度が落ちる等の制約があるのかもしれない。

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

2007/12/01

AFP BBNews, EU, GPSの対抗馬「ガリレオ計画」に24億ユーロの予算承認, 2007/11/26
AFP BBNews, 「ガリレオ計画」、EUが全会一致で実行に合意, 2007/12/01
今年5月に資金の件は決着がついていたのかと思っていたらどうも今まで揉めていたらしい。やっとプロジェクト継続が本決まりになった様だ。でも当初の2008年運用開始予定が2013年にずれ込む様だしこの先まだまだ波乱があるかもしれない。

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

〜2007/11/30


Home by T.Takasu