November 08, 2010

Eagleで HuMANDATA 拡張ボード

多くの種類のFPGAボードを取り扱っているHuMANDATAという会社があるのですが、今度趣味のプロジェクトでそこの基板を使うことになりました。そこで、その拡張ボードをEagleで作っているという次第です。せっかくなので再利用が可能だと思われる拡張ボードのテンプレート(Humandata_half.zip)を公開することにしました。

humandata_half_brd.png
コネクタはHirose FX10A-80P/8-SV1

この会社のボードのいいところは、ボードを変えてもコネクタの配線が統一されていることです。そのためFPGAの規模や会社を簡単に変えることができることです。大きめのFPGAで作っておいて、ダウンサイジングを図る作戦をとろうと僕は考えています。

なおここで紹介したデータは当然無保証です。自己責任の上でお使いください。

※この基板をもとに画像処理用の拡張基板を設計してみました。

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

November 20, 2010

Matlabが出力したepsを編集して一部の線を破線にする

Matlabをグラフの出力として使うことがありますが、そのグラフをちょっとばかり編集したいということがあります。特に今回は、図が白黒でしか出せないために、図の線の一部を破線にしたいという事態に見舞われました。このようなときには、そのグラフを出力するための元になったmスクリプト、あるいはfigファイルを探して編集して再出力するのが王道だと思いますが、探すのが面倒くさいです。
そこでMatlabが吐いたepsを直接編集して、破線に変えることにしました。もちろんイラストレータなんぞは使いません。epsをテキスト編集をするのでメモ帳でも可能です。

肝心のやり方ですが、まずは以下のコードを%%EndSetupの直前に挿入します。

/dpi2point 12 def
/bdef {bind def} bind def
/SO { [] 0 setdash } bdef %solid
/DO { [.5 dpi2point mul 4 dpi2point mul] 0 setdash } bdef %dotted
/DA { [6 dpi2point mul] 0 setdash } bdef %dashed
/DD { [.5 dpi2point mul 4 dpi2point mul 6 dpi2point mul 4 dpi2point mul] 0 setdash } bdef %dotdash

そして、数字が羅列していてSで終わる部分が実際に線を引いているところなので、対象となる線の部分をみつけて、直前にDO(破線)やDA(ダッシュ)、DD(ダッシュ破線)をいれ、その直後にSO(元の直線)をいれると完成です。たとえば、以下のコードのようにするとダッシュになります。

% 修正前
/DeviceRGB {} CS
[0 0 1] SC
11843.6 7528.4 m
12137.6 7528.4 l
S

% 修正後
/DeviceRGB {} CS
[0 0 1] SC
DA
11843.6 7528.4 m
12137.6 7528.4 l
S
SO

Sが線を引け、という命令です。その前の数字は線の座標を指定しています。そしてDeviceRGBや[0 0 1](この場合は青)の表記が、色を指定している部分です。こういったものをもとに検索にすれば、対象とする線が比較的簡単に見つかると思います。そしてダッシュや破線の線間隔の調整には、はじめに指定したdpi2pointの値を12から変化させることでできます。

なお、このようなことができるのはMatlabが吐くepsのほとんどが人間に可読な形で『どこに線を書け、色を変えろ』等の命令でできているためです。epsのベースとなったpost scriptはそれこそスタック『言語』なわけですから、可読である以上、気合を入れれば脳内デバックが可能です。

なおgnuplotが吐いたepsでのやり方は、普段僕が大変お世話になっている『Gnuplot not so Frequently Asked Questionst』『図を描いたその後は...(その3) 』を参考にするとできそうです。

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

November 27, 2010

Super Sylphide 進捗状況(37) -- AH6100-LR 較正作業

オートパイロットシステム Super Sylphideですが、最近はもっぱら委託生産品、および小型化版 Tiny Featherで新規採用した6DOF慣性センサ エプソントヨコム AF6100-LRの較正作業を行っています。ここでいう較正作業とは、温度変化や回転を与えることによってセンサの出力変化を観測し、本来得られるべき正しい値に出力を補正する情報を抽出する作業のことです。せっかくなので結果の一部を記事にすることにしました。なおここで得られた情報はセンサのみではなく、A/D変換器や電源等、他の回路の影響も多分に含まれていますので、センサのカタログスペックとは異なるものであることに留意してくたさい。

まずは、一定温度(20℃)の下、直交する3軸に対して回転を加えたときの角速度3軸の出力変化です。

AH6100_XYZ_ma_020.png

この結果を処理することで、各軸のスケールファクタ(感度)や検出軸がどの程度傾いているのかを計算することができます。計算した結果X,Y,Z軸の順に、スケールファクタは33288, 33993, 33479でほぼ同じ、検出軸は直交しているそれぞれの基準面に対して178.8度、179.9度、178.9度と、各軸間でほぼ直交していることがわかりました。とてもよい結果です。

そして、無回転の状態で温度変化(-10℃から40℃まで10℃刻み)をしたときの加速度と角速度の出力(ch1-3:加速度、ch4-6:角速度)です。

AH6100_XYZ_tb.png

この結果をみることで、ゼロ点が温度に対してどの程度変動するかを知ることができます。グラフ内には線形近似を行った際の傾きと切片を数値で表してありますが、どれも傾きが非常に小さい値であり、これはとても良い性質を示しています。

他にも温度変化時のスケールファクタや時間経過時のゼロ点変動などを評価してみています。地道な作業ですがセンサの性能を可能な限り発揮させるためにも、この較正作業はかかせません。

※次の進捗状況記事は、委託生産品用のマニュアル作成についてです。

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