catalinaの備忘録

ソフトウェアやハードウェアの備忘録。後で逆引きできるように。

artoolkitのソースコードを眺めてみた

色々なことやってみてる最中です。かたりぃなです。

一昔前にミクさん召喚とか流行って以降あまり噂を聞かなかったartoolkitを調べてみました。

コードリーディングと言っても、軽く眺めた程度なので間違ってるところあるかと思います。

一番知りたいのはマーカーの姿勢推定の部分。

最近はwindowsストアアプリでも作ろうかなとも考えているので、うまく利用できたらいいなと思っています。

 

artoolkitって?

マーカーを使ったARを実現するためのライブラリ。

ニコ動あたりでartoolkitで検索かけると、色々と面白いものが見れると思います。

オープンソースのライブラリなので気軽に利用できるのですが、昔はライセンスがGPLだったのでアプリに組み込むにはちょっと……な状態でした。

今の最新バージョン(5.3.1)ではライセンスがLGPLv3になっているので、手軽に利用しやすくなったと思います。

本家:http://artoolkit.org/

リポジトリhttps://github.com/artoolkit/artoolkit5

 

とりあえずWindowsでビルドしてみた

configure-win32.vbsを叩くとソリューションができるのでビルドするだけ。

VisualStudio2015だとプロジェクトの設定がおかしいといわれた個所が幾つかあったので修正しました。

修正内容ですが、エラー番号をぐぐってMSDNのページ見れば分かる内容でした。

あとDLL不足が幾つかあったのでその都度修正。実験するだけでシステムディレクトリ汚すのはちょっと嫌なので、VisualStudioが見つけてくれるパスに置いておくことにしました。

 

コードリーディングの前に情報収集

古いライブラリ(私がコレ使って遊んだのはもう5年くらい前?)なので、だいたいのアルゴリズム有識者によって調べられています。

先人の知恵と機械の力(デバッガ)を使いつつ読み進めることにしました。

マーカーでの姿勢認識 - やねうらお−ノーゲーム・ノーライフ

理論上はartoolkitでマーカーの姿勢を推定するためには、「平行な線分2組からなる図形」であればいいわけですね。

具体的な形状としては、よく使われる「Hiro」と書かれた正方形マーカーなどですね。

適当な長方形図形でもマーカーとして使えそうです。

(mk_pattユーティリティで自前マーカー作るとき、長方形図形もマーカー候補として認識されました)

平行四辺形や菱形もマーカーに使えそうですが、当面はそんな形状使うことなさそうなので無視することにします。

 

サンプルプログラムを軽く眺めて全体像を掴む

simple_liteサンプルプログラムを眺めてみます。

カメラから映像を取り込み、マーカー上に立方体をレンダリングするだけというものです。

 

まず、カメラからの映像取り込みはMicrosoftのDirectShowを使っているようです。windowsストアアプリではMediaFoundationを使うことになるので、カメラ画像取り込み部分は他の手段に頼ることになりそうです。

試しにopencvのVideoCaptureクラスから取り込んだusbカメラの画像を使うように書き換えたところうまくいきました。(こちらも中身はDirectShowだったりすることもありますが。)

置き換えるならカラーフォーマットと解像度を合わせることを忘れずに。

 

立方体の3DレンダリングopenGLを使っていました。

座標系の変換でありがちな転置行列や逆行列を求めるコードは見当たらなかったので、artoolkitの内部の座標系はopenGLに合わせてあるのではないかと推測できます。

もしレンダリング周りをDirectXに置き換えるとしたらひと手間かかりそうです。

 

ここまでで、映像の入出力の手段はar-toolkitとは独立していると考えてよさそうです。

 

さて、肝心のアルゴリズムの部分。

arDetectMarker

arGetTransMat

arglCameraViewRH

あたりかと思います。

が、arglCameraViewRHの中身は3x4行列を4x4行列にしてスケールファクタを掛けてるだけでした。

 

なので、

arDetectMarker

arGetTransMat

あたりがartoolkitの肝ですね。

あ、マーカーの識別を忘れるところでした。

マーカーパターンの読み込みはarLoadPattでやっていて、識別するためのidを返してくれるようです。

マーカーを検出すると、検出したマーカーN個それぞれのidと信頼度がわかる仕組みのようです。

 

arDetectMarker

いわゆるマーカー検出処理ですね。

この関数が定義されているファイルarDetectMarker.cではグローバルに状態変数を持って何やらやっているっぽい。

直前のフレームの情報を保持しているので(光の加減などで)マーカー消失したとき対策か何かかもしれませn。きっと?

さらに下の階層に下ると、arLabeling.cではグローバルに画像処理用のワークバッファを1024x1024保持してるみたいだけども、最近の高性能webカメラみたいに1600x1200とか突っ込んだらどうなるんだろう?

まあ、やってることは一般的な物体検出の手順っぽいので適当に流し読み。

私が知りたいのは↑でも紹介した物体の姿勢推定のアルゴリズムだけ。

他のアルゴリズムopencvなりの適当な画像処理ソリューションで何とかなるはず。

 

arLabelingでラベリングする

ラベリングですね。

arGetContourで輪郭線を抽出

輪郭を成す全てのピクセルの座標がx_coord,y_coordに入る

つまり点p(x_coord[n], y_coord[n])を描画すると輪郭線が見える。

check_squareで検出した輪郭線で四角形ができるのかチェック

ここで輪郭の頂点(vertex)を求めている。

つまりp(x_coord[vertex[n]],y_coord[vertex[n]])としてn=0,1,2,3で四角形をなす4つの頂点を表現できる。

arGetMarkerInfoでマーカーパターンと照合した結果の信頼度とかを返す。

この関数内でarGetLineを呼んでる。

arGetLine、よくわかっていないけれども、、、

↑で紹介したアルゴリズムの入り口の気配。

ここまでに検出した「四角形の1辺をなす全てのピクセル座標pn(x,y)」を「nx2」の行列としてとらえて、歪み補正などを加える。このnx2行列をPCA(=主成分分析。ここではKL展開して次元を落とすのが目的と考えたほうが捉えやすい?)

この処理を四角形を成す4辺全てに対してやっている。。。。

わかったようなわからないような?

arGetLineで得られた結果の数字を見てもいまいちピンと来ない。

このあたりは少しずつ勉強しよう。

 

最後にarGetCodeであらかじめ読み込まれているマーカーパターンとテンプレートマッチング

マッチング手法とモードは

AR_TEMPLATE_MATCHING_COLOR

AR_TEMPLATE_MATCHING_BW

AR_MATCHING_WITHOUT_PCA

AR_MATCHING_WITH_PCA

これだけっぽい。

 

arGetTransMat

この関数も調べ終わってから今回の投稿にしたかったのですが、疲れたのでこれくらいにします。

気が向いてまた調べることがあったら投稿するかもしれません。

 

気になったこと

カメラキャリブレーションなしでそれなりにARが実現できるってのはすごいですが、「それなりに」という部分が引っかかります。

サンプルプログラムではどうやって作られたのか謎なカメラ内部パラメータファイルを使っていました。

気になることはまだ残っていますが、ミッションクリティカルなシステムでなければ、このくらいの手軽さで使えるほうがユーザーウケはよさそうです。

何か新しいことに挑戦(visual studio2015, opencv3.0, VTK 等)

Windows10にアップグレードしてみると想像以上にまともになってて驚きました。かたりぃなです。

MetroUIは残念なコだったけど、Windows10になって以前は全画面で展開されてたMetroがスタートメニューの右にちょろっとくっついてくるだけでした。やっぱ全画面持っていったりしないってのは大事だね。

 

このアップグレードのおかげで何か作ってみようかなと趣味プログラムを復活するきっかけになりました。

とは言いつつ、Windows上でVM立ち上げてたら以前とやってることが同じ。これじゃあつまらない。

せっかくだしVisualStudio2015使って何かやることにしました。windowsストアアプリ開発者アカウントもあるんだし(ずっと使ってないけど)。

 

色々やったせいであたまごちゃごちゃなので、細かい手順は別の投稿で。

 

やってみたこと

  • VisualStudio2015を使う
  • VisualStudio2015からGitリポジトリ叩いてみた
  • Windows用のGitHubアプリがあるので入れてみた
  • Windows用のcmake(GUI版)を入れてみた
  • opencv 3.0を動かしてみた
  • VisualStudio上でのopencvデバッグ支援ツールがMSから出てたので試した
  • opencv のvizモジュールを使ってみた
  • vizを使うためにVTKをビルドしてみた
  • viz経由でopenglを叩く

 

VisualStudio2015

しばらくご無沙汰してる間にずいぶん進化してました。

すごいなと思った点をいくつか。

1, androidiOS向けのプロジェクトもビルドできるらしい。

試しにソリューションを生成してみたけど、android, iOS, windows-phoneそれぞれのプロジェクトが中に入ってた。なんかすげぇ。当面使うことないだろうけど。

2, gitとの連携がIDE上から直接できる

メニュー -> チーム -> 接続の管理でリポジトリに接続

Githubへの接続もできた。とりあえずcloneできるところまで試した。

コマンドラインに慣れてるせいか日本語訳されたメニューがちょっと気持ち悪い

まあいざとなればgit shellアプリがあるから、こいつ起動してコマンドラインからいじればなんとかなりそう。

 

windows版cmake

GUI画面見て戸惑ったけど、やってることはコマンドラインと同じだった。

configureしてgenerateするとVisualStudio向けソリューションとプロジェクトが生成される。

試しにopencvとvtkをcmakeしてからVisualStudioでビルドしてみた。

プロジェクト全ビルドした後で「install」プロジェクトをビルドしないとインストールされない点が気になったけど、だいたい想定通り。

躓いたポイントは、cmakeの時点でコンパイラチェックするので通常使用するコンパイラを指定しておかなきゃいけなかった。(昔入れてた2012とかの残骸があった)

これをしっかり確認して合わせておかないと、cmakeで生成されたプロジェクトで使用するコンパイラがVisualStudio2012になっていたりして、実行ファイルを作ろうとしたときにライブラリとのバージョン違いで怒られる(opencvは2012でビルドしたのにアプリを2015でビルドしてるからリンクできないよ!)と。

 

opencv 3.0とvtk

vtkはデータの可視化ツール。内部ではopenglを使ってるっぽい。(リンクエラー出て気づいた)。

opencvのmatクラスをそのまま渡せるし、色々と便利に使えそう。

使い方は、opencvとvtkそれぞれビルドしてライブラリ吐かせておく。アプリはそのライブラリをリンクするだけでOK。

NuGetからでも行けるかもしれない。試してないけど。

ビルドが成功したらinstallプロジェクトをビルドしてインストールしておくのを忘れずに。インストール先ディレクトリはcmakeで指定したところになる。(これ忘れてると、アプリのビルド時にincludeできないエラーでハマる)

ライブラリ名の命名規則が大きく変わってる「opencv_"モジュール名""バージョン番号""デバッグビルドの場合はdを付与".lib」

vtkとは関係ないけど、カメラキャプチャの機能があったので叩いてみた。(opencvからDirectShowを叩く)

やりたいことが簡単に実現できました。10行くらい。

 

visualstudioでのopencvデバッグ支援

画像処理のプログラムをかいてると、デバッグ大変ですよね?

適当な個所でcv::imwrite("test.jpg")とか。連番で出したいからitoaとか使って。。とか。めんどいというか、なんか色々大変。

MSがデバッグ支援拡張機能出してくれてました。

https://visualstudiogallery.msdn.microsoft.com/e682d542-7ef3-402c-b857-bbfba714f78d

これを使えば、VisualStudioのデバッガで変数をポチるだけで画像が表示される。すげー。

このページが一通り網羅してたので分かりやすいです。

http://www.buildinsider.net/small/opencv/06

 

opencvのvizモジュール

3Dビジュアライザ。openGLなんかの3Dレンダリングエンジンを叩いて画像を作れる。

このブログの以前のエントリでopencvで解析, Rでグラフ表示とかしてたのを、opencv上だけで実現できそう。

ドキュメントはこのあたり。

http://docs.opencv.org/2.4/modules/viz/doc/viz.html

モジュールの依存関係は アプリケーション -> opencv::viz -> VTK -> OpenGLっぽい。

最後のOpenGLはVTKのcmakeオプションで他のものも選択できそう。

ちなみにWindows上で動かすにはOpenGL32.Libをリンクする必要がある。*32.libとか名前ついてるのに"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib\x64"とかに置いてあったりして気持ち悪いけど。

 

まとめ・今後の展望

着手はじめたときはopenCV + DirectXで何かできないかなと思ってたけど、opencvからopenGL叩けるならDirectXにこだわる理由も無い気がしてきた。

無理せず何かを作っていこう。

 

気になったこと

opencvのcmakeオプションのWITH_FFMPEGも合わせて使えば、cv::vizのレンダリング結果をffmpegエンコードして動画にまとめちゃう~なんてこともできるのかも。

魔法陣ライトアッププロジェクト(プロトタイプ編)

魔法陣をつくりたいというこのプロジェクト。

まずはレーザーカッターを使って、魔法陣を作るところから。

以前つくった魔法陣コースターの大型版。

 

レーザーカッターの仕様

今回もこちらの工房をお借りしました。

http://makers-base.com/

このレーザーカッターの仕様では、イラストレータ形式のファイルならなんでもいけるとのこと。

ただ、イラストレータは僕にとっては高価なものなので、安価なフリーソフトを使う。

ベクトル形式の画像の定番。incscapeを使う。

https://inkscape.org/ja/

試行錯誤した結果、レーザーカッター用のデータとしてincscapeを使うときの注意点。

「複合パスは使わないこと」。

レーザーカッターのソフト側で複合パスを正しく処理できないっぽい。

 

組み立て(その1)

アクリル板をレーザーカッターをカット、刻印したものと同じサイズの黒い板材を敷いて組み立てる。合計12枚のアクリル板。直径1.6mになりました。

f:id:Catalina1344:20150329124645j:plain

昼間だとあまりきれいに輝かなさそうだったので、夜に公園で挑戦。

あまり騒ぐと近所迷惑になるので、ひそひそと。

さて、屋外なので魔法陣をライトアップするための電源が必要。

外で使うバッテリーはコレにしました。

TL230K 「リチウムDEチャージ23000 ACアダプタ付」 | 製品情報 | 多摩電子工業株式会社

テープLEDの最大出力が12V、2Aなので、それに耐えうる出力かつ長時間出せるもの。

つないでとりあえずライトアップしてみた結果。。。

f:id:Catalina1344:20150329124652j:plain

やったね!

アクリルの境界を光が透過できない(地面の凹凸も関係してそう)のか、全体がうまく光ってくれない。

魔法陣の内周からのライトアップじゃダメっぽい。

うーん、雰囲気はよかったんだけどなぁ。

 

組み立て(その2)

退却して、外周からライトアップするように改造。

魔法陣の外周が5mちょっとあるので、新しくテープLEDを買ってきた。

テープLED フルカラーRGB5m LED300粒: LED(発光ダイオード) 秋月電子通商 電子部品 ネット通販

ガワつくろうかとも思ったけども、まだうまくいくかどうかわからないので、後回し。

こういうのはうまく輝いてからやりましょう。

さて、このテープLEDだとバッテリーの出力がぎりぎり。

4Aまでいけるところを3.2Aまで使ってしまう。

他の駆動装置つけるときは再検討ですね。

さて、先ほどと同じように魔法陣を並べてテープLEDで囲んで、電源ON!

制御パーツ完成していないので、以前の魔法陣コースターのときに使ったコントローラセットを使う。

ぽちっとな。

f:id:Catalina1344:20150329124704j:plain

やったよ!

これならいけるよ!

コスプレしてこの魔法陣の前で悔しそうに

「畜生ォ 持って行かれた・・・・・・・・・・・・!!」とかできるよ!

(厳密にはあれのデザインとは違う)

まあ色々な衣装で応用できるように、「元ネタが特にないけど魔法陣っぽいデザイン」にしてるのでゆっくりやっていきましょう。

Nvidia Jetson TK1のセットアップ

やっと届いたNvidiaのJetson。

思っていた以上におかしなところで詰まったので、メモ。

一番困ったのはパソコンモニタにHDMIの口が無いってことだったんですけどね。。。

 

 

クイックスタートガイド(本家)

http://developer.download.nvidia.com/embedded/jetson/TK1/docs/2_GetStart/Jeston_TK1_QuickStartGuide.pdf#nameddest=Introduction

 

ハードウェア側の準備

Nvidia Jetson-TK1を準備する

  • HDMI出力端子をパソコンのモニタにつなぐ
  • USB端子にUSBハブをつなぐ
  • USBハブにマウスとキーボードをつなぐ
  • LANケーブルを接続する。LANにはDHCPサーバがあればラク。無いなら、同一サブネットに存在するようIP設定する。
  • SDカード指しておく(外部ストレージとして)
  • Jetsonの電源を入れる(電源が3つ足なので、変換コネクタが必要なら適宜入れる。)

ここまででJetsonが起動してモニタにUbuntuの画面が出てくる。ふつうにブラウジングもできる。

なんか動かしたい人は、クイックスタートガイドの最初のほうに書かれてるサンプルコード持ってくると満足感を得られるかも。

ビルド済みバイナリのtarballなのでとりあえずは動いた。

 

前準備

Flashing Jetsonの章にかかれているとおりに、flashをアップデートする。

ターゲット(JetsonTK-1)に書き込むので、イメージを準備するためにubuntuのホストPCが必要。

今回使った環境は

Windows8.1 + VMware + ubuntu

必須の設定として

  • USBホストデバイスをVMwareから使えるようにする
  • ネットワークはブリッジモード(JetsonにSSHで直接ログインできる環境が必要)
  • 付属のUSBケーブルをホストPCにUSBを接続。ケーブルのもう一方をJetsonのMicroUSB-Bに接続。(flashの書き込みに必要)

 

開発環境の準備(JetPack)

ここはマニュアルに記述されている手順通りに進める。

Before you Beginに記述されている前準備で必要なことを確認する。

このあたり(Jetson TK1 Development Pack)からJetPackを落としてくる。クロスコンパイルするために必要な環境らしい。

 

JetPackのインストール

ダウンロードしたばかりのJetPackは実行権限がついていないので、chmod +x filename でつけてあげる。

上記のクイックスタートガイドに従い、ファイルマネージャからダブルクリックで起動させる。

時折ターミナルが開いてjetsonのパスワードを要求して来たり、利用許諾を受け入れるかどうかとか聞かれるので、acceptなりyesなりで適当に進める。

しばらく進めると、またしてもrootfsの更新などが入るので気長に待つ。

 

このときにターミナルに以下のような文言が表示されるのでいうことに従う。

 

Please put your device to Force USB Recovery Mode, when your are ready, press Enter key

To place system in Force USB Recovery Mode:
1. Power down the device. If connected, remove the AC adapter from the device. The device MUST be powered OFF, not in a suspend or sleep state.
2. Connect the Micro-B plug on the USB cable to the Recovery (USB Micro-B) Port on the device and the other end to an available USB port on the host PC.
3. Connect the power adapter to the device.
4. Press and release the POWER button, if necessary; press and hold the FORCE RECOVERY button: while depressing the FORCE RECOVERY button, press and release the RESET button; wait two seconds and release the FORCE RECOVERY button.

 

4の手順までうまくいけば、以下のようなことが確認できる

  • JetsonのHDMI出力が無く、モニタに何も映らない
  • ホストPCのubuntu上でlsusbをすると、nvidia jetsonデバイスが目視確認できる

この状態であれば、enterキーを押してflashの書き込みができる。

 

サンプルプログラムや開発ツールなどの一式のデプロイ

cudatoolkit,opencv, perftoolのセットアップ

ここのインストール手順がどうしてこうなっているのか謎。自分が何かを間違えたんじゃないかと思うくらいに。

 

running target_sudoと記述されたターミナルが表示されたら、ターミナルはそのままにしておく。

そのまま別ターミナルもしくはターゲットデバイスのキーボードを直接操作してログインして

 

cd cuda-l4t/

sudo ./cuda-l4t.sh cuda-repo-l4t-r21.2-6-5-pred_6.5-34-armhf.deb 6.5 6-5

とする。

(シェル引数の意味はcuda-l4t.shに書かれている。)

これでcuda, opencv, perftoolがインストールされる。

ちなみに、cuda-l4tのディレクトリは上記のrunning target_sudoが表示された時点でデプロイ済み

 

なんか色々とおかしい気がするけど、まずは動作させることまでできたので良しとしましょう。

opc_hack_and_make に参加してみた

オリンパスからでている、opcに関するイベントがあったので参加してみた。

http://fabcafe.com/tokyo/events/opc_hack_and_make

想像よりも多くの人が集まっていた。

イベントの内容は、
  • パイロットプロジェクトの発表
  • opc,sdkの解説
  • テスターさんのアプリの体験
等。

自分は「これでどんなことができるのか」を知ることが目的だったので、sdkの解説に参加。

質疑応答では疑問点も解決できたので、目的自体は達成したと思う。
ほかの参加者から出ていた質問の内容も、大きな夢、作りたいものがあるという意気込みを感じた。
こういう刺激が新しいモノやサービスを生み出す原動力になるんだろう。


さて、自分の反省点としては、こういうイベントは場慣れしてないのもあって、多くの人と話すことはできなかったこと。
こればかりは、慣れの問題なのかもしれない。

話は変わるが、発注していたnvidiaのJetsonが届いていた。
opcのテスターは落選してしまったし、しばらくはこいつと戯れてみよう。

Arduinoを使って魔法陣ライトアッププロジェクト(魔法陣側のライトアップシステム検証)

コスプレで魔法詠唱中には魔法陣を出したいプロジェクト。

テープLEDを使った電飾は実現可能だということがわかったので、制御モジュールも自作しようということで作り始めました。

 

魔法陣モジュールの全体図

f:id:Catalina1344:20141214213647p:plain

前回のブログエントリで、テープLEDを使ったライトアップはできることまで確認済み。

そこで、次はArduinoでテープLEDを制御することを考える。

点灯パラメータはTWE-liteモジュールから、ZigBee通信で受け取った信号を使う。

実際の制御信号は杖に仕込んだ加速度センサなどから生成したいけど、それはまたおいおい検討していく。

 

今回やること

  • 今回はTWE-liteとArduinoの接続実験
  • Arduinoを使ったテープLEDの点灯実験

 

まず、TWE-liteとArduinoの仕様

ZigBeeワイヤレスモジュール TWE−Lite DIP−PCB (半完成品セミキット): 無線、高周波関連商品 秋月電子通商 電子部品 ネット通販

Arduino Leonardo (ピンソケット・ピンヘッダ未実装): マイコン関連 秋月電子通商 電子部品 ネット通販

なんでLoenardoかと言われると、深い意味はない。ウチに転がってたので使おうってだけ。

ZigBeeを使う理由も特になし。モバイルで動かすことを想定しているので消費電力の低い無線通信だったら何でもよかった。他に候補としてあったのはLowLevelBlueToothとか。

 

TWE-LiteのPWM出力をArduinoで受け取る

直結してもうまくいかなかった。

ただし、Arduinoは動作電圧は5V, TWE-Liteは動作電圧は3V。

というわけで、回路はこんな感じになりました。

f:id:Catalina1344:20141214210829p:plain

ポイント

  • ArduinoのAREFピンにTWE-Liteの動作電圧と同じ3Vを入力する
  • Arduinoのプログラム中でanalogReference( EXTERNAL )してAD変換の基準電圧をAREFの3Vにあわせる
  • TWE-Liteの出力はPWMなので、適当な積分回路を通してからArduinoのアナログ入力に与える

これでTWE-Liteの入力信号をArduinoのソフトウェア内で扱うことができるようになった。

ちなみにPWMを直接Arduinoに与えると0と1023の2値しか出してくれなかった。

ADCの仕様わからないからなんとも言えないけども、積分

した電圧を与えるとうまくいくので、ADC側の仕様の問題かもしれない。

 

ArduinoでテープLEDを制御する

まずはパーツ紹介

前回のブログエントリで紹介したテープLEDに追加で、こんなパーツ買ってきた。

家に転がってたものも一応掲載。

ブレッドボード用DCジャックDIP化キット: 組み立てキット 秋月電子通商 電子部品 ネット通販

東芝 2SK2231 FET

フルカラーテープLED(RGBLED45個付1.5mタイプ): LED(発光ダイオード) 秋月電子通商 電子部品 ネット通販

24W級スイッチングACアダプター12V2A NT24−1S1220: 電源一般 秋月電子通商 電子部品 ネット通販

 

さて、12Vの電圧をブレッドボードにつないで、+側をテープLEDの+端子につなぐ。

この端子に対して制御すればいいんだけども、テープLEDは1.35Aが最大で流れるらしい。そのままマイコンつなぐと当然壊れるし、2SC1815ではちょっと力不足。

そこで、2SK2231を使うことにした。以前のエントリで書いたモータの制御で使ったやつですね。これなら1.35Aは全然余裕。

とりあえず赤色のLED端子に対して実験する。

回路図。

f:id:Catalina1344:20141214214912p:plain

回路図書き終わってから気づいたけど、ARDUINOの出力部分にプルダウン抵抗付け忘れてますね。あとで修正しましょう。

これで魔法陣側モジュールの技術要素の確認まで完了した。

 

さて、調子に乗ってRGB全部制御してみたのがこちらの写真。

f:id:Catalina1344:20141213160516j:plain

写真左がArduino Leonardo, 中央がDCジャックとMOS-FET(2SK-2231), そこから伸びてるリード線がテープLED用の信号線。

 

いい感じに点灯してくれた。(自画自賛)

 

これで魔法陣側モジュールの技術要素は問題ないことが確認できた。

次は杖に仕込むモーション検出用のセンサの検討ですね。

魔法陣コースター作ってみた

 

経緯

コスプレで足元に魔法陣出したい。杖振り回すと、魔法陣と杖が連動して光ってほしい。

というわけで、実現可能性を検証するために色々試してみた。

いい感じになったので、マグカップとか置けるようにコースターにしてみました。

まずは写真。

 

通常光で点灯

f:id:Catalina1344:20141206212139j:plain

最大出力で白色点灯

f:id:Catalina1344:20141206212134j:plain

 

青色光で点灯(マグカップ載せてみた)

f:id:Catalina1344:20141207155551j:plain

 

赤色光で点灯(マグカップ載せてみた)

f:id:Catalina1344:20141207160100j:plain

 

氷マナで冷えてしまったコーヒーも炎マナで一気に過熱して暖かく……はならない。

まあ気持ちだけってことで。

 

材料

アクリル板

東急ハンズの店頭で買ったのだけど、ネットからだと見当たらず…どこにあるんだろう。

スポンジ板

NR黒セルスポンジ 5×100×100|【東急ハンズネットストア】

光モ-ル カブセ 12 1m -ホームセンター通販サイト・コメリドットコム

ビニールテープ

Amazon.co.jp: ビニールテープ (黒)19mm×20m: 文房具・オフィス用品

 

テープLED

フルカラーテープLED(RGBLED18個付30cmタイプ): LED(発光ダイオード) 秋月電子通商 電子部品 ネット通販

テープLED用の電源

24W級スイッチングACアダプター12V2A NT24−1S1220: 電源一般 秋月電子通商 電子部品 ネット通販

テープLED用コントローラ

フルカラーLEDコントローラー(赤外リモコン式): 半導体 秋月電子通商 電子部品 ネット通販

 

 

作るのに必要な機材

  • 電源(ふつうの家庭用電源でOK)
  • レーザーカッター(アクリルの刻印用。適当なシェア工房でお借りしましょう)
  • カッターナイフ(スポンジのカット用)
  • はさみ(ビニールテープのカット用)
  • のこぎり(枠のカット用)
  • 自分を信じる心

 

作り方

アクリルにレーザーカッターで刻印するための図柄を書く。

レーザーカッターのツールでつかえるフォーマットは、基本的にはベクトル形式のデータ。

そこで今回はInkscapeというツールを使ってみることにする。GIMPでもいいらしいけど。

Inkscape - 窓の杜ライブラリ

ベクトル形式の図柄を書くにはadobeイラストレータがオススメらしいんだけども、いかんせん高いのでこいつで代用。

書きあがった図柄がこちら。

f:id:Catalina1344:20141207172016p:plain

周囲の文字は某ネトゲのタイトルとか技名をそのまま記述。

 

あとは物理的に作るだけ

 

1, アクリルにレーザーカッタで刻印する

今回はこちらの工房をお借りしました。

http://makers-base.com/

機材の調整とか含めて一時間半くらいでできました。

 

2, アクリルの下に敷くスポンジを、アクリルと同じ大きさにカットする

なにごともなく数分で終わる作業。

四角なので失敗することもないでしょう。

 

3, カブセをカットする

アクリルの周囲を取り巻けるくらいの大きさにカットする。内側の窪みにテープLEDを張り付けるので、そのぶんの余裕をとることを忘れずに。

4つパーツが切り取れたら、4辺のスミをナナメ45度にカットする。切っておかないと、組み立てたときにぶつかってしまうので。

 

4, カブセの内側にテープLEDを配置する

テープLEDの両面テープ部分をはがして、カブセの内側に貼り付ける。

実際に4辺を正方形にした状態で綺麗に張れるように適当に調整する。

 

5, カブセとアクリルをくっつける

カブセの内側の凹みにアクリルとスポンジ板を入れる。

入ったら、カブセの四隅を固定していくために、ビニールテープで固定する。

ビニールテープは外に見えてしまうけども、なるべく綺麗になるように。

 

6, 電源を接続する

テープLEDの端子にコントローラの端子をつなぐ。

コントローラの電源入力端子にACアダプタをつなぐ。

最後にACアダプタの電源を入れる。

 

あとは専用コントローラでぽちぽちと遊びましょう。

 

今後の展望

コスプレ小物として足元に出すためには、もっと大きな魔法陣でやりたい。

ただ、レーザーカッターに入る大きさの上限があるので、分解の仕方を考えないときつい。(おかしなところで分割してしまうと、見た目が残念になってしまうので。)

 

今回ためしに使ってみたカブセはなかなかいい感じ。プラスチック素材なので多少は曲がってくれるので、実物大(今回の20倍くらいの大きさを想定)をつくるときはこれをまげて使えばいけそう。熱を加えればさらに曲がってくれるだろうし。