Scaffold開発日記1: 万能機械に向けて ~ モジュラーロボットの現状と失敗例

万能機械? ターミネーターの液体金属的なロボットとか、いろんなSFにでてくるナノマシン霧みたいなものに昔から憧れています。 これらの機械の万能性は以下の特徴をもってある程度定義できると思います。 任意の形状に自力で変形できる 各部分の機能(力の発…

壁に優しいHTC Viveのセットアップ (+メイキングもあるよ)

ベースステーションが落ちてくる! (記事の最後の方にDMM.makeのリンクがあるので欲しい人はそこから買ってください) 半月ほど前にHTC Vive買いました。Oculus Touchが発売されてない現状、Viveは普通に買える最もハイエンドなVRデバイスなわけですが、コン…

EC2(g2.2xlarge)でOpenGLを使う方法

EC2上でGPUを使って何かをさせるというのを比較的よく見かけるようになりました。 CUDA/OpenCLを使う例は多いですが、OpenGL(のオフスクリーンレンダリング)を使いたい場合もあると思います。例えば、WebGLを使う3Dコンテンツのサムネイル画像をサーバー側で…

PNaClでOpenCVを使う方法

2014年の初めぐらいにOpenCVがPNaCl(つまりPPAPIを使うLLVM IR)用にコンパイルできるようになったという話題がありました。たしかにOpenCV公式サイトの1/9のニュースが存在しているのだけど、実際に動かしてみたという例は2ヶ月ほど経った今でも見かけていま…

SublimeのPackage Controlへ自作packageを登録する方法+α

さてSublime TextというとEmacserやvimmerも黙る(?)モダンな大人気エディタですが、その人気の結構な部分はPackage Controlにあるでしょう。 というのも、だいたいの紹介記事では「まずPackage Controlを入れましょう」と書いてありますし、見かけたpackage…

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…

三次元回転の確率分布

唐突ですが、三次元空間内での回転の確率分布というのを考えてみます。回転の距離、回転の表現、超球面上の分布、回転の分布、という順番に見ていきます。 回転の距離の定義 まず、単一の回転の角度、というのを考えてみましょう。不変な場合は0になって欲し…

しょぼいネットワークのレイテンシーについて

さて、oculus riftみたいなデバイスが手元にあると、いろんな場所から部屋の様子を(深度)カメラで撮りたいなーと思ったりするわけです。順当に考えると有線LANを使うのがよい気がしますが、気になるのは遅延です。そこで今回は1日ぐらいpingしつづけた結果を…

Leap Motion + Kinect

Leap Motionが届いたので、前からやってみたかったkinectのスケルトンデータとの統合をやってみた。 Leap Motion? ちょっと早めに届いてたひとのレビュー http://blog.livedoor.jp/k_yon/archives/52452827.html http://blog.impartech-lab.org/?p=114 を見…

手動エスケープは有害である

多くのプログラミング言語は文脈自由文法を使って文法を定義している。その結果、ソースコードは綺麗な階層構造を持つことになる。そして意味が抽象構文木に対して定義される・・・・本当にそれだけだろうか? def add(x,y): """ 2数を足す """ return x+y …

スケールと記述体系の階層構造

ここ半年ほど、わりと数字の計算をもりもりする用途でPythonを使っていまして、思ったことをつらつら書きます。 numpy Pythonにはnumpyというライブラリがありまして、これは裏でLAPACKみたいな黒魔術産物を呼んで高速に計算しつつ、いわゆるPython風な書き…

グラフィカルCUIの可能性

こういう感じのシェルを書いてました。格子の1マスを占めるタイルが単一の機能に相当し、角にある白(出力)と黒(入力)の三角を結んでデータをやりとりします。左上にあるのが新規プロセス作成タイルで、残りは左下から流れに沿って、 ls 文字列バッファ grep …

指から文字がどんどん出てくる:5日目

さて、しばらく日が空いてしまいましたが、ようやく光通信でプログラムを更新できるようになりました。 クレードル こんな感じで、書き込みはarduinoに制御させてます。ちなみに二枚目の写真に写ってる指輪は、デバッグ用のために同じ回路でISPコネクタを付…

指から文字がどんどん出てくる:4日目

色々と要素を検証してきた結果、ようやく指輪のスペックが固まって来ました。 左の部品群をなんとかリング状にまとめれば(たぶん)完成です。右はデバッグ用。 電力 2日目ではフレキシブルなパネルを試してましたが、切断すると断面でショートしてしまうのか…

指から文字がどんどん出てくる:3日目

1日目にはスロットという概念を導入し、接触による交換を基本とした(というかそれしかできない)操作モデルをつくりました。が、同じ文字列を何回も入力するのはどうするか?とか、使わずに破棄するにはどうするか?といった問題が発生します。そこで、操作は…

指から文字がどんどん出てくる:2日目

指輪型で問題になるのはなんといっても電源確保でしょう。いわゆるエナジーハーベスティングです。貯蔵には電気二重層キャパシタを使うことになるでしょうが、耐圧3Vなら1Fぐらいまで詰め込める可能性はあります。が、Vccに直接ぶらさげるとある電圧幅でしか…

指から文字がどんどん出てくる:1日目

ちょっと具体化してみます。 デバイスの形態 さて、とりあえず外せない条件を並べてみます。 指輪型デバイス 指先で触ることで文字列をやりとりする そして触る先ですが、見せかけは指先を通じて文字列が移動しているが実際はwifiを使っているとか、そういう…

指から文字がどんどん出てくる:0日目

最近、音声・動画の使用はずいぶん増えましたが、テキスト形式のデータの重要性が低まったということはありません。そもそも、人間にはいわゆる五感があって大量のデータを処理できるのに対して、出力は驚くほど貧弱で、基本的にどこかの筋肉を動かすしか無…

一日のクリック回数

普段PCを使っていて一日に何回ぐらいクリックしてるのか気になったことはありませんか?ということで調べてみました。 調査方法 /dev/input/mouse0にマウスのイベントが流れてくるので、それを解釈してクリックのログを取ります。フォーマットはどこかのフォ…

π算法とIO

ここでは次の記法を使います。 並行: P Q 入力: channel>(arg) P 出力: channel 複製: replicate P 制約: new(arg) P 空のプロセス: 何も書かない 同じインデントで並んでるのがconcurrencyで、インデントを下げた部分は時間経過+新しいスコープを表している…

静的型付けとeval

いわゆるweb系のものをHaskellで書いていて感じる窮屈さの理由はやはりevalが無いことに起因するんじゃないかと思うのでevalについて考えてみる。 命令型・動的型付け言語におけるeval こういう言語で提供されているeval(の類)はかなり強力で、モジュールの…

意味の広がりと通信

さて、以前の記事(自己複製系と意味)では、はっきりとした区切りのない場に、ある共通の意味*1を運用できる個体群が含まれる*2場合がある、ということを、エントロピーの観点から見てました。今回は逆に、実際よく使われている通信の概念を、自己複製に寄せ…

自己複製系と意味

ある系の環境からの独立性は、環境の変化に対する安定性で測れます。例えば結晶の成長過程は、結晶がその環境から必要な物質を引っ張ってきて、単位格子が増殖している、とも見れます。しかし温度変化や不純物に敏感で、通常は自己複製系としては扱いません…

写真内の相互情報量

さて、画像処理では区分的に滑らかであるという仮定をよく用います。これは我々から見た世界が大方はっきりした境界を持つ物体と透明な空気によって成りなっているという(まっとうな)前提から導かれます。で、多くの場合(主にCG)もっとてきとうに、とりあえ…

3dプリンタつくりました

さて、3dプリンタつくる宣言*1 してから早1.5ヶ月が経ち、ようやく「これは3dだ!」という感じの物体が印刷できるようになったので報告します。 (モデルはThingiverse*2の3D Knot)・・・うーん。やけに凸凹してますが紛れもなく結び目に見えますね!以下では…

3dプリンタ経過報告〜押出

さて、以前に3dプリンタつくる!と宣言してからひと月、最も懸念していたフィラメントを高温で押し出す部分が安定動作するようになりました。構成は PC (仮想COM / USB) STBee mini (UART)*3 X軸制御 Y,Z軸制御 ヒータ・押し出し制御 という感じで、今はSTBe…

3dプリンタ作り始めました

さて、以前にSLS方式(レーザで粉末を固めるタイプ)で失敗したりもして、その後3dプリントからは離れていたのですが、近頃iModelaなどを見ていると、やっぱり手元に欲しいな〜という気持ちが強くなってきました。そこで、今回はFDM方式(溶かしたプラスチック…

Minecraftにみる世界の「完全性」

さて、所謂箱庭ゲームで重要なのは 適度な自由度(世界へ局所的にしか干渉できないものの、その痕跡は残せること) 作ったものを眺める楽しみ などだと思うのですが、これらを実現するひとつの方法として、何らかの(それほど複雑でない)規則でシミュレーション…

グラフ彩色とパス表現

無向グラフについて、k色のうちいずれかをそれぞれの頂点に割り当てたとき、全ての辺の両端が異なる色ならばそのグラフをk-彩色可能といいます。平面埋め込み可能なグラフは全て4-彩色可能というのが、有名な四色定理です。 さて各頂点がある埋込みの中の位…

備忘録: 「空間」の用法

記事を書いた時点での、筆者のイメージによる空間の使い分け。定義を意識して使っているわけではないが、これらには考えの方向性の違いがある。 物理 古典的な物理学における解析的な場 上記に時間をつけ加えたもの 一部が離散化されたand/or確率的な場 上記…