記事一覧

VSD for GPS に仮想光電管実装

ファイル 153-1.jpg

 先日公開した VSD for GPS,ありがたいことに既に何人かの人に使ってもらってるようだ.メーターとか走行軌跡表示とかは割りと反応がよさげだが,ラップタイム計測機能はいまいち不人気w たぶん計測方法がしょぼくて (全ラップでスタートラインを通過した瞬間を探し出してマークしなければならない),使い勝手が悪いんだろうな.

 というわけで,仮想光電管機能を実装した.これは,スタートラインの座標だけ与えてやれば,あとは GPS の位置情報からそこを通過した時刻を割り出して自動的に全ラップタイムを計測できる.まぁ GPS データロガーではメジャーな機能なんだけど,実装が大変なので先送りしていた.

 悩んだのは,AviUtl の GUI でどうスタートラインを座標指定するか.LAP+ の光電管ファイルをリードするのも考えたけど,LAP+ で作ってセーブして,また AviUtl でリードとかあまりいけてない.
 結局映像に一発だけマークを打つことでスタートライン位置を指定するようにした.これだとスタートラインの位置を映像で確認しながら仮想光電管を配置できるし.割と無理のない GUI にできたんじゃないかな.

 画像は,今回追加されたスタートラインの表示.微妙すぎて誰もきづかねぇよwww

車載動画スーパーインポーズフィルタを GPS に対応

ファイル 151-1.jpg

車載動画スーパーインポーズフィルタを GPS に対応中.

 今日は GPS ログ (NMEA-0183) を読み込んで車載動画と合成するところまで作りこんだ.といってもほとんどの部分は PSP GPS のときに実装しているので,新たに作るべきはログフォーマットの変更・スピードメーター表示・加速度計算くらい.

 で出かけついでにテストしてみたら以下の問題が見つかった.
・スピードメーターがプルプルするw
 生 GPS データはそんなに振動してないので,どうやら 5→30Hz にアップサンプリングするのに使用している Ferguson / Coons 曲線のアルゴリズムと GPS データの微妙な誤差の問題らしい.
 つうわけで当時苦労して仕込んだ当アルゴリズムは削除して単純な等比分割にしてみたけど,(GPS ログが 1Hz のデータでも) 大して差がなかったので,当初からいらんかったやんこれ.

・横 G がおかしい
 理論的には GPS のデータだけで前後左右加速度が求まるはずなので実装してみたけど,横 G のデータがおかしい.LAP+ では結構まともそうな横 G グラフが出せるので,算出方法を見直さないとな.
追記:と思ったら,360度のラップアラウンドが考慮もれしてただけだったw あと平滑化したら結構まともになった.


以下は残項目リスト
・最速ラップとのタイム差のリアルタイム表示
・仮想光電管の位置情報からラップタイムを自動計測

----
完成しました.欲しい人はここからどうぞ→VSD for GPS

簡易ラップタイム計測機能だけ使用

ファイル 133-1.jpg

データロガーネタなんだけど,もはや PSP とは関係ないな…

めでたくカートでのヘルメットカメラ動画撮影に成功したので,これにラップタイムを合成表示させてみたくなった.ラップタイムのスーパーインポーズ機能自体はこのとき仕込んではあるのだが,あくまでも副次的な機能だったので,データロガーのログファイルを読み込まないとラップタイム計測機能は使えないようになっていた.

なので,さくっとメーター表示せずにラップタイム計測機能だけ使えるように改造.

ほしいひとはここからどうぞー.

現実とゲームの区別があいまいに…なるわけねーだろ

 グランツーリスモ4 が発表されたとき,「日産のトップテストドライバーを例に挙げ、同一車種で実車と「GT4」で走行した場合、5秒以内(1%程度)のラップ差が実現できている」と書かれた記事を見てから,GT4 の再現度ってそんなに高いの? と常々疑問に思っていた.大体,タイムが近い=再現性が高い つうわけでもないだろうに.
 これを確かめる一番手っ取り早い方法は,自分で同じコース・同じ車で走ってみて,挙動の違いを確かめればいいのだが,GT4 に収録されているコースを走る機会がなかなかなかった.だがついに鈴鹿サーキット西コースを破格で走れる機会があったので,かねてからの疑問を晴らすべく突撃!!

 で,その結果↓ (ニコ動アカウントがない人はこちら)

まずタイムは…GT4 が 1'40.900,リアルが 1'47.703.リアルが 7秒落ちwww (ちなみにゲーム中の車は,フルノーマル・N1 タイヤ・アシスト類全 OFF という,考えうる最低の設定)
 もちろんリアルの腕がしょぼいのが一番の原因だとは思うが (130R の突入速度が 30km/h も違うw),挙動に関しての大きな違いは,ゲーム中の車が安定しすぎてるんじゃないかな.
・フルブレーキでハンドル切ってもなんともない→ブレーキを遅らせられる
・スプーン出口とかでアクセルがばっと開けてもなんともない→立ち上がり速度が稼げる
現実でそんなことしたら (少なくとも俺の腕では) スピン死確定だよ.

 ちなみに,一緒に走った S1 STD・ライトチューン・NEOVA・鈴鹿経験あり のそこそこ熟練者が 1'40 で走ってたことからも,GT4 の 1'40 は眉唾ものと言えよう.

 まぁ走行会前に事前に GT4 で練習したけど,コース覚えるのとかライン取りとか,ブレーキングポイントとか,事前に予習するのには役立ったかな.

簡易ラップタイム計測機能追加


VSD for サーキットの友」に,簡易ラップタイム計測機能をつけてみた.

原理としては,動画でスタートラインを通過した瞬間に手動で目印をつけることで,目印~目印間の時間計測をして表示すると.なので原理的に動画の fps を超える精度の時間計測はできない (例えば動画が 30fps ならば,タイム計測の精度は 1/30 = 0.033秒) が,ラップタイマー持ってない人にとってはこれだけでも十分うれしいのではないかと.

ラップタイム表示のコード自体は,もともとの自作データロガー用 VSD が持っているので,問題は AviUtl の GUI でどうやってスタートラインの位置を入力するか.幸い,「マーク」という機能があって,任意のフレームにマークをつけることができるので,それでスタートライン通過フレームの指定をすることにした.

てなわけで,チャッチャと実装完了.

車載動画スーパーインポーズフィルタをサーキットの友に対応

ファイル 109-1.pngファイル 109-2.jpg

自分はデータロガー環境を独自に構築しているが,これを他の人に広めようとしても,一番のネックになるのは車両からの情報を収集する方法.自分では H8 マイコンを用いているが,少なくともハンダ付けが必要なので他の人に展開するのはほぼ不可能だろう.

しかし世の中にはうまいことを考える人もいるようで,簡単なケーブルを自作するだけで,ノーパソが車両からの情報を収集できる機械になってしまうというものがあった↓
サーキットの友
原理としては,ライン (マイク) 入力に車両からの信号を突っ込んで,サウンドカードを AD 変換器代わりに使用して,CPU パワーでその波形をリアルタイムに解析すると.ステレオ入力だと最大 2ch (スピード・タコ) が解析できるから,簡易的なデータロガーになる.そういや同じような考えで,ライン入力をオシロスコープ代わりに使用するソフトもあったっけ.

もっと早くこれを知っていたら,自作データロガーとかわざわざ作らなかったかもw

で,サーキットの友 で車両のログを取ることはできるが,車載動画と合成する機能まではないので,自分の作った車載動画スーパーインポーズフィルタをサーキットの友対応にしてみた.

欲しい人はこちら

これは酷いwww

ファイル 95-1.jpg

 美浜サーキットでの走行会があったので,再び GPS ログを撮ってみたのだが…

 これはヒドイwww

メインストレートとバックストレートが完全に重なってるし.
各コーナーも,ライン取り見るとかそんなレベルじゃないな.

やっぱ GPS のデータだけでは精度に問題があるか.

データロガー + GPS 実戦投入


鈴鹿ツインサーキットでの走行会があったので,データロガー + GPS を実戦投入.GPS の捕捉も 1分ほどで終わり,GPS ウォームスタートの設定は有効なようだ.

で,車載映像と重ねてみたのが上の動画.やはり GPS の精度が不足気味で,走行ラインがぶれているようにみえる.実際はこんなにいろんなラインは走っていないのだが.やはり走行ラインの研究には使えないな.あと,(早送り動画だとわかりにくいけど) メータの描画と GPS の位置が 1秒ほどずれている模様.これは画像合成フィルタに時間あわせ設定を追加せねばなるまい.

かけた時間の割には,あまりうれしくないなこの機能_| ̄|○

シフトアップインジケータ実装

久々の PSP データロガーネタ.

今のデータロガーには,LED によるデジタルメータとシフトアップインジケータ機能もついているんだけど,よく考えたら PSP にスピードも表示させてるし,もしかして LED ディスプレイいらねぇんじゃねえの? と思い始めた.

でも PSP のほうにシフトアップインジケータは実装されていなかった (構想はしていたけどズルズルと先送りに…) ので,これを期に実装してみた.
で,デモ動作を撮ってみたのが下の動画.(デモ動作は 0:46 あたりから.別の目的で作った動画なので,前半とかスル~でヨロ)

まあ見た目的には OK なんだけど,昼間でもシフトインジケータが点灯しているのに気づくほど輝度があるかどうか (真剣走りしてるときは PSP 注視する余裕ないので) と,データロガー本体からシリアル通信でデータを受け取ってる関係上タイムラグが発生するので,実際の Eg 回転数と表示とのズレがちょっと心配だな.

でも,もし LED を撤去する事ができたら,すっきりできていいかも.



なぁんて記事を書いてたら,今度のクラウンはメーターパネルがフルLCD!! もうちょっと早く出ると思ってたんだけどねぇ.しかしプロがデザインした LCD メータはカコイイヨ.俺のデザインセンスゼロメーターとはえらい違いだwww

PSP GPSウォームスタート成功

コールドスタートになっていると思われる PSP データロガーの GPS,10分たっても捕捉開始しねぇ,という事で,ウォームスタートを実装.

コード自体は,いつもお世話になってる Deniska 氏のとこの PSP-290 テストプログラムを見ると,sceUsbGpsSetInitDataLocation( int ) というのが使われているので,これだろうという事で LuaPlayer に実装.問題は引数で,0 〜 2 の値を指定するらしい.おそらく,ウォームスタートのためのデータ保存スロットが 3箇所分あり,そのどれかを GPS ユニットにロードするのだろう.MAPLUS がどのスロット使ってるかは分からないが,とりあえず 0 を指定しておいた.

で,MAPLUS で位置を測位するまでほっとく→電源 OFF→データロガープログラム起動! で,3分後くらいに見たら,おお! 捕捉開始してるではないかヽ(´ー`)ノ どうやらsceUsbGpsSetInitDataLocation( 0 ) は正解だったようだ.

車載動画への自車位置表示も実装したことだし,これでやっと実用になるな.

車載動画スーパーインポーズフィルタをアップデート


車載動画スーパーインポーズフィルタを大幅アップデートしてみた.

■コースマップ
 ついにコース上の自車位置表示を実装.前回のフリー走行でコース上での GPS ログ取りに失敗したので,上の動画では鈴鹿スカイラインを走ったときのログを無理やり貼り付けてみたが,結構いい感じ.一秒毎の位置計測データを 30ポイントに補完する処理もうまくいっているようだ.

■最速ラップとのタイム差表示
 何か走行分析に有用な情報を表示させようとしてみたのがこれ.データロガーには走行距離も記録されているので,各周の同一走行距離における経過時間がわかるので,最速ラップとのタイム差がわかる.
 実装してみると,意外とまとも.データは距離メーターが全てなので,タイヤが空転したり最速ラップと大幅に違うラインを大回りしたとかなると怪しくなるが,動画を見ながら今のライン取りはうまくいったんだなとか,けっこう新発見があった.

■640x480 の見栄えを改善
 今まで 320x240 でのエンコードを前提としたメーター描画だったので,フォントサイズが小さいとか,ラインが細すぎとか,見栄えがよくなかったが,640x480 でのエンコードを前提とした見栄えの改善をしてみた.
 後,メーターの配色や,ラップタイム表示を縁取り文字にして背景の白をやめてみた.


んー,満足ヽ(´ー`)ノ
これで画像合成フィルタでやりたい事はほぼ終わったかな.

GPS ログ取り失敗

 車載動画に走行軌跡を合成する計画の一環で,16日に,GPS ログつきのデータロガーのログを取るべく,鈴鹿ツインサーキットのフリー走行に行ってきた.GPS の捕捉にはある程度時間がかかるので,走行開始 10分前に PSP を立ち上げたのだが… 10分たっても捕捉開始されなかった(゜ーÅ)ほろり というわけでこの日の一番の目的であった GPS ログ取りは失敗_| ̄|○
 どうも GPS がコールドスタートになっているようだ.ウォームスタートの方法を探らないと,GPS 動くには動くのだが実用にはならんなぁ…

まあフリー走行自体はとくに言うこともなく.

 みんカラで車載動画を上げるときは,「らくちんFLVメーカー」というサイトを利用していたのだが,最近「デコ枠」なる機能が付いてますます使えなくなった.そもそもらくちんFLVメーカーを使っていたのは,ブラウザの大きさに合わせて動画も大きくできたからなのだが,「デコ枠」になってから 320x240 固定.つかえねー.しかも,記事にビデオを埋め込む形式だと,勝手に動画データのロードを始めてしまうので,複数動画を貼るとメチャメチャ重くなる.

なので,ついに YouTube に移行してみた.

これで完璧! と思ったら,スピード表示と YouTube のロゴが被ってるよ(゜ーÅ)ほろり まぁ誰もスピードとか気にしてないだろうからいいや.

データロガー+GPS (PSP部分だけ)完成

ファイル img_26537677_0.png

データロガーのログ取りプログラム ( LuaPlayer のスクリプト ) に,GPS ログ取り機能を追加してみた.ってこれ前もやったよなぁ.データロガー + GPS 計画を一旦中止したので,そんときにコードを消しちゃったんだっけ(゜ーÅ)ほろり

まぁ気を取り直して再コーディング.GPS のデータに関しては,PSP で表示するものはあまりなくログに記録するだけなので,結構楽.とっとと完成させて,給油がてらログを取ってみた.

が,GPS と関係ない問題が一つ.Lua の os_date で日付を取得すると 1970/1/1 になってしまう.os_date の部分のソースコードを見ると,localtime() で日付を取得していたので,sceRtcGetCurrentClockLocalTime() に書き換えたら,正常に取得できた.でもなんで? localtime() も追っていけばたぶん sceRtcGetCurrentClockLocalTime() に行き着くと思うのだが…???

これで,後は車載動画と合成するプログラムを残すのみとなったが,めんどくさそうw

LuaPlayer+シリアル通信復活!!

LuaPlayer@3.xx カーネル のシリアル通信が復活!

3.xx カーネルではシリアル通信が出来ないのかとあきらめていたところ,新型 PSP ですでにシリアル通信が動いているとの情報を頂き,それを組み込んでみた.…だが,やっぱり動かない.んー残念!! こうなりゃ意地だと,いろいろ解析してみると奇妙な事が分かった.

シリアル通信のルーチンでは,「シリアルデータを受信してバッファに書き込む割り込みルーチン」と,「バッファから 1バイト読み出すスレッド」から成り立っており,割り込みルーチンと読み出しスレッドは変数を介して通信するのだが,割り込みルーチンが書き込んだ値を読み出しスレッドで読めないという事に気づいた (無論変数は volatile 指定している).さらに解析を進めたところ,大きい配列を介すると,変数を介した通信が成功する.

何でだ?? と思って,C コードをアセンブラに落としてみた.

上手くいかないほうのコード:

lw $3,%gp_rel(uRxBufWp)($28)


これは,uRxBufWp という変数の値を,レジスタ $3 にロードしているところだが,怪しいのが %gp_rel(...)($28) で,$28 からの相対アドレスでロードする事によって,命令数を少なくしている.$28 はおそらくスレッド開始時に初期化されて,その後変更されないのだろう.

一方上手くいくほうのコード:

lui   $2,%hi(cRxBufWp)     ; $2 = (cRxBufWp のアドレス値の上位)
addiu $2,$2,%lo(cRxBufWp) ; $2 += (cRxBufWp のアドレス値の下位)
lw $4,0($2) ; $4 = [$2], すなわち $4 には変数 cRxBufWp の値が入る


このように,$28 の相対アドレスではなく,$2 に直接 cRxBufWp のアドレス値を代入してから,$4 に cRxBufWp の値をロードしている.

以上の事から推測すると,スレッドごとに $28 の値が異ることがあり,C 言語上では同一の変数を指定していても,異なるスレッド同士では実際のアドレスは異なる事がありうる?

でもこんな仕様ありえねー.コレってコンパイラか BIOS か,なんかのバグだよなぁ.

-----

で,シリアル通信のほうは,けっきょく元々のソースコードの,通信に使用していた変数をちょこっと変更するだけで,無事動いたヽ(´ー`)ノ

というわけで,データロガー + GPS 計画復活!!

LuaPlayer+シリアル割り込みコネ━━━━(゜A゜)━━━━ッ!!

LuaPlayer + USBGPS,点を曲線で結ぶアルゴリズムの習得,と,走行動画に走行軌跡を合成する計画は着々と進行中.今日は,PSP の画面表示+ログ プログラムに GPS ログも記録する機能を追加して,データロガーと接続してテストしてみた.

…シリアル通信ができない_| ̄|○

3.xx カーネルモードの LuaPlayer が悪さしてるのか? と思って 1.50 カーネルの LuaPlayer で動かしてみたら,(当然 GPS は使えないものの) シリアル通信は出来た.

3.xx カーネルの LuaPlayer,シリアル割り込みが出来てないじゃん_| ̄|○
シリアル割り込みのソースコードは,どっかから持ってきたやつなので,自分ではどうしようもない.更にシリアル割り込みとかやってる人なんか他にいなさそうなので,3.xx で動く記述とかどこ探してもないだろうなぁ…

これにて,データロガーに GPS ログも記録する計画は中止(゜ーÅ)ほろり

Ferguson / Coons曲線

ファイル img_25778393_0.png

データロガー+GPS で車の座標を得る見通しが立ったので,これを元に走行軌跡を車載動画に表示してみようプロジェクト発動.ただし座標データが 1秒毎なので走行ラインの研究に使えるほど精度は良くないが,レースゲームみたいにコース上における自車位置表示みたいなものはできるので面白そう.

それでも,1秒毎の位置更新だとカクカクとした表示になってしまうので,各座標を滑らかな曲線で結ぶ事で座標を補完する事に.でその方法をいろいろ検索してたどり着いたのがここ

微分とか,行列計算とかもう忘れてしまいましたけど?www いきなりつまづきそうwww

とにかくこれを読み解くと,座標だけではなく,各点のベクトル (速度と向き) も必要と.これに関しては,GPSログに速度と向きも記録されているので,問題なし.

というわけで,自分の理解があってるかどうか確かめるためにチャッチャとExcelで計算して曲線を描いてみた.始点と終点の位置とベクトルを与えるだけで,2点を補完する多数の中間点を計算できた.うん,第一関門突破.

LuaPlayer+GPSキタ━━━━(゜∀゜)━━━━ッ!!

ファイル 21-1.jpg

ついに LuaPlayer で USBGPS キタ━━━━(゜∀゜)━━━━ッ!!

なににハマってたかって,
・カーネルモードの EBOOT.PBP は BIOS1.50 以下でないと動かない.(3.30OE-B とかでは GAME150/ の下に置かないと動かない)
・usbacc.prx / usbgps.prx は BIOS3.xx でないと動かない (GAME150/ の下に置く EBOOT.PBP ではロードできない)

らしいという事が試行錯誤の末見えてきたんだけど,元々のオリジナルの LuaPlayer の構成が,

GAME150/ の下:
EBOOT.PBP (カーネル)
+-loadlib.prx (カーネル)
+-luaplayer.prx (ユーザ)


になってて,単に usbacc.prx/usbgps.prx をロードするように改造しても,↓

GAME150/ の下:
EBOOT.PBP (カーネル)
+-loadlib.prx (カーネル)
+-luaplayer.prx (ユーザ)
 +-usbacc.prx ←sceKernelLoadModule() 失敗
 +-usbgps.prx ←sceKernelLoadModule() 失敗


BIOS1.50 では usbacc.prx/usbgps.prx のロードで死亡,

EBOOT を BIOS3.xx で起動しようとしても↓

GAME/ の下:
EBOOT.PBP (カーネル) ←XMB から起動できない
+-loadlib.prx (カーネル)
+-luaplayer.prx (ユーザ)
 +-usbacc.prx
 +-usbgps.prx


という板ばさみになって,ぜんぜん前に進まなかったわけ.

そこで LuaPlayer を以下のように大改造してみた.↓

GAME/ の下:
EBOOT.PBP (ユーザ)
+-luakernel.prx (カーネル) ←元々の EBOOT の機能を prx 化したもの
+-loadlib.prx (カーネル) ←現状,sceKernelLoadModule() 失敗
+-luaplayer.prx (ユーザ)
+-usbacc.prx
+-usbgps.prx


これがビンゴ!! とりあえず USB GPS の機能は一通り使えて,無事 LuaPlayer で現在位置を取得する事が出来た.ヽ(´ー`)ノ (写真のモザイクかかってるところが,現在座標ね)

現状,loadlib.prx がロードできない (3.xx ではカーネルモードの prx の制限が厳しくなったので,luakernel.prx もロードできるようになるまで苦労したよ(゜ーÅ)ほろり),USB DISK モードが使用できない等いろいろ制限もあるが,ま,目的の「データロガーに GPS で取得した位地データも記録する」には支障がなさそうなので,よしとするか.

GPSが動かないよ〜♪

何回やっても何回やっても GPSが動かないよ〜
あの prx 何回やっても読み込めない♪ (字余り)


歌いたくなるくらい,依然 LuaPlayer + USBGPS が動かない.どうやっても sceKernelLoadModule( "usbacc.prx", … ) が死ぬ… 前回は,このコードを EBOOT.PBP でやれば動くと思っていたが勘違いだったようだ.

PSP-290 のテストコードはコンパイル→実行がちゃんと動くので,差分を追っていったら,テストコードはカーネル 3.02 モード(???) でコンパイルしている模様.要するにカーネル 1.50 モード (make kxploit) じゃないほうの make でコンパイルしてある.って,これってカーネル 1.0 モードじゃないの? LuaPlayer を 3.02 モードでコンパイルってどうやるんだろ…?

でも考えてみりゃ,USB GPS はカーネル 1.5 には無かった機能だから,1.5 モードでコンパイルした sceKernelLoadModule( "usbacc.prx", … ) が死ぬのはなんとなく説得力があるような… (そもそも usbacc.prx/usbgps.prx が 3.x から引っこ抜いてきたやつだし)

カーネルモード/ユーザーモードとかも絡んでるみたいだし,

もうよくわかんねぇよヽ(`Д´)/ウワアアン

LuaPlayer + GPS

長い間ほうっておいた,LuaPlayer で GPS を駆動する,を再開.けっきょく GPS の位置情報は最短で 1秒ごとにしか更新されないので,データロガーの情報としては使い物にならないが,まぁ車載ビデオに現在位置をプロットしてみるのも面白いかも,と思ってね.

前回までに PSP-GPS テストコードを参考に,UsbGps の prx ロードとか,初期化コードとかの組み込みは終わっているのだが,どうやら usbgps の prx の sceKernelLoadModule() で死んでいる模様.…何で? (゜ーÅ)ほろり

ちなみに,LuaPlayer は,ブートプログラム ( EBOOT.PBP ) と LuaPlayer の本体 .prx とに分かれているので,sceKernelLoadModule() を EBOOT.PBP のほうに移動したら,sceKernelLoadModule() 自体は成功している模様.ただし,その他の初期化コード (本体 prx の方にある) が失敗する.

んー,初期化コードも EBOOT の方に移動せにゃならんのか? でもそうしてしまうと,GPS 使う / 使わないにかかわらず,LuaPlayer 起動するだけで GPS が動き出してしまう.それは気持ち悪い.理想は lua のスクリプトで GPS 初期化ルーチンを呼んで初めて GPS が動き出す,てな動きだが.

んー,いろいろややこしいね.

データロガーのGセンサー表示をちょこっと変更

ファイル img_24363833_0.jpg

 自作データロガーの,メーター合成ソフトに Gセンサーの軌跡を表示する機能をつけてみた.緑の円が現在の G で,濃い緑の線が過去 3秒間の G の軌跡.これは左コーナを曲がってる途中の写真だが,こうして軌跡を見ると,スムーズなブレーキ残しが出来ていないのかなぁ? という気が.まあ所詮俺のようなシロウトがこんなデータ見たところで何も分析できないのだがw

 ちなみにちょっと検索してみると,自作データロガーとほとんどおんなじ事してる製品が Kaaz から出てて笑った(笑) これはカメラで撮った映像とメーター情報をリアルタイムに合成 (スーパーインポーズ) して録画する製品みたいだけど,これだと,カメラと録画機器が分離していないといけない (カメラ出力→このモニターで合成→録画という流れのため) ので,全体で見てもスゲー高いシステムになりそう.モニター本体だけでもミニマムセットで \73,298!!

 その点,自作データロガーは,リアルタイムに合成は出来ないものの,家に帰ってからカメラの映像とメーター情報を PC で合成するので,一般的なカメラで実現できるので安上がり.自作データロガー本体も部品代だけでいけば \1万以内はず.\3万くらいで売ったら儲かるだろうか?(笑)


上の写真の動いている映像はこちら

磁気センサー のラップタイマー実戦投入

ファイル 28-1.jpg

このクソ暑い中,美浜サーキットでの走行会があったので,磁気センサー + 自作ラップタイマーの実戦投入してみた.

家での実験では,磁石が 5cm 位でしか反応しなかったので,センサー設置を
1. 車内に設置
2. 車外に設置し地面との距離をつめる

の 2通りで実施.
まずは車内のアルミシャーシに直にテープ止めしてみる.無反応(笑) んー,他のエリ乗りの話を聞くと,車内設置でも問題ないと言っていたので,コースの磁石が超強力なのかと期待したのだが.

気を取り直して,車外設置に変更.車体下のボルトに針金を巻きつけ,その針金の先端にセンサーを固定するようにして,地面とのクリアランスを 7cm ほどにしてみた.この距離でも家での実験結果から言えば,反応しない可能性大なのだが…

だが結果はビンゴ! 1ラップも取りこぼすことなく,コース上の磁石を検出する事が出来た.

これでもうコソコソ赤外線投光機をコースに設置しなくてすむヽ(´ー`)ノ

というわけで,磁気センサーユニットを自作

ファイル img_22409394_0.jpg

上: LAP SHOT の磁気センサーユニット (\6,000 くらい)
下: ホールIC で自作した磁気センサー (材料費 \400 くらい)

機能的にはほぼ同じ.車関係の電装品はぼったくってるのがよくわかる例だな(笑) (自作データロガーも材料費だけなら \1万 くらいのはず.同等の機能の市販品を買うと 5万は下らないよなぁ)

…がっ!
調達したホール IC がちょっとマズかったのか,LAP SHOT のやつより感度が低い.磁石から 1cm くらいでないと反応しない感じ.これじゃちょっと使い物にならんなぁ.

んー,ざんねん.

ホールIC げっとおぉぉぉ!!!

ファイル img_22365268_0.jpg

ロドスタでジムカを本格的にされている,同僚の「ひ」さん.車にハマッていることは知っていたのだが,ひょんな事から俺との共通点を知る事になる.

ひ「近々,シリコンハウスに寄りたいと思ってるんですよねぇ」
俺 (´-`).。oO(いきなり「シリコンハウス」とな!? こいつ,できる…!!)
  「なら,ついでにホール素子,買ってきてもらえませんか? DN68xx ってやつ」
ひ「ああ,それなら家にあまってますよ」

ちょwww 家に在庫www

俺「うおお,一個譲ってください! ところでホール素子,何に使ってるんですか( ̄ー ̄)にやり」
ひ「シフトレバーの位置を検出してシフトポジションインジケータ作ってるんですよ」

ちょwww おまいは俺かwww


車の電子工作キタ━━━━(゜∀゜)━━━━ッ!!

ウチの職場,異様に MT 率高いし,いい職場だわ(笑)

ポート死亡_| ̄|○

ぬおおお!

+5V にプルアップしたとおもってたら,+12Vにプルアップしちまってたぜ!
おかげで H8 マイコンは異常加熱,でも幸い冷ましたら CPU としては動き出した.
が,ポートが少なくとも 1つ無反応に.あーポート一個死亡_| ̄|○

リベンジ・磁気センサー(2)

ファイル img_21919568_0.png

知人が日本橋に行くというので,DN6847 を買ってきてもらう事に.しかし,シリコンハウスでは売り切れ…(;´д⊂)通販で買おうにも,\60 の物買うのに送料が \890!! もうね,アホかと,バカかと.

というわけで,LAP SHOT の磁気センサーをもう一度引っ張り出してきた.前回試していなかった,SENS ピンのプルアップ/ダウンを試してみる事に.今回は,磁気センサーのケースをばらして,センサーから出ているピンジャック端子の機能割り当てをある程度推定してみた.

でいろいろやっているうちに,SENS ピンと思しき端子を VCC にプルアップすると,無事動く事を確認!!ヽ(´ー`)ノ これでセンサーユニットが無駄にならなくてすんだ.実験の結果から割り出した,ピンジャックの端子機能は上の図通り.

SENS 端子は定常状態で Hi-Z,磁気を検知すると GND に落ちる.

ただ,気になる事が1点.磁石を 3cm くらいに近づけないと,センサーが反応しない.こんな感度で,コース上に埋め込まれた磁石を感知できるのか? (無理っぽい…)

もしかしたら,VCC は +5V じゃなくて +12V なのだろうか?
でも,もしそうじゃなくて,12V突っ込んだとたん燃えたらやだなぁ…

−−−−
追記: +12V でも感知距離は変わらんかった.んー,本物の LAP SHOT だと何 cm くらいで感知できるんだろ?

リベンジ・磁気センサー

ファイル img_21748885_0.jpg

磁気センサー回路の続き.
LAP SHOT の磁気センサーユニットだけ買って自作データロガーにつないでみたが,まったく磁気に反応しない,ってのが今までのあらすじ.

動かない理由の可能性としては,
・いろいろ接続を変えているうちに壊した?
・VCC は実は +12V ?
・SENS ピンをプルアップ/ダウンする必要がある?
・そもそも予想していたピンの機能 (VCC, GND, SENS) がぜんぜん違う?

いずれにせよ,これ以上の遂行は困難なので,諦めて,公開されているセンサー回路図の部品を集めて作る事にした.それでホール素子 (磁気センサー IC ね) を調べていたら,こんなものがあるじゃないですか…
これ,アンプも温度補正回路も入っていて,出力はデジタル化されているので,作ろうと思っていた電子回路がこの IC 一個ですんでしまう… すげぇぜ Panasonic! しかも \115 円なので失敗しても痛くないや.後の問題は,コース上に埋め込まれた磁石を検出できるほど感度があるかどうかだが…


これとは別に,PSP の LuaPlayer に USB GPS を制御する関数を追加するほうも進行中.
いちお実装してみたけど,GPS 初期化で PSP が死ぬ(笑) ま,ぼちぼちデバッグしまっさ〜

予想通りのオチがつきました

 PSP-GPS がデータロガーに使えるかどうか調べてみる.データロガーとして使うには,最低でも 10Hz の更新頻度がないとダメだろう.で LuaPlayer を改造する前に,「そういや PSP-290 のテストプログラムを誰かが公開してたよなぁ」というのを思い出して,さくっとダウンロード & 実行.

 念のため,GPS テストプログラムの GPS データリード間隔を 100ms に改造してみたが,データの更新頻度は 1秒間隔でした.要するに 10回は同じ位置情報しか読み出せない.あーーーーー,やっぱダメか_| ̄|○

とりあえず GPS でラップタイム測る計画はおじゃんだなぁ.いや,欠けた位置情報を車速パルスや Gセンサーで補間できるか? でも精度が…

あるじゃん! Σ( ̄□ ̄;

ファイル img_21401771_0.jpg

すでに前回の磁気センサーは,自分の中ではなかった事になっている模様(;´д⊂)
ああ,そうですとも,はいはい失敗ですよ ┐('~`;)┌ ヤレヤレ

で,最近のデータロガーは GPS つきが当たり前になっているみたい.GPS つきだと,走行ラインが描けるだけかと思ってたけど,ここのヤツとかは,スタートラインの位置情報を設定すれば,GPS でそこを通過した事を認識して,タイム計測までできるみたい.へー,その使い方は目からウロコだ.

そうなってくると,my 自作データロガーにも GPS をつけたいなぁ… でも何買ってきてどうやって付けたらいいのか見当もつかんよ.( ̄-  ̄ ) ンー

て,あるじゃんw GPS.

ま,GPS データ更新が 1秒間隔な気が激しくするので,やる前からダメダメな気はするがw
誰かが LuaPlayer から PSP-GPS を制御してたような気がするので,とりあえずダメもとでやってみますか.と,思ったら,LuaPlayer に prx をロードする命令とかは無いのね.直に LuaPlayer を改造せにゃならんのか…

負け犬電子工作

ファイル img_19800253_1.jpg

赤外線方式でラップタイムが計測できる我が自作データロガー.しかし計測には赤外線送信機をコース上に設置しなければならず,もしかしたらサーキットによっては断られるかもしれない.

なので,多くのサーキットで使える磁気センサー式のラップタイマー (正確にはそのセンサー回路) を自作しようと,いろいろググってみた結果,回路図を見つけたのは以下の 2つ.

http://kaele.com/~kashima/car/lapmini/
http://www.asahi-net.or.jp/~TW8I-YSD/CAR/MAKE/sens.htm

ってこれアナログ回路じゃん… すんません,アナログ回路は理解不能です_| ̄|○ しかもアナログ回路の設計だと my オシロスコープがないときついだろうなぁとか,センサ回路は車外に出すためコンパクトに作る必要があるとか,もろもろの大人の事情を加味して,

LAP SHOT の磁気センサユニットだけ買っちまった_| ̄|○

電子工作マニアのはしくれとしても,あるまじき反則技.

PSPデータロガー実戦投入


鈴鹿ツインサーキットでの走行会があったので,PSP データロガーを実戦投入してみた.ノート PC が持ち物から無くなったので,荷物量が減る減るw あと,ラップタイムが非常に見やすくなってかなりイイ.赤外線ラップタイマも調子がよく,今回は 1ラップも取りこぼすことが無かった.
それと,タイム計測の誤差も調べることができた.今回はコース公認の計測器も使用したので,それとの時間差を調べてみると,最大 1/100秒ほどの誤差.まぁ,パーソナルユースだからこんなもんでも十分っしょ.

だが実際に使ってみて問題点も分かった.ひとつは,カーステで音を鳴らすためのピンジャックがデータロガー本体に挿せなかったw どういうことかというと,1ラップ計測するたび,またはファステストラップが出るたびに PSP で音を鳴らして,タイム更新したかどうかを音だけで分かるようにしていたのだが,PSP シリアル通信ケーブルはリモコン端子に挿すので,当然 PSP からは音が出ない.そこで,データロガー側まで音声信号を引っ張って,データロガーにカーステのピンジャックを挿そうと思っていたのだが挿すスペースが無かったw こりゃ,データロガーのケース (\100均のタッパーウェア(笑)) を切り刻むしかないな.

もうひとつはもっと深刻で,上の動画を見てもらえば分かるように,映像とメーター描画の同期が微妙にズレている.これは,PSP がデータロガーからのデータを取りこぼしている事を示している.んー,バッファサイズは十分に取ったはずなのに… これは解析の必要ありだな.

ページ移動