1Click飲みRomoCartTempescope色色[:iroiro]Other Projects

2015年12月31日木曜日

河本の実験室の2015年のまとめ

今年も残り数時間となりました。
本業とtempescopeに集中していたため大した開発はできてませんが、今年作ったものや遊んだデータを振り返ってみます。
2013年のまとめ
2014年のまとめ


3月:140文字の「重み」を言語毎に比較してみた

ツイッターのデータを解析することで、140文字制限内ではどれぐらいの情報が伝えられるのか言語毎に比較してみました。思った通り中国語・日本語・韓国語が強いですね。


4月:山手線の混雑データで遊んだ

JRのデータをクローリングして山手線の車両の現在位置や車両毎混雑状況を解析して遊んでみました。公開されてないデータを無理やりクローリングして勝手に解析する、というパターンは色々世の中に知られていないことが発見できて楽しいです。
そのうち中央線もデータが入手できるようになるだろうと期待してたんですが、まだ無いみたいですね。対応したらまた可視化してみます。



4月:携帯2台持ちが捗るスマホケースを作った

iPhoneとNexusの2台持ちをするようになったので、両方を一つにできるスマホケースを3Dプリンタで作ってみました
冗談半分で作ったのですが意外と便利で、8ヶ月経った今でも現役で使ってます。
DMM.makeでモデルをダウンロードしたり3Dプリントできるようにしてあるんですが、未だに印刷した人が僕以外いないみたいです。なんででしょう。便利なのに。


5月:首相の生活を分析してみた

新聞等で公開されている首相動静って要はライフログじゃん、ってことで首相動静をクローリング、自然言語解析して生活をデータ化してみました。
過去の首相毎の移動・食事パターンや、

移動パターンなど、

ここまで知って大丈夫なのか、と不安になるほど細かく首相の生活を見ることができました。
これを更に将来のニュースと関連付けて解析したら面白いなぁ、と思いつつブログにもまとめないまま放置してしまいました。


6月:脇汗が可愛くなるTシャツを作った

脇汗をかいても「なんとなくアリ」になるTシャツ「swea-T」(スウェッティー)をデザインしました
ここで売ってるのですが、未だに注文0です。なんででしょう。


7月:ひまわり8号の衛星写真で遊んでみた

今年の7月から公開になったひまわり8号の衛星写真データをクローリングして、色んな可視化をしてみました。
ブログを見てみただけると分かるように、ちょっと切り出してアニメーションにするだけで美麗な動画が簡単にできてしまいます。
自分の中でのピークは衛星写真から月を発見した瞬間です:

HDの容量がいっぱいになってしまったのでデータの蓄積を一旦やめてしまいましたが、来年3月には皆既日食があり、もう少し遊んでみようかなぁと思ってます。

8月:「歌ってみた」人たちを勝手に合唱にしてみた

ネットにごまんと上がっている「歌ってみた」動画、普段はそこまで聴きたいものではないです。
でも同じ曲を歌ってる人たちを合成して勝手に合唱にしたら面白いんじゃないか、と思ってやってみたら何故か面白かったんです:
リンダリンダはなぜか最後ちょっと涙出そうになりますね。なんでだろう。
もっと事例増やしてウェブサービスにしようと思ってたんですが、権利関係が少し気になってやめました。

今年はこれを使ってクリスマスカードを作ろうとか意気込んでたんですが、そもそもクリスマスカードを送るのが面倒になってやめました。
でもそのうちちゃんとスマホアプリにして、誰でも使えるようにするつもりです。


10月:コーヒーの跡がニコニコになるマグカップ

コーヒーをよく飲むようになって机がすぐ汚れてしまうのに苛ついて、もっと汚れを愛せるようにしてみました。
こういうの多いですね、今年。


12月:曇った窓をディスプレイに変えるTOIKI

ロボット部分は既成品なので僕は制御プログラム書いただけなんですが、3年ぐらい前から作りたいと思っていたものなので喜びが大きかった作品です。
オープンソースロボットのmDrawBotを使い、曇った窓に天気や気温などの通知を書いたり、他の人の窓にショートメッセージを送ったりできるシステムを作りました。
出張先のホテルの窓に、朝起きて子供からのメッセージが描いてあったらちょっと泣くでしょ。僕だけですかね。


tempescopeのクラウドファンディングをした

2012年に開発した、部屋の中に雨を降らせる天気予報デバイスtempescopeは僕が手作りしていたオープンソース版から製品手前の試作版に成長し、ようやく今年の9月にIndiegogoでローンチしました。

残念ながら目標の70%しか集まらず未達成となってしまいましたが、世界中の何万人もの人たちに欲しいと言ってもらえたことは良い経験となりました。
やってみて初めて分かった、クラウドファンディングの沢山の落とし穴をどこかにまとめようと思いつつ、少し時間がたってしまいました。そのうち講演ででも喋ります。

またいつものengadgetGizmodoだけでなく、WiredWashington Postなど普段と違ったところに紹介されたり、蔦屋家電のような場所に展示できたのも嬉しいですね。
ついでに個人的にもテレビ、新聞にも出る機会が増え、講演にも沢山呼ばれるようになりました。

RomoCartを色々発表したり受賞したり。

去年開発したプロジェクションマッピングで部屋をマリオカートの世界に変えてしまうシステムを色々なところで発表してきました。

第8回ニコニコ学会β 研究してみたマッドネスで大賞をもらったり、

VRクリエイティブアワードで審査員特別賞をいただいたり、色々と楽しい思い出ができました。
プロジェクションマッピング×ゲームは可能性が沢山あり、(去年も言ってましたが)RomoCartの先を早く作りたいですね。

まとめ、抱負とか

去年のまとめで掲げた2015年の目標は、「作って満足する」を繰り返すのではなく、ちゃんと最後(製品)まで持っていく、ということでした。
なので今年はtempescopeの製品化に尽力したんですが、結局tempescopeは製品化できず、いつにも増してやりっぱなしで終わってしまいましたね。
来年は30代に突入するということもあり、もう少し大きい物を作っていきたいと思います。

2015年12月20日日曜日

お絵かきロボット「mDrawBot」で遊んだり窓にメッセージ描いてみたりしてみた

スイッチサイエンスがmDrawBotの販売を開始しましたね。
速攻で入手したので遊び倒してみました。

mDrawBotってなに?

中国のオープンソースプロジェクト「MakeBlock」が提供するお絵かきロボットキットです。
PCから取り込んだ絵を卓上に描画するロボットや、卵に描画するロボットなど、4種類のロボットを作ることができます。
僕が今回遊んだのはmSpider、ホワイトボードにぶら下がってマーカーで絵をかけるロボットです。
国内ではスイッチサイエンスから日本語訳されたキットが買えます。

組み立ててみよう

部品点数結構多いです。
組み立ては数時間かかりますが、アクリルと金属パーツが美しいので楽しく作れます。
完成です。ホワイトボードが小さいのでこういう雑な置き方ですが、会社とかにある大型のホワイトボードならすっきり置けそうです。
左右のステッピングモーターで糸の長さを調整し、三角形のプロッターを平面上で動かすことで、絵を描くという構造です。
またペンの上下(描く/描かない)はプロッターに固定されたサーボで制御されます。

とりあえず動かしてみる

(多分)一番下に追加説明しますが、OSXから動かすためには色々面倒な設定が必要です。
設定が終わったら標準ツールのmDraw.appでサンプルファイルを読み込み、
描いてみましょう。
2本の糸で吊るしている割にかなり安定してプロッターを制御できています。感心します。
失敗しやすいポイントとしては、糸が鉛直に近すぎる、もしくは水平に近すぎる状態になると、ステッピングモーターにかかる負荷が増大して脱調します。そうすると初期位置がずれるんで、それ以降の描画がズレてしまいます。
描画領域のどこに動かしても糸が45°ぐらいをキープするように、モーターや描画領域を設定しましょう。

プログラムから制御する

標準のmDraw.appはSVGファイルを読み込んで描画するだけのプログラムです。
これだと自由度が足りないんで、Javaのプログラムから制御できるようにしてしまいましょう。

実はmDrawBotの中身はArduino互換で、シリアル通信で制御できます。
オープンソースなので、スケッチのソースもちゃんと公開されてます。
ソースを読んでシリアル通信の通信仕様が分かったので、Javaから制御するためのライブラリ「jDrawBot」を作ってみました。ご自由にどうぞ。
mSpiderをUSBで繋いだ状態なら、こんな感じでプログラム上から操作できます:
Spider spider=new Spider();
spider.moveTo(new Location(-30,100));
spider.drawTo(new Location(30,70));
spider.moveTo(new Location(30,100));
spider.drawTo(new Location(-30,70));
→「×」印が描画されます。

ちなみに描画操作(moveTo、drawTo)は内部でジョブキューで管理してるんで、非同期にコマンドを送れます。
描画の完了を待ちたい場合はこうしましょう:
Blocker blocker=spider.drawTo(new Location(-30,70));
blocker.block();

プログラムから制御できればこっちのもん、色々遊んでみましょう。

GUIから絵を描く

PCの画面上で絵を描くと、それをホワイトボードに描いてくれるプログラムを作ってみました。
動画gifだと凄く見難いですが、画面に描いた「Hello」がそのままホワイトボードに書かれてます。「直接書けよ」感いっぱいですが、楽しいですね。

例えば会議が始まる前に「前回の打ち合わせ時のホワイトボードを再現しておく」みたいな新しい会議支援システムとか作れそうです。

関数を描く

特に意味はないですが、グラフを描画したりもできます。

写真を描画する

基本的な遊び方が終わったあとは、プログラムで制御してるからこその遊び方をしてみましょう。
上の動画はPCのカメラで写真を撮影したあとOpenCVで線抽出し、ホワイトボードの絵を描くというデモです。
普通は手描きクオリティの絵しか存在しないホワイトボード上に写実的な絵が現れるのは不思議な体験です。



ホワイトボードを「コピペ」する

ホワイトボードの写真から線分抽出して、mDrawBotへの指令に変換して別のホワイトボードに描画するプログラムを作ってみました。

例えば会議室に設置しておいて打ち合わせが始まる前に前回の打ち合わせ時のホワイトボードの状態を再現しておく、とか捗りそうですね。


TOIKI:曇った窓をディスプレイとして使ってみる

ようやく本題です。こんなものを作ってみました:
ペンの先にスポンジをつけて、結露で曇った窓に文字を描くというデモです。
子供の頃、冬の寒い朝に指で絵を描いた記憶は誰でもありますよね?
もし朝起きて、窓に天気やお誕生日のメッセージなどが描かれてたら素敵じゃん?と思ってこういうものを作ってみました。
描いた文字は5分ほどで勝手に消えます。この刹那的な情報表示がなんとなく気に入ってます。ホテルとかにいいんじゃないですかね。

さいごに

たった2本の糸をステッピングモーターで動かす簡単な構造で、ここまで精度よく自由に遊べるロボットができるとは驚きました。
今回は糸で吊るす「mSpider」でしか遊んでませんが、他のロボットもそれぞれ色々ハックしがいがありそうです。

またRomoCart作った時も同じ事言ってましたが、プログラマー一人ではディスプレイの中の世界しか操作できません。だからこそ、プログラマーが実世界を簡単に制御できるようになるこういうキットは偉大だと思います。
是非mDrawBotをきっかけにハードの世界にも一歩踏み込んでみてはいかがでしょうか?