• 車種別
  • パーツ
  • 整備手帳
  • ブログ
  • みんカラ+

ぱららのブログ一覧

2009年12月31日 イイね!

[連載]Androidでパフォ箱データ解析 その7:Splitデータのフォーマット解析

ゲ~ロゲロ、今年も紅白見る予定のぱららです。

案外順調にここまで順調でありますヽ(´ー`)ノ

今回はDBOX.DSFファイルの中身を解析しました。
このファイルには、コントロールラインの位置情報。それに、ジムカーナのようにStartラインと
Finishラインが違うときのための、Finishラインの位置情報、それと各セクタタイムや分析の
ために使えるSplitライン(最大6つまで登録可能)があります。

それぞれスタートポイントとエンドポイントがあり、経度、緯度の順です。
ポイントを無効にするには、2147483647 を設定します。キリいい数字なんですが、プログラマ
じゃないとわからないですよねw
#16進数で7fffffffです。

----------------------------------------------
[Start Finish]
839516550 216900923 839516505 216900764

[Finish]
2147483647 2147483647 2147483647 2147483647

[Split 1]
839525010 216899714 839524967 216899502

[Split 2]
839531317 216896883 839531405 216896975

[Split 3]
2147483647 2147483647 2147483647 2147483647

[Split 4]
2147483647 2147483647 2147483647 2147483647

[Split 5]
2147483647 2147483647 2147483647 2147483647

[Split 6]
2147483647 2147483647 2147483647 2147483647
----------------------------------------------

簡単だなぁと思ったんだけど、実はちょっと問題あったよ。
オレはてっきりStart Finishの2つのポイントのデータはコントロールラインの位置で
コースを横切る2点だと思ってました。
実際の位置を調べてみると、最初の点をAとすると、計測ポイント、次のポイントをB
とすると逆進行方向に数mはなれた位置となっていた。えっどういうこと?

●オレの予想:
 A   ↑   B
 ・----↑----・ ←コントロールライン
     ↑
     進行方向

●実際の位置
 A   ↑     
 ・----↑---- ←コントロールライン
     ↑
     進行方向
 ・
 B

コントロールラインを横切る判定を、2つの計測ポイントを結ぶ直線とこの計測ライン
が交わった位置を検出するアルゴリズムを考えていたので予定が違ったぞ!

プログラム的にはデータを読み込んだ後に、点Aを原点にして進行方向に向かって、
90度に直交する直線を左右にある程度距離をとった位置を算出して、計測ライン
データを作ることにした。左右に広げるのは、このポイントがコースの右端にきたり
左側にきたりして、一定のルールがないためだ。
予定よりコード書く量が増えた瞬間(´・ω・`)

このらいんのゲート幅はPerformaceToolではデフォルト25mとなっていた。
2つのコースが近くて、ゲートがまたいでしまう場合はこの値を小さくする必要が
あり、手動で変更できるようになっている。

この連載の今年のノルマはこれで終わりヽ(´ー`)ノ
新年からはコードを書いていく過程をレポートする予定であります。
では、よいお年をお迎え下さい!
Posted at 2009/12/31 01:02:21 | コメント(1) | トラックバック(0) | パフォ箱ツール | 日記
2009年12月30日 イイね!

[連載]Androidでパフォ箱データ解析 その6:Logデータのフォーマット解析

ゲ~ロゲロ、もう今年も終わりかと物思いにふけるぱららです。

さて、いよいよLogデータを解析するのであります!
まぁこれが出来ないと話にならんのであります。

使ったツールは
 Binary Editor BZ
であります。
このバイナリエディタは、構造をファイルに定義しておくと、その構造にあわせた表示をしてくれるし、繰り返し表示するときも簡単に次のレコードに移動してくれるので重宝するんですヨ。

パフォーマンスボックスのログデータはDBOX_XXX.DBNというファイル名で記録されるのであります。
XXXは001から順番に番号がカウントされていく感じ~。

まずは秀丸でファイルを開いてみると、テキストとバイナリが混在してました。
PerformaceToolでVBOフォーマットで保存すると、テキストデータで保存されマッスル!
が、現地でPCを使わずにデータを見るのが目的なので、このバイナリデータが見れないと
目的が達成できません!
まぁでも親切に構造が書いてあったのでw簡単に分析完了しましたよヽ(´ー`)ノ
---------------------------------
File created on 2008/12/23 at 14:37:02

[HEADER]
SATS(1)
TIME(3)
LATITUDE(4)
LONGITUDE(4)
VELOCITY(2)
HEADING(2)
HEIGHT(4)
YAW__(2)
YAW_(2)
YAW(2)
SLIP(2)
CHKSUM(2)

[COMMENTS]
Firmware Version 01.00 Build 0048
Serial Number -------

[DATA]
$・ 愠・
,6・m ・ 裕
$・ 惲テ2
j6」j ・ 4ワ
$・ 愑・
ゥ6クg ・ #
$・ 愷^2
・スZ ・ チミ
$・ 愰)2
$6・T ・ 塚
$・ 愰・
b6タY ・ D
---------------------------------

●解析結果
1つのデータレコード長は33Byte。バイトの並びはビックエンディアン。
ヘッダは”$”の文字(0x24)から始まる。
以後はHeaderに書いてある順番とカッコ内のバイト数で構成されている。
SATS(1):捕捉した衛星の数。筑波だと5~10くらいの衛星数が入っていますね。
TIME(3):グリニッジ標準時で、1970年1月1日0時0分0秒からの経過時間が10msec単位で記録されている。
 ただし、3バイトしかないので、下3バイトのみとなる。GPSの計測周期が10Hzなので100msec毎に
 カウントアップされる。ロガーとしては相対時間がわかればいいので、これでいいが、プログラムで
 計算するときはちょうど桁上がりが発生したときの処理を忘れないようにしないとネ。
LATITUDE(4):緯度(北緯)。百分率表記で単位は分であわせている模様。変換してGoogleMAPで表示させた ら、筑波サーキットのコントロールラインと思われるところが表示されたので問題ないだろう。
 今回はGoogleMapなとどの連携もないし、相対位置がわかればいいだけなので、さらに無問題。
LONGITUDE(4):経度(東経だがマイナスなし)
VELOCITY(2):速度。単位はkm/h。100倍された値が記録されているので、表示するときは100で割る。
HEADING(2):進行方向を360度を100倍だったかかな。。。示している。今回は使わない。
HEIGHT(4):高度。何倍かして記録されている。メモがどっかいったので何倍かわからん。もち使わない。
YAW__(2):記録されてない。常に0.DriftBox用と思われ。
YAW_(2):同上
YAW(2):同上
SLIP(2):同上
CHKSUM(2):なんのチェックサム方式かは不明。使わない。

●Javaで実装上の注意
簡単なファイル読み込みプログラムを作ってバイナリデータを読み込んでみた。
C++と違ってJavaにはunsignedの整数型がないので注意。
また、Byteデータをビットシフトしてint型などに入れるときも注意。Javaでは必ずint方に
キャストして(符号拡張して)から代入される。
例えば
 short int a に Byte b[2]を入れるとき
 a = b[0]<<8 + b[1];
だと、バグりました(´・ω・`)
正しくは
 a = (b[0]&0xff)<<8 + b[1]&0xff;
のように0xffのANDをとる必要がありました。
JavaのByte型はCのchar型と同じでsignedです。
つまり
b[1]が0xff(-1)はintに符号拡張されて0xffffffffとなり、255を足したいのに-1引くことになるです。
b[1]が0xff(-1)はintに符号拡張されて0xffffffffとなり、0xffとANDをとると、下位8ビットのみ有効と
なって0x000000ffを足すので正しく255を加算できます。
ちゃんとJavaの言語仕様読まないとはまりそうだけど、今回は遊びだからね(汗
このまま進めマッスルw

明日は、Start/Finish/Splitラインのデータファイル(DBOX.DSF)の解析を行うのであります。
Posted at 2009/12/31 00:03:37 | コメント(2) | トラックバック(0) | パフォ箱ツール | 日記
2009年12月29日 イイね!

[連載]Androidでパフォ箱データ解析 その5:機能の定義、分析

ゲ~ロゲロ、そろそろボロが出てきそうなぱららです。

今日もがんばるぞ!
えっと、最初のゴールの定義からズレない様に注意しながら、作る機能をもう少しブレイクダウンするのであります!

●ユースケース
 サーキットで、パフォ箱からSDカードを取り外し、実機(SmartQ5)にSDカードを挿しマッスル!
 で、ベストな時のタイムと、各コーナーのトップスピードやボトムスピードを比較する。
 で、どのコーナーで遅れているかもわかるのだ!

●要求分析
 上記のユースケースを満足させるために最低限必要な機能を考えよう。
  ・パフォ箱が記録したSDカードから目的のファイルを選ぶ機能
  ・選んだファイルには複数のラップが記録されているから、Start/Finish/Splitが記録されている
   ファイルからデータを読み込み、ラップ表を作る機能
  ・そのラップ表から速度とタイムのグラフを表示する機能
  ・そのグラフに、自分のベストタイムのグラフを重ねて表示する機能
 があれば、いいんじゃないかと思うのであります。

 あれば便利な機能としては
  ・指定のラップの保存
  ・マップの表示
  ・コース図の表示
  ・画面のキャプチャー(Blog用)
  ・マップやグラフの拡大/縮小
  ・詳細データの表示
 くらいかな~?

●要件分析
 ひとまずあれば便利な機能はVer2.0に先送りして、Ver1.0ではボトム機能を手早く実装する
 ことを考えて進めるであります。
 まずは抽出した要求から要件/作業に分解しますヨ。
 ・SDカードからファイルリストを作る&ログファイルを指定する。
  ・ファイルリスト一覧作成
  ・フォルダ移動
  ・ログファイルの情報読み取り
  ・ファイルリスト一覧からログファイル指定するGUI
 ・選ばれたログファイルからラップ表を作成&指定
  ・ログファイルの分析作業
  ・Start/Finish/Splitファイルの分析作業
  ・ログファイルの読み込み
  ・Start/Finihs/Splitファイルの読み込み
  ・ログファイルから各周回のタイム切り出し
   ・判断アルゴリズム、判定速度検討作業
  ・切り出したラップ表を表示
 ・ラップ表から指定されたラップをグラフ表示
  ・グラフの縦軸表示(最大速度に合わせる)
  ・グラフの横軸表示(最大タイムに合わせる)
  ・グラフにデータを表示
  ・ファイルから指定してラップデータを重ねて表示
  ・データごとに色を変えること。
 ・システム的な要件
  ・メモリ節約を考慮、全データをオンメモリで読み込むとメモリ不足になるかもしれないから。
  ・グラフを書くとき縦画面なのか横画面なのか考慮して書き込む必要がある。
    →今回は縦画面モード前提とする。

●画面構成
 どういうGUI構成にするか、考えるのであります。
 1)スプラッシュ画面:かっこいい起動画面ほしいね!、、、おぉ機能モジュールが増えたよw
 2)メイン画面。グラフとかマップとか表示する。
   メニューをここに追加して、そこから各機能を呼び出すことにします。
  2-1)ファイルのロード
   SDの中を表示。ファイルを指定するとメインに戻りグラフを表示。過去のデータはクリアされる。
   複数のラップのデータがあるなら2-2)へ移動
  2-2)ラップ表の表示
   表からラップを指定するとグラフ表示する。
   2回目指定すると色を変えてグラフ表示する=メイン画面に戻る。
  2-3)ファイルを指定して、データ追加
   過去のベストタイム表示するときに使う。ファイル指定したらグラフ表示へ
 
 とってもシンプルになったであります。いけるぅ~

●機能モジュールの構成
 要件分析の結果からどんな機能モジュールが必要か、だんだん見えてきたのであります。
 まぁ、詳細書くのも面倒なんで割愛w。
 コツとしては、GUI部分と機能部分のモジュールは分離して設計するであります。
 ここを混ぜるとGUI変更したいとき大変なんで。
 あとAndroidは各画面はActivityという概念で分割されているので、どういうActivityに分割
 するとよさげか考えてみる。そんくらい。
 

さて、いよいよ作ることになるのか!
つづく
Posted at 2009/12/30 10:20:50 | コメント(1) | トラックバック(0) | パフォ箱ツール | 日記
2009年12月28日 イイね!

[連載]Androidでパフォ箱データ解析 その4:開発環境のインストール

予想外に有言実行のぱららです。

まだ何も作ってないけど。。。気にせずGo!

まずは開発環境をインストールしなければならぬぞよ。
全部無料なのでダウンロードしてインストールするだけだぉ。
オレのマシンはWindows7の32bitです。たぶん64bitでも大丈夫な希ガス。
あとWindowsXP SP2は大丈夫であることは確認済みだ。実績あるヨ。

さて、オレがくどくど説明するまでもなく、インストール方法を書いてあるページをみて行おう!
http://blog.cnu.jp/2009/10/28/android-sdk-20-install/

ただ、始める前に大きな流れを知っておかないと、混乱するだろうか以下の順番に
インストールしようぜ!
1)Java開発キット(JDK):JDK 6 Update 17を使うアル。ダウンロード
 ダウンロードして実行するとインストーラが機動するので簡単!
2)Eclipse IDE for Java Developers (92 MB)を使うアル。ダウンロード
3)Android用Plug-in:ADTと呼ばれるものをEclipseからインストールするアル。
 Ecli;seでURLを設定して、ダウンロードするだけ。上のインストール方法とかあちこちに情報あるよ。
4)Android SDK:Ver2.0を使うアルダウンロード

心配しなくてもそんなに難しくない、、、かな。
作ったプログラムはアプリケーションをインストール出来る形で配布するので、エミュレータに
そのアプリをインストールすれば、お試ししていただくことができます。
実機があればそれでもOK。

さて、オレもインストールするぞ(エッ!

不明点あれば、コメントください。

何気につづくw
Posted at 2009/12/30 10:12:24 | コメント(0) | トラックバック(0) | パフォ箱ツール | 日記
2009年12月27日 イイね!

[連載]Androidでパフォ箱データ解析 その3:Androidとは?

ゲ~ロゲロ、いつもがんばるのは最初だけのぱららです。

今日は自治会館大掃除、バドミントン、年賀状書き、真央応援で大忙しだったであります。

時間稼ぎに、そもそもAndroidって何?という人も多いと思うので説明しておきマッスル!

AndroidはGoogleが無償で提供しているOS+アプリケーションフレームワークであります。
もともとはハンドセット(携帯電話)用に開発されたもので、OS部分はLinux、アプリケーション
フレームワークはJavaベースのオリジナルなフレームワークが提供されているのであります。
デフォルトでいくつのアプリケーションが搭載されているケロ~。
WebBrowserやメーラー、PhotoViewerなど。
また、iPhoneのようにアプリケーションマーケットが搭載されており、アプリを簡単に追加
できるのであります。
業界ではその高い汎用性から、ハンドセットだけでなく、それ以外の製品でもこのAndroid
を使おうという流れがあり、そういった自由度がAndroidの魅力かも。

開発環境は、EclipseというOpenSourceのツールを使って開発するであります。
AndroidのSDK(ソフトウェア開発キット)は無料で配布されており、特別なハードウェア
をもっていなくてもエミュレータ上でアプリケーションの開発ができるのであります。
#製品とは違いアプリケーションマーケットなどはのっていない。

今回はそれを使って、開発を行い、動くようになったら実機で動作試験を行っていく予定ゲロ~。

ほんとはiPhoneアプリを書きたかったけどMac持っていない&SDカードスロットがないので
ムリポなのでありますw

とりあえず始めるにはPCとインターネット接続環境があれば、何もお金がかからない。
なんでワンダフルヽ(´ー`)ノ

とか、まぁ書いてみたものの、ググった方がわかりやすい、、、だな、諸君!

http://k-tai.impress.co.jp/cda/article/keyword/38448.html

そんな訳で、つづく。。。たぶん
Posted at 2009/12/27 23:40:44 | コメント(1) | トラックバック(0) | パフォ箱ツール | 日記

プロフィール

「何だ!この長い箱は? http://cvw.jp/b/123549/40565243/
何シテル?   10/12 02:02
「ぱらら」です。 最近、RX-8でサーキット走行がマイブームです。 さて、いつまで続くやら。。。
みんカラ新規会員登録

ユーザー内検索

<< 2009/12 >>

  12345
6789101112
13141516171819
20212223242526
2728293031  

リンク・クリップ

225CUP2017の予定とレギュレーションを決めたぜ! 
カテゴリ:その他(カテゴリ未設定)
2017/08/05 21:39:35
[いも日記]元気な芽がでてきてほしいな 
カテゴリ:その他(カテゴリ未設定)
2016/03/21 20:45:40
3連休中日なのにー!! 
カテゴリ:その他(カテゴリ未設定)
2014/03/22 23:31:54

ファン

27 人のファンがいます

愛車一覧

マツダ RX-8 マツダ RX-8
パワーアップのためにTypeSに箱替え ・RX-8 TypeS 6MT ・Revolu ...
日産 キューブキュービック 日産 キューブキュービック
主に家内が使ってます。 家族で出かけるときや、ちょっと近所に買い物行くときに運転してます ...
ホンダ アコード ホンダ アコード
結婚して子どもができたのでATに買い換えた。 家内がシルビアの5MTは運転出来ないという ...
日産 シルビア 日産 シルビア
大ヒットしたS13のマイナーチェンジモデル SR20DET搭載のK"s 5MT パープリ ...
ヘルプ利用規約サイトマップ
©2017 Carview Corporation All Rights Reserved.