February 03, 2009LiPo電池 400mAh 600mAh開発をほぼ終えたカメラモジュール用の電池を入手しました。LiPo(リチウムポリマー)の1セル(3.7V)で、容量は400mAhと600mAhです。LiPoは専用の充電回路を用意しなければならない等、その取り扱いには十分な注意が必要ですが、軽くて容量が大きいのでとても便利です。基板面積を小さく抑えたかったカメラモジュールにLiPoの充電回路を内蔵するのはかなり至難の技でしたが、電池が大容量で軽いメリットを考えると、その苦労も大変報われるものです。 入手先は耳掛け音楽プレーヤー Timpyで有名なchiakiさんのサイトからリンクがあった香港のラジコンショップ Hobbycityを利用してみました。価格が驚異的に安く、400mAhと600mAhを2個ずつ頼んで、送料込みで20ドルいきませんでした。激安です。 February 12, 2009Super Sylphide 進捗状況(23) -- 下位プロトコルの策定オートパイロットシステム Super Sylphideですが、地上側のソフトウェアが整備されつつあり、通信環境に関する作業を中心に行っています。そこで問題となったのが、通信プロトコルや通信回線の太さといった極めて泥臭い話、すなわち試行錯誤が要求される部分を決定しなければならないということでした。今回のその試行錯誤の一端として、決定した下位レベルのプロトコルの話を紹介したいと思います。 現在Super Sylphideのログデータは32bytesの固定長で一つの意味単位(仮にページと呼ぶことにします)を形成しています。その32bytesの先頭バイトがそのページの性格を示しており、例えば'A'ならばセンサのA/D変換結果、'G'ならばGPSからの情報が中には入っているよ、ということを示す仕様にしてありました。 SDカードに記録されたログデータを解析する分には頭出し、つまりどこからページがはじまるかわかっており、なおかつデータの完全性も保障されているのでパースが簡単です。しかしこの32bytes固定長仕様のログデータを、リアルタイムに通信でやり取りしようとすると、どこが先頭なのか認識できない、ましてや途中でデータが途切れるおそれがあります。そこでこのデータを包み、頭出しとデータの完全性を確認する機能を追加する下位プロトコルを策定することになりました。色々と検討した結果、以下の図のような仕様としました。 ヘッダ(12bits、0xF7E)は頭出しを簡単に行えるようにするためのもので、いままでのログデータから最も出現頻度が低い組み合わせを選びました。ヘッダに続く4bitsはこの意味単位の性格づけ(要返答など)をするために予約としました。続く2bytesはシーケンス番号で、トランザクションを構成する際に利用します。その後には32bytes固定長ページが続き、最後に付加したCRC-16によってデータの破損がないか検出できるようにしました。データの破損は付加されているCRC-16と受信側で新たに計算したCRC-16を比較し、不一致の場合はデータが破損していると判断、次のヘッダがでてくるまで受信結果を破棄するようにしました。 この下位プロトコルを用いた通信の実験をSuper SylphideをUSBでパソコンに接続し行った結果、良好に動作していることを確認しました。データの破損検出については、通信に使うエンドポイント以外をbulk転送で埋めると、転送速度が落ちデータの歯抜けがおきることを利用して確認しました。通信回線を無線のXBeeに置き換えた場合どうなるかが、最大の山場です。近いうちに実験をしてみたいと考えています。 ※DSPの開発が一段落したので、DSPの開発遍歴についてまとめました。 February 18, 2009『猫カメラ』 試作中こんな怪しいサイトを構えていると色々な話が舞い込んできますが、カメラモジュールを役立てていただける方が現れました。例によって未踏がらみなのですが、猫にぶら下げるカメラがほしいとのことでした。題して『猫カメラ』。 写真にあるとおり、設計と実装が完了しました。カメラに加えて、GPS、Bluetooth、加速度計などが組み込まれています。サイズは2 x 1.4inch(約51 x 36 mm)です。回路図やファームについては、動作確認が取れ次第公開しようかと考えています。 なお、使い方について色々倫理的なことを考えだすと厳しいものがあるかもしれませんが、技術的には大変面白い企画だと思います。これならMake:のイベントに出せますかね(笑) ※(2009/10/31追記)カメラの部分が気に食わない事態が発生したのでVer.2を作成中ですが、このバージョンのEagleの回路図と基板レイアウトを公開します。 ※※(2010/4/11追記)装着するとこんな感じに。
被写体は依頼人の米澤氏のところのレナさん。研究成果はCat@logにまとめられています。ちなみにリンク先の動画内の動画は別のデバイスを使って撮りました。このデバイスではそこまでスムーズな動画は撮れません(Ver.2でもQVGAで5fps程度です)。 ※(2010/5/18 追記)Make Tokyo Meeting 05で展示します!! February 25, 2009Rails 2.2以降 + PassengerでRailsBaseURIが機能しない
[Computer]
某プロジェクトの関係でソースコードを共有する仕組みを考えていたのですが、最近はgithubを使うのがはやりのようです。これまではsubversionを使っていたのですが、よい機会だと思いgitに手をだしてみることにしました。そこでgithubを使おうと思ったのですが、はじめはソースをプライベートの状態で開発を開始したいとの申し出でしたので、githubを前提とするならば有償サービス(最低7ドル、機能対価格表)を利用しなければいけないようでした。そこでgithubクローンで、かつ、rails上で動くオープンソースのgitoriousを試してみることにしました。今回の記事はそのインストールで躓いた部分の備忘録です。 gitoriousにはインストールレシピがあり、ubuntu用チュートリアルを参考に行いました。基本的にそのチュートリアルをなぞればパッケージの導入自体は完了しました。railsをapacheと協調動作させるためのpassenger(いわゆるmod_rails)については、プロジェクト管理ツールのredmineを前回インストールした際に導入済みでしたので、これといって難しいこともありませんでした。 このチュートリアルを元にインストールをすると、gitoriousを動作させるサイトは(バーチャル)ホストのルート(要はhttp://gitorious.naruoka.org/のようなURL)になりますが、それではいやなので、passengerのマニュアルに従って、動作するURLを1階層下に落とす(http://www.naruoka.org/gitorious/のようなURL)ことにしました。RailsBaseURIをapacheの設定ファイル内で宣言するなどすればよいようです。 しかたがないのでエラーの箇所を突き止めるべく、ソースを弄りだします。まずは404のページだけではデバックのしようがないので、404ページをリンダリングしているrails提供のファイルgitorious/app/controllers/application.rbのApplicationController.render_not_foundメソッドをrender :text => $!.inspect + $@.inspectとして、エラー情報を吐き出させるようにしました。するとgitorious/vendor/rails/actionpack/lib/action_controller内でURLが解決できなく困っているようです。『ActionController RailsBaseURI』をキーワードに検索すると、『RailsBaseURI and relative_url_root』という、まさしく探していた情報が手に入りました。どうやらRailsに付属するActionControllerの仕様が2.2から変更されたために生じた問題のようです。実際、vendor/rails/actionpack/lib/action_pack/version.rbを見てみるとgitorious付属のrailsのバージョンは2.2.2とありますので、どうやらこの原因で間違いがないようです。 解決方法を探ってみると、結局config/environment.rbから呼び出される環境別の設定ファイルconfig/environments/production.rbにおいて、config.action_controller.relative_url_root='/gitorious' とすることで解決できました。散々引っ張っておきながら、これだけで解決してしまうあたりがなんともフレームワークを利用しているという感じです。こんな簡単に解決する話なら、gitorious本家のマニュアルにも書いておいて欲しいものです。 |
かれんだ~
スポンサード リンク
|