タグ

ブックマーク / xanxys.hatenablog.jp (25)

  • Ricoh THETAのEXIF (回転を読むためのPythonコード付き) - ⊥=⊥

    追記 (2014/2/12) 2014/1/30のアップデート(https://theta360.com/ja/info/news/2014-01-30-2/)で、Sphere XMPフォーマットでも回転情報が埋め込まれるようになったようです。 Photo Sphere XMPはAdobeのメタデータ形式であるXMPをGoogleが拡張したもの(https://developers.google.com/photo-sphere/metadata/?hl=ja)で、ちゃんとドキュメントもあるので新しいデータについてはこちらを使うほうがよいでしょう。 はじめに (主にVR界隈で?)最近人気のthetaですが、 公式のviewerでみるとちゃんと向きが自動で調整されるんですが、中に入ってるjpegはこんな感じで向きの補正はされてません。 もちろん、撮った写真を見るだけなら公式サイトにアップロー

    Ricoh THETAのEXIF (回転を読むためのPythonコード付き) - ⊥=⊥
  • しょぼいネットワークのレイテンシーについて - ⊥=⊥

    さて、oculus riftみたいなデバイスが手元にあると、いろんな場所から部屋の様子を(深度)カメラで撮りたいなーと思ったりするわけです。順当に考えると有線LANを使うのがよい気がしますが、気になるのは遅延です。そこで今回は1日ぐらいpingしつづけた結果を書こうと思います。 条件 私はネットワークは趣味じゃないので、使ってるスイッチングハブとかはcoregaとかIO DATAの1000円ぐらいのやつです。今回関係しそうな部分の接続を書くと以下のような感じになります。 これでpingを次の二つに送ってRTTを調べます。期間は1日ちょっと、負荷は特にかけずに「普通に」使用します。 malkuth → daath malkuth → keter 今回気になるのは、ハードウェアに起因する遅延と言うよりも、特に何も考えずに設定したネットワークでDHCPの何かとかOSにかかる負荷みたいなソフトウェ

    しょぼいネットワークのレイテンシーについて - ⊥=⊥
    yuiseki
    yuiseki 2013/05/12
  • Leap Motion + Kinect - ⊥=⊥

    Leap Motionが届いたので、前からやってみたかったkinectのスケルトンデータとの統合をやってみた。 Leap Motion? ちょっと早めに届いてたひとのレビュー http://blog.livedoor.jp/k_yon/archives/52452827.html http://blog.impartech-lab.org/?p=114 を見るといいと思います。 LM + kinect こんな感じで配置してみます。 で、kinectからのデータと、leapからのデータを適当に変換してやればいいのですが、どちらも右手系で、mとmmが違うだけなので簡単です。とりあえず適当にメジャーで測った精度の悪い定数をハードコードしてます。 すると・・・ 一応動いています。が・・・ 世の中に魔法はない! とりとめのない感想 ポジティブなレビューは他の人に任せておくとして、実際何には使えなさそ

    Leap Motion + Kinect - ⊥=⊥
  • グラフィカルCUIの可能性 - ⊥=⊥

    こういう感じのシェルを書いてました。格子の1マスを占めるタイルが単一の機能に相当し、角にある白(出力)と黒(入力)の三角を結んでデータをやりとりします。 左上にあるのが新規プロセス作成タイルで、残りは左下から流れに沿って、 ls 文字列バッファ grep 文字列バッファ という風になっています。lsとかgrepのような普通のコマンドはファイルデスクリプタ0,1,2が露出するごく標準的なものですが、文字列バッファというのがちょっと面白いかと思います。 文字列バッファというのは、入力と出力がひとつずつあって、入力されたデータは全て保存しておいて、出力側に何かつながると順次FIFOで出していく、というものなのですが、おもしろいのは保存されてる分が可視化されることです。 無名でデータをおいて置けるので、普通のshellを使っていてありがちな、なにか実行してあとからデータ欲しいが流れてしまって再現も

    グラフィカルCUIの可能性 - ⊥=⊥
    yuiseki
    yuiseki 2012/04/07
  • 指から文字がどんどん出てくる:5日目 - ⊥=⊥

    さて、しばらく日が空いてしまいましたが、ようやく光通信でプログラムを更新できるようになりました。 クレードル こんな感じで、書き込みはarduinoに制御させてます。ちなみに二枚目の写真に写ってる指輪は、デバッグ用のために同じ回路でISPコネクタを付けて作ったものです。発電用のフォトダイオードの数に余裕が無いので電源はケーブルから供給してます。 こんな感じでクレードル(XFR1P)と指輪(XFR1)の間は 外側:青色光: 給電 内側:赤色光: リセット 側面:赤外線: 通信(half-duplex) という三種類の光でリンクが張られます。青と赤の選択には特に意味はありません こんな感じで内側が赤く光ると、リセットピンにぶら下げてあるフォトトランジスタによってassertされます。XFR1のブートローダは、リセット後に赤外線が出ていればデバッグモードに入り、そうでなければ通常モードでユーザプ

    指から文字がどんどん出てくる:5日目 - ⊥=⊥
    yuiseki
    yuiseki 2012/03/23
  • ファンクションジェネレータつくりました - ⊥=⊥

    かなり以前に0.5mmの壁として作り始めて放置していたファンクションジェネレータですが、ようやく完成したのでここにまとめておきます。 概略 前々から何かとファンクションジェネレータがあれば・・・と思う場面があって、機会があれば作ってみたいと思っていました。とはいえこういう「地味な」工作は途中で投げ出すことも多いので、次のような方針で作ることにしました。 できるだけ手持ちの部品のみで作る (際限無い機能追加を防ぐ) 「ケースに入れるまでが電子工作」 (実用する) それに伴って 最低限の機能に絞って、〜1MHzは綺麗な波形、〜20MHzまで減衰ありでなんとか出せる、周波数精度はそれなりに重視する。 という仕様を決めました。 そこで手元にはCPLD(XC2C256)があったので、DDS*1方式にして、R-2R DACを通した後、振幅とオフセット調整はアナログ的に行う、ということにしました。 DD

    ファンクションジェネレータつくりました - ⊥=⊥
    yuiseki
    yuiseki 2012/03/22
  • 指から文字がどんどん出てくる:4日目 - ⊥=⊥

    色々と要素を検証してきた結果、ようやく指輪のスペックが固まって来ました。 左の部品群をなんとかリング状にまとめれば(たぶん)完成です。右はデバッグ用。 電力 2日目ではフレキシブルなパネルを試してましたが、切断すると断面でショートしてしまうのか、効率がかなり低下するようです。そこで、わりと大きめのフォトダイオードをアレイにする方針に切り替えました。写真に写ってるS6775を8個直列にすると、室内でも2V以上で数μAが確保できるようで、これならなんとかなる気がします。 通信 ちょっと不意ですが、とりあえず動くのが分かっている赤外線通信にします。ただ、通信速度はプロトコルを工夫すれば改善する可能性が高いので↓の話に続きます。 ファームウェア更新 通信速度向上・その他の変更はできるほうが良さそうなので、後からファームウェアを書き換えたいわけですが、コネクタ付けるのはちょっと・・・という問題があ

    指から文字がどんどん出てくる:4日目 - ⊥=⊥
    yuiseki
    yuiseki 2012/03/18
  • 指から文字がどんどん出てくる:3日目 - ⊥=⊥

    1日目にはスロットという概念を導入し、接触による交換を基とした(というかそれしかできない)操作モデルをつくりました。が、同じ文字列を何回も入力するのはどうするか?とか、使わずに破棄するにはどうするか?といった問題が発生します。そこで、操作は変更せずにスロットを拡張することで解決を試みます。 形式変換・複製・破棄 さて、実は前回にひっそりと「各スロットは自分の持っている文字列を何らかの方法で示してもいいし、示さなくてもいい」と書いていました。これはスロットが内部に保持しているデータを自動でコピーして、それを人間が読める画像に変換していることに他なりません。この見方をすると、例えば文字列をQRコードとして表示するとか、読み上げるとか、いろいろなバリアントが考えられます。 そして形式を維持した複製には、主スロット+副スロットがあって、副スロットの内容を頻繁に主スロットの内容で上書きする、という

    指から文字がどんどん出てくる:3日目 - ⊥=⊥
    yuiseki
    yuiseki 2012/03/16
  • 指から文字がどんどん出てくる:0日目 - ⊥=⊥

    最近、音声・動画の使用はずいぶん増えましたが、テキスト形式のデータの重要性が低まったということはありません。 そもそも、人間にはいわゆる五感があって大量のデータを処理できるのに対して、出力は驚くほど貧弱で、基的にどこかの筋肉を動かすしか無いわけです。ここに大きな非対称性があります。 自然言語などではわりと大量のまとまりを覚えておくことができ、視覚・聴覚による入力と、出力の速度差はせいぜい数倍に収まっています。これには表現の揺らぎの許容が大きく寄与しています。 が、URLやIPアドレスのような識別子ではそうはいきません。多くの場合、全ての可能な識別子を扱ってはおらず、その時考えているいくつかのうちの「あれ」「それ」と見て取れます。しかし、実際に文字列としては書き出せないということになります。 これは不自由です。クリップボードを使えば良いのですが、異なるデバイス間で運用できません。もちろんw

    指から文字がどんどん出てくる:0日目 - ⊥=⊥
  • 指から文字がどんどん出てくる:2日目 - ⊥=⊥

    指輪型で問題になるのはなんといっても電源確保でしょう。いわゆるエナジーハーベスティングです。 貯蔵には電気二重層キャパシタを使うことになるでしょうが、耐圧3Vなら1Fぐらいまで詰め込める可能性はあります。が、Vccに直接ぶらさげるとある電圧幅でしか使えないので、自由に使えるのはせいぜい1Jぐらいです。これは例えばAVRをフルスピードで1分ぐらい動かせるエネルギーです。通信にせよ・センシングにせよmsオーダでやって他はスリープさせるので、実際の使用で1日分ぐらいは持たせることができるということになります。(キャパシタの漏れ電流を考えなければ) となると問題は1日あるいは1時間ぐらいの時間平均をとったときの、発電と消費の収支に移ります。前者が後者を上回るなら当にどこからともなくエネルギーを取り出しているように見えます。もちろん、この指輪は給電されているデバイスに近づけて使うのだから、そこで無

    指から文字がどんどん出てくる:2日目 - ⊥=⊥
  • 指から文字がどんどん出てくる:1日目 - ⊥=⊥

    ちょっと具体化してみます。 デバイスの形態 さて、とりあえず外せない条件を並べてみます。 指輪型デバイス 指先で触ることで文字列をやりとりする そして触る先ですが、見せかけは指先を通じて文字列が移動しているが実際はwifiを使っているとか、そういうのは避けて、できるだけ操作の感覚と実装を近づけたい、という目標があります。 前回のエントリではアドレスの入力を例に挙げましたが、往々にしてそういう場面ではネットワークは使えなかったりもします。だから、文字入力はキーボードと同じレイヤー、つまりUSB HIDとして動作するのが好ましい。 そして、そもそも文字列がどこから来るかについてですが、とりあえずクリップボードか何かと同期するのがいいんじゃないかな?と思います。つまり、 USBキーボードのフリをして、指輪から受け取った文字列を伝えるデバイス どこかのクリップボードの内容を表示し、触るとその文字列

    指から文字がどんどん出てくる:1日目 - ⊥=⊥
  • 一日のクリック回数 - ⊥=⊥

    普段PCを使っていて一日に何回ぐらいクリックしてるのか気になったことはありませんか?ということで調べてみました。 調査方法 /dev/input/mouse0にマウスのイベントが流れてくるので、それを解釈してクリックのログを取ります。フォーマットはどこかのフォーラムの発言を参考にしました。 使ったコード import Control.Concurrent import Control.Monad import Data.Time import Data.Bits import qualified Data.ByteString as BS import System.IO main=do withBinaryFile "/dev/input/mouse0" ReadMode $ record record hMouse=do hSetBuffering hMouse NoBuffering

    一日のクリック回数 - ⊥=⊥
    yuiseki
    yuiseki 2012/03/08
  • 写真内の相互情報量 - ⊥=⊥

    さて、画像処理では区分的に滑らかであるという仮定をよく用います。これは我々から見た世界が大方はっきりした境界を持つ物体と透明な空気によって成りなっているという(まっとうな)前提から導かれます。で、多くの場合(主にCG)もっとてきとうに、とりあえずbilinear補間使おうとか、Mitchellフィルタかけておこう、となるわけです。 さて、実際の画像はどうなっているのでしょうか?ここでは画像内の全てのピクセルの組み合わせについて相互情報量を計算することで、ある点が近くの別の点にどのぐらい影響を及ぼすか、ということを調べて見ることにします。基底の形に直接対応するわけではありませんが、参考程度にはなるでしょう。 というわけで、前(Scene Completion Using Millions of Photographs)にも使った、flickrから持ってきた風景写真10万枚ほどを次のように処理

    写真内の相互情報量 - ⊥=⊥
    yuiseki
    yuiseki 2012/01/11
  • 自己複製系と意味 - ⊥=⊥

    ある系の環境からの独立性は、環境の変化に対する安定性で測れます。例えば結晶の成長過程は、結晶がその環境から必要な物質を引っ張ってきて、単位格子が増殖している、とも見れます。しかし温度変化や不純物に敏感で、通常は自己複製系としては扱いません。*1 一方、明確な自己複製系として細胞があり、これはかなり安定、かと思いきや、単にある物質濃度が高いだけで複製が止まったりしますし、生命が結晶とどう違うのかはそんなに明白ではありません。 ここでは生命がなんであるかは脇に置いて、次の定義を満たすものを自己複製系と呼びます。 有限の空間的なパターンであって、環境変化に対して安定で、環境から内部で使用可能なエネルギーを取り出し、時間の経過によりそのパターンを複製するもの。 さて、問題なのは「環境変化」とか「安定」とか「複製する」とか「内部で用いることの出来る」、あたりだと思います。まず、「安定」と「複製」は、

    自己複製系と意味 - ⊥=⊥
    yuiseki
    yuiseki 2012/01/11
  • 意味の広がりと通信 - ⊥=⊥

    さて、以前の記事(自己複製系と意味)では、はっきりとした区切りのない場に、ある共通の意味*1を運用できる個体群が含まれる*2場合がある、ということを、エントロピーの観点から見てました。今回は逆に、実際よく使われている通信の概念を、自己複製に寄せていくことができるか検討してみます。 さて、通信というとShannonのモデル*3が有名で、これはsource-transmitter-channel(+noise)-receiver-destination、という5つの部分からなる構成です。情報源(source)から出てくるのは、文字だったり、関数だったりするわけですが、別にもっと抽象的なものであってもかまわないわけです*4で、送信機(transmitter)がそれを何であれ予測可能な形で伝搬するものに変換します。ここでは電磁波のような物理現象*5が用いられることが多いです。この時点で制御を手放し

    意味の広がりと通信 - ⊥=⊥
    yuiseki
    yuiseki 2012/01/11
  • 3dプリンタ作り始めました - ⊥=⊥

    さて、以前にSLS方式(レーザで粉末を固めるタイプ)で失敗したりもして、その後3dプリントからは離れていたのですが、近頃iModelaなどを見ていると、やっぱり手元に欲しいな〜という気持ちが強くなってきました。 そこで、今回はFDM方式(溶かしたプラスチックで線を描くタイプ)でとりあえず動くものを作ってみようということになりました。手持ちの部品*1を有効活用したいのと、bootstrapするところは自分で体験したいな〜ということで、RepRapの資産は使わずに自前でするつもりです。が、たぶん出来るものはHuxleyみたいなかんじになると思います。 また、今回のプロジェクトでは文書はGoogle Docsで管理することにしたので、それを最初から公開しつつやってみようと思います。 https://docs.google.com/leaf?id=0B6zCoyeuDn-pOTNkZGY3Y2It

    3dプリンタ作り始めました - ⊥=⊥
    yuiseki
    yuiseki 2011/11/27
  • 3dプリンタつくりました - ⊥=⊥

    さて、3dプリンタつくる宣言*1 してから早1.5ヶ月が経ち、ようやく「これは3dだ!」という感じの物体が印刷できるようになったので報告します。 (モデルはThingiverse*2の3D Knot) ・・・うーん。やけに凸凹してますが紛れもなく結び目に見えますね! 以下ではとりあえずプリンタ体、この印刷物、今後の方針について、とつらつら書いていこうかと思います。 体 さて設計のかなりの部分についてはGoogle Docsで公開している*3ので、あらましだけ書きます。基的に今回の設計の方針は手持ちの部品を有効活用するということなので一万円かかってませんが、再現しようとすると5万円越えると思います。3dプリンタが欲しい人は素直にreprap系のキットや完成品を買うのが得策でしょう。 これが全体の概要図です。STLモデルビューア+Gコード生成するページを書いておいて、それで生成したGコー

    3dプリンタつくりました - ⊥=⊥
    yuiseki
    yuiseki 2011/11/26
    cool
  • 3dプリンタ経過報告〜押出 - ⊥=⊥

    さて、以前に3dプリンタつくる!と宣言してからひと月、最も懸念していたフィラメントを高温で押し出す部分が安定動作するようになりました。 構成は PC (仮想COM / USB) STBee mini (UART)*3 X軸制御 Y,Z軸制御 ヒータ・押し出し制御 という感じで、今はSTBee上のインタラクティブなシェルでコマンドを打って操作してます。最終的にはSDカードからデータを読み取って、スタンドアローンで動作させる予定です。 実際X軸はもう動くので、あとはY,Z軸制御基板を適当に作って、STLから制御用のデータを生成する何か(ここはWebGLで)を書くだけです。 …と順調に行くと良いのですが。

    3dプリンタ経過報告〜押出 - ⊥=⊥
    yuiseki
    yuiseki 2011/11/11
  • Minecraftにみる世界の「完全性」 - ⊥=⊥

    さて、所謂箱庭ゲームで重要なのは 適度な自由度(世界へ局所的にしか干渉できないものの、その痕跡は残せること) 作ったものを眺める楽しみ などだと思うのですが、これらを実現するひとつの方法として、何らかの(それほど複雑でない)規則でシミュレーションを行う、というのが挙げられるかと思います。 そこで今回はMinecraftを例にとって、計算と自己複製の観点からその世界の性質を見てみます。 (この記事はMinecraftそのものに対する批評ではありません!) 概要 Minecraftがどんなゲームなのかは実況を見るなり実際にプレイ(注:最新版は有料)するなりして頂くとして、ここからはある程度知っていることを前提に概要を示します。 まず特徴的なのは、この世界の要素は連続的か離散的かで大きく二分できるということです。そして、離散的な側は自明ではないもののセルオートマトン(以下CA)として扱えます。と

    Minecraftにみる世界の「完全性」 - ⊥=⊥
    yuiseki
    yuiseki 2011/09/17
  • グラフ彩色とパス表現 - ⊥=⊥

    無向グラフについて、k色のうちいずれかをそれぞれの頂点に割り当てたとき、全ての辺の両端が異なる色ならばそのグラフをk-彩色可能といいます。平面埋め込み可能なグラフは全て4-彩色可能というのが、有名な四色定理です。 さて各頂点がある埋込みの中の位置を表していると考えると、隣接する位置の色が異なる、つまり互いに区別できるという解釈ができます。しかし、図の左上の水色の頂点がふたつの桃色の近傍をもっているように、微小な領域での「向き」を一意に区別することはできません。 そこで、それを可能にする彩色を考えてみると、次のように表現できます。 すべての頂点について、自身とその近傍の色が全て異なるk色でこの条件を満たせるグラフを、ここでは仮にk-追跡可能と呼ぶことにしましょう(この条件の一般的な名称を知っている方がいたら教えてもらえると嬉しいです)。また、グラフGの彩色、追跡それぞれの最小色数をχ(G)、

    グラフ彩色とパス表現 - ⊥=⊥
    yuiseki
    yuiseki 2011/08/25