2013年9月30日月曜日

LEGO インディ・ジョーンズ 戦闘機の攻撃 7198

 昨日、日曜日は、LEGOの 「インディ・ジョーンズ 戦闘機の攻撃 7198」を組み立てながら、溜まってきたLEGOパーツの再整理を行いました。


 Mindstorms からLEGOを初めて、テクニックシリーズをいくつか組み立てて、すっかりハマってしまったのですが、Mindstormsやテクニックのビームとシャフト中心のものも動きを作るのにはいいのですが、すきな「かたち」を作ろうとすると、通常の基本ブロックやプレート・スロープ等を使ったLEGOの方が楽しい気がします。自分で素から考えて形を作るのは、まだ、ごく簡単なもの、はっきりいって小学校入学以前くらいのレベルでしかできませんが、とりあえず、市販モデルを説明書に従って組み立てて、パーツの組み合わせ方とかを覚えつつ、パーツを集めているというところです。



 インディ・ジョーンズとインディ・パパがのる複葉機と敵の戦闘機の2つの飛行機が組めて、インディとパパと敵パイロットのミニフィグがついてきます。


 LEGOはミニフィグも良く出来ていて、かわいいので、ついつい集めたくなってしまいます。わりと収集癖があって、凝りだすと、犬が靴をくわえてくるみたいに、色々集めだしてしまう方なので、危険です・・・。



 スター・ウォーズとかアベンジャーズとかも・・・。やばいかも。

 さて、まずは、インディの乗る複葉機です。




 出来上がると、こんな感じです。



 インディ・パパが機銃で自分で撃ってしまった尾翼の着弾跡のシールがついてきます。



 次に、敵の戦闘機。こちらのほうが、サイズは一回り大きいです。







 二機並べたところ。




 しばらく、飾って、そのあとは、分解して、パーツ流用しようと思います。

 さて、LEGOパーツが少し溜まってきたので、今回、パーツの再整理をすることにしました。



 パーツ類は、電子工作のパーツの整理・収納に使っているのと同じIRISの組み換え可能クリアチェスト ST-1000 です。ラジコンサーボの空きケースやスーパーでいちごとか野菜が入ってくるプラのパックや、牛乳パックを切って内仕切りになるトレイを作って分類しています。関係ないですが、牛乳パックをはさみできっていると、なぜか、脳内で「でっきるかな~♪、で、っきるかな♫~」と再生されるのは自分だけでしょうか?


 また、Mindstormsやテクニックのギアやペグなどの小物は、おなじくIRSIのパーツセパレータボックス PS-330 も使っています。

2013年9月16日月曜日

Raspberry Pi camera モジュールでOpenCV (引き続きVisualGDBお試し中)

 Raspberry Pi の専用カメラモジュールを入手して、本体に取り付けて、コマンドで画像取得はできたんですが、OpenCVで使おうと思ったら、他のUSB Webcamの様にはOpenCVでは認識してくれませんでした。
 "raspistill"コマンドのソースが公開されているので、それらを解析して、画像取得部分を取り出さないとダメなのかなぁ?面倒だなぁ?なんて躊躇している間に、世の中にはさっさとやってくれている人がいらっしゃいました。他力本願ですが、こちらのサイトで公開されている資料やソースをそのままコピー&ダウンロードして、使わせて頂くことにしました。
 ただ、開発環境の方は、先日から評価版インストールでお試し中のVisualGDBです。頂いてきたソースをそのままWindows上のViisualGDBのプロジェクトに登録して、Makefile settingsの部分を環境に合わせて(include,libのパスと使用するlibの設定)、SSH接続でのRaspberry Pi上でのコンパイルで実行してみました。

 プロジェクトの構成はこんな感じ。


 Makefileの設定。


 includeパス。


 libraryパス。


 library。


で、ビルドして実行してみました。


 サンプルはOpenCVのcvWindowで画像を表示して、ファイルfoobar.bmpに保存するような内容ですが、その通りの動作(当たり前か?)です。実際のOpenCVのコードが書かれている部分をステップ実行で探したところ、camcv.c の encoder_buffer_callback関数内で行われていました。1フレームのデータが取得されてエンコードされたあとに呼び出されるような関数でしょうか?その中でOpenCVの処理を行っています。この部分に顔検出やらそのほかのOpenCVの処理を追加していけばいいのだと思うのですが、raspstillコマンドのソースを元にしているためもあって、全体のコードがやりたいことに対して大きくなってしまいますね。もう少しシンプルにcameraモジュールを使う方法があるといいんですけど。他のUSB webcamみたいにOpenCVで扱えるといいんですが・・・。
 なんか、この感じだと、専用cameraモジュールを使うよりもUSB webcam使ったほうが、Raspberry Piから少し離れたところへの引き回しや固定(専用cameraモジュールは15cmくらいのリボンケーブルで基板むき出し)しやすいし、ソフトウェア的にもOpenCVが素直に認識してくれれば(最近のUSB webcamならUVC対応で、たいがい認識してくれるだろう)、全然楽な気がしてきました。う~ん、使い道が・・・。






VisualGDBでBeagleBone Blackも試してみました。

 先日、VisualGDBでRaspberry Piを試しましたが、今回は、BeagleBone BlackにVisualGDBが使えないか試してみることにしました。VisualGDBはRaspberry Piをサポートしているので、SSH接続でのターゲット上でのコンパイル開発もWindows上でのクロスコンパイラによる開発もサポートしていますが、BeagleBone Blackはサポートされていないので、Windows上でのクルスコンパイラは無理だと思います。しかし、同じARM Linux (ディストリビューションは違うけど)へSSH接続してターゲット側でコンパイルするのであれば、ターゲット側に元々gccやgdbの環境さえ動いていれば、同じように利用可能なんじゃないか?と思ったわけです。実際、VisaulGDBのメニュー画面の記述も「LinuxのターゲットにSSH接続して・・・」的な記述なので、SSH接続してターゲット側でコンパイルするパターンであればx86だろうがARMだろうが、あるいはディストリビューションに関係なく、もともとセルフ開発できてSSH接続できる環境がターゲットにあるなら使えるということを意味しているんだと思います。

 で、Lチカを試してみました。


 あっさり動いてしまいました。おそらく、少なくともコンソールアプリは行けそうです。






2013年9月10日火曜日

VisualGDBで Visual Studio を使ってのRaspberry Pi のクロス開発

 以前に、Debian Linux 上のEclipseから Raspberyy Pi のクロス開発を行う環境の構築について記述したことがありますが、ネットを徘徊している時に VisualGDB なるものを見つけたので、試してみることにしました。
 Visual Studio 2010 or 2012 のプラグインとしてインストールして、Raspberry Pi のクロス開発ができるというものです。残念ながら有料ですが、30日の体験版インストールが可能だったので、試してみることにしました。

 VisauGDBプラグインをインストールして、新規プロジェクトでVisualGDBを選択すると、いくつかのプロジェクトの種類が選択できます。


 Linux Project Wizard を選択すると、「Build the project under Linux over network」と「Build the project locally with a cross-compiler」が選択できる画面になります。

 「Build the project under Linux over network」はSSH接続でVisual Studio で編集したソースを Raspberry Pi 側(のリソースを使って)でビルドします。


こちらの方式では、ビルドにRaspberry Pi のリソースを使用するので、時間がかかります。HelloWorldくらいでは差はでませんが、OpenCVを使ったプロジェクトをビルドしたりすると、後のクロスコンパイラ環境に比べてかなり時間がかかって待たされます。ただし、ビルドのためのプロジェクトのプロパティの設定は比較的簡単です。Raspberry Pi 側でMakefileでビルドできる環境になっていれば、Makefileの中身相当のものをプロパティのフィールドに埋めていけばOKな感じです。

 これに対して、「Build the project locally with a cross-compiler」を選択すると、Windows上でWindowsマシンのリソースを使用してクロスコンパイラによるビルドが行われます。


こちらは、今どきのCorei7,SSDでメモリも数Gあるマシンならビルドはあっという間です。Raspberry Pi上にあるライブラリやヘッダファイルをどうするのかという問題が有りますが、環境の同期機能のようなものが有り、「同期」ボタンを押すだけで開発系のライブラリやソースをWindowsマシンのクロス開発環境のディレクトリにコピーして準備を整えてくれる機能が装備されています。ただ、自分がOpenCVを使ったプロジェクトをこちらの方式でビルドしようとしたところ、上手くビルドできず(ライブラリを見つけられず)、プロジェクトのライブラリのパス設定なども行ったんですが、今のところ上手く行っていません。たぶん、何かの設定ミスだと思うのですが、引き続き調査です。WiringPiを使ったプロジェクトはこちらのクロス開発でも上手くビルドすることが出来ました。

 このVisualGDBの凄いところは、どちらの方式でも Windows 上の Visual Stduio からブレークポイントを置いたデバッグが出来て、しかも、コンソールアプリだけでなく、OpenCVのアプリケーションのようなものでも Xサーバを使って、Windows上に実行画面を表示しながらデバッグできてしまうところです。



 このXサーバを使ったGUIアプリのデバッグ機能は正直驚きです。

 また、VisualGDB は Raspberry Pi 上での Qt4 での開発にも対応しており、


詳しくはこの辺のチュートリアルを見ていただくとして、やはり、Xサーバでの実行・デバッグが出来ます。


かなり、便利。問題は価格でしょうか。Raspberry Pi が3枚以上買えます。



2013年9月2日月曜日

LEGO 21103 BACK TO THE FUTURE デロリアン

 2週間ぶりの投稿です。ここのところ土日も仕事で本業の趣味の方が手薄になっています。この週末は私用があって仕事はおやすみしたので、積みレゴのなかから1つ作ることにしました。今回作ったのは、在庫の中で一番新しいもので、「LEGO 21103 BACK TO THE FUTURE Delorean time machine」です。楽天のトイザらスで国内発売のものを予約しようと思ったら、品切れになっていたので、Amazonで若干割高で並行輸入品を買いました。


 パッケージ裏側にはBACK TO THE FUTURE Ⅰ~Ⅲ のデロリアンが再現できる旨が載っています。


 このデロリアンはもともと LEGO CUUSOO から発案されたもののようです。計器類等のシールも凝っています。
 箱を開けて部品を取り出したところ。パーツ数はそれほど多くなさそうですが、出来上がるデロリアンのスケールを考えると、意外とたくさんパーツが有るな、と感じました。



 外側をブロックで囲って中は隙間になる感じかと思っていたんですが、実際にはプレートをきっちり積み上げていって、1ポッチの細かい部品などが多く使われていて、結構、作りがいがありました。また、自分は初めて見るようなタイプのブリックも幾つもあったので勉強になりました。


 ガルウィングも再現されています。ミニフィグはマーティ(スケートボード付き)とドクが付いています。


 内部の計器類もシールで再現されていて、マーティを座らせることもできます。(ドクは髪の毛の高さがあるので、車中に入れるときに少しひっかかります。)
 デロリアンの主な可動部としては左右のガルウィングドアとタイヤ四輪の回転と(飛行形態になるときの)折りたたみです。
 車両後部のエンジン(ブースタ?)のダクトの斜めの再現などのブリックの使い方に、こんな使い方もあるんだなぁ、と感心させられるところも多かったです。
 自分は、にわかレゴファンになってから、テクニックシリーズとマインドストームが中心なので、ビームとペグとシャフトばっかり使うことが多いですが、プレートやブロックも使って何か形にしてみたくなりました。