January 01, 2009

謹賀新年 2009

[Timely]

明けましておめでとうございます。今年もよろしくお願いします。

2009.png
ホルスタイン模様と2,0,0,9の組み絵。使ったフォントは攻殻(金文体)とMother(どせいさん)。

過去の年賀絵柄の探索は昨年の記事『謹賀新年 2008』から辿れます。

ところで年明け早々ですが、GPS的大イベントがあります。日本時間で8時59分60秒が挿入されますので、世界標準時をGPS時刻に変換するgpstime.rbは更新しておきました(笑)。

00:48 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク | コメント (2) | トラックバック
このエントリーのトラックバックURL: https://fenrir.naruoka.org/mt/mt-tb.cgi/681

January 05, 2009

RedMineの導入等

正月ということで集中的にやりためたことをやってみました。忘れっぽいので何をしたか、備忘録として箇条書きを残しておこうと思います。

(1) Ruby(Rails)で動くプロジェクト管理ツール Redmineを導入してみました。
有名な管理ツールであるTracを某プロジェクトで運用しているのですが、Tracは僕にとって馴染みのないPythonで実装されている為、改造ポイントがいまいち掴めませんでした。また、個人的なプロジェクトにはwebベースの管理ツールを導入していなかったこともあり、良い機会だと思ってRubyで動くプロジェクト管理ツール Redmineを入れてみることにしました。
導入には特に障害はなくスムーズに進みました。現在apache2 + Phusion Passenger(mod_rails)で運用しています。 また、Wikiやチケット、リポジトリ管理などの基本的な機能の他、複数プロジェクトの運用、ガントチャート生成機能などが標準で入っているため、特にプラグインをいれる必要がないというのもよいポイントだと思います。
おまけで本を管理するプラグイン ezLibrarianを入れてみました。書評や貸し借りの記録が残せるようです。メニューが日本語に対応していなかったので、日本語化するパッチ ezlibrarian.ja.patchを作ってみました。

(2) 携帯用メールゲートウェイの導入
AUの携帯を使っていますが、PCのメールを携帯から見れるEZ de DIONというサービスがあります。しかしながらKDDIグループのサービスがauoneに全て統合されたことによる影響でしょうか、今年の2月をもってサービスの休止が決定しています。対策としてPCのメールを携帯に転送することも考えたのですが、PCのメールはとんでもなくスパムまみれなため、パケット代でお金を吸い取られることが目に見えています。
そこで自前サーバを活用して、携帯からのPCメールボックスへのアクセスを中継してくれる WebMailClient2 for Keitai を導入してみました。導入には特に苦労することもなく、現在携帯からメールを見ることができています。機能としては、アカウント情報なども含めてデータを中継用のサーバに全く保持しないという部分がユニークだと思います。
せっかくなので、使ってみたいという奇特な方(かつ、面識がある方限定です、すいません)は声をかけてみてください。

(3) Foneraが相変わらずつながらない
オープン無線LAN環境Foneraがうまく認識されない話を以前記事にしました。現在原因解析のため、シリアルコンソールから状況を把握しようと努めているのですが、シリアルコンソールでシェルやsshを有効にした改造ファーム(改造については、仙石浩明さんの『La Fonera+ へ ssh でログインする(1)~(3)』が詳しいです)をフラッシュに焼こうとするとRedbootがunknown errorと言ってきて困っています。
ちなみに改造ファームを作る際に必要になるlzma圧縮をサポートしたsquashfs-tools(mksquashfs-lzmaやunsquashfs-lzma)ですが、上記では公式サイトビルド手順で作ったlzma457+squashfs3.4を利用しているようですが、それでオリジナルのソースをunsquashfsで展開することができませんでした。変わりにOpenWrtビルドツールから生成されるunsquashfsで展開することができました。
改造ファームをfoneraに転送するのに必要となるtftpサーバは、MacOSXに立ち上げました。参考にしたのはBSD小僧の日記『MacOSXでtftp』です。Redbootでtftp転送を開始するloadコマンドの前に、IPアドレスを割り当てるip_address -l (ローカルIP) -h (TFTPサーバIP)というコマンドが必要であることを、ついつい忘れがちでした。

00:41 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク | コメント (0) | トラックバック
このエントリーのトラックバックURL: https://fenrir.naruoka.org/mt/mt-tb.cgi/682

January 14, 2009

車輪の再発明、もといmatrix.hの更新

行列演算を使うことが多いため、勉強がてら自作のC++行列ライブラリ matrix.hを作っています。このたびUnscented Kalman Filterを実装する必要があり(kalman.h)、そこで使う行列のsqrt(平方根)を取れるようにしましたので、お知らせしておこうと思います。いわゆる『車輪の再発明』ですが、プログラムを常に書いていないと忘れてしまう体質なので、リハビリの一環ということで自己満足しています。

自作ライブラリということで怪しさ満点なのですが、たとえエラー処理がへたれていても(笑)、計算の正しさは確保したいので、検証を行いました。方法は以前の記事『SWIGによる行列/複素数 C++ライブラリのRubyへの移植』と同じで、SWIGでラップ、Rubyからライブラリを呼び出せるようにして、RubyのMatrixライブラリによる計算と比較を行ってみました。FenrirMathTest.rbがテストケースですが、今回追加したsqrtを含めて全てクリアしているようです。コンパイル方法などは、前述の記事をご参考にしてください。

この検証作業をするにあたって、はじめ何も考えず適当にラッパー生成ジェネレータSWIGに通したところ、コンパイルエラーがでました。行列の成分が複素数の場合(Matrix<Complex<FloatT> >)に、固有値を求めるeigenや平方根を求めるsqrtで文句を言われます。しかしSWIGは賢く、関数のラッピング禁止(%ignoreというキーワードで指定できます)をテンプレートの特殊化においても正しく理解してくれるので、%extend Matrix<Complex<FloatT> > { %ignore eigen; }で華麗に解決することができました。このあたりの格闘をSWIGインターフェイスファイル FenrirMath.iに見ていただけると嬉しい(笑)です。

※その後、裏側でGNU Scientific Library (GSL)にも対応してみました。

01:53 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク | コメント (0) | トラックバック
このエントリーのトラックバックURL: https://fenrir.naruoka.org/mt/mt-tb.cgi/683

January 21, 2009

カメラモジュール基板 Rev.B

sparkfunの1.3M PixelのカメラモジュールTCM8240MDを使った基板ですが、搭載されているCPLD(Altera MAX2)とマイコン(SiliconLaboratories C8051F342)のファームがほぼ完成に近づき、動作まで後一歩のところまでこぎつけることができました。
以前の記事でそのCPLD用ファームであるVHDLコードの紹介をしましたが、公開した時点ではかなりバグまみれであることが発覚していますので、あらためてここで『かなり動きそう(>_<)』という状態だということをお知らせしておこうと思います。言い訳になりますが、上記以前の記事では『ある程度動きそうな気がする(笑)』だったので、ご勘弁ください。

ファームが動きそうになっていく過程でVHDLコード内にあるモジュール、例えばSDRAMコントローラなどの効率化を色々と図っていました。例えばSDRAMコントローラですと、バーストアクセスや状態遷移の効率化を行っていました。
この効率化を終えた段階で論理合成を行ってみると、どうやらCPLDは70MHz超で動くようです。現在CPLDに供給しているクロックはマイコンのシステムクロック 48MHzなので、もう少し高いクロックを入力できたらいいな、と思うようになりました。

そこで表題にもあるとおり、基板の設計をしなおしました。いつもどおり、Eagleの回路図レイアウトを公開します。

Image_logger_revB.png
大きさは変わらず 1.4 inch (35.56mm) 角。

CPLDに水晶発信器を接続できるようにしました。この水晶ですが、2.5 x 2.0 mmのとても小さいものです。DigiKeyで買える中では最小のようでした。

20枚ほど基板は発注しましたので、余りそうです。部品をご自身で集めることができ、ノークレーム、ノーサポートで楽しんでみたいという奇特な方がいらっしゃるようでしたら、生基板の実費での配布など、対応を検討してみたいと思います。

※その後、画像取得ができました

23:19 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク | コメント (4) | トラックバック
このエントリーのトラックバックURL: https://fenrir.naruoka.org/mt/mt-tb.cgi/684

January 28, 2009

カメラモジュールによる画像取得

カメラモジュールを作っていましたが、ようやく画像の取得に成功しました。基板は最新(Rev.B)のものではなく古いものでの成功です。

SylphideCAM_090128.png
小さくて色も変だけど成功!! (クリックすると非圧縮のオリジナルbmpファイルが見れます)

搭載されたマイコン(C8051F342)とCPLD(Max2 EPM570)用のファームウェアは公開しています。取得画像サイズといったカメラに関する制御は、microSD上のファイル(cam.datという名前で保存したバイナリファイル、サンプル)でコントロールできるようにしました。画像の取得を目指していた際、レジスタの設定方法がよくわからず、いちいちマイコンのROMに書き込むのが面倒くさくなったので、このような方式にしました。怪我の功名というか、この仕組みは非常に便利です。上の画像のレジスタ設定は、sparkfunフォーラムでの議論を利用しています。

また、画像の保存形式は独自定義なので、ビットマップ(bmp)に変換するRubyスクリプト log2bmp.rbを用意しました。ビットマップのファイル形式を調べていたのですが、OSによってバージョンの差異があったりと意外に置が深いのですね。ここでは最も単純なWindows 3.0で定義されたものに則っています(log2bmp.rbはbitmap.rbに依存しています)。

まだまだカメラのレジスタで不明な部分が多いため、上の画像よりも大きなサイズの画像の取得や色合いの良い露出設定ができていません。しかしながらCPLD上に実装されたSDRAMコントローラ等が機能していることは画像が取得できたことによって確認できたので、非常に大きな前進を果たせたと満足しています。

※その後、色の問題とVGAサイズの取得に成功しました。色の問題はRedとBlueのチャンネルをlog2bmp.rbで逆転させていたことが問題で、現在は修正済みのものに差し替えてあります。取得した画像は以下のとおりです。

SylphideCAM_090204VGA.jpg
1/2に縮小、クリックするとオリジナルのbmpファイルが見れます

なお、この画像の取得にはcam_VGA.datのレジスタ設定を使用しました。

※※続いてSXGA(1280 x 1024)も取得成功しました。設定はcam_SXGA.datです。

SylphideCAM_090204SXGA.jpg
1/4に縮小、クリックするとオリジナルのbmpファイルが見れます(3.8MB)

次はjpegでの取得を目指してみることにします。

23:46 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク | コメント (6) | トラックバック
このエントリーのトラックバックURL: https://fenrir.naruoka.org/mt/mt-tb.cgi/685