2014-09-17[n年前へ]
■XYプロッタを組み立てて、色んな遊びをしてみたい!?
月曜日から、Kickstarterでスタートアップした深圳のMakeblockのXYプロッタキットの組み立てをしています。色々やってみたいことがあるのですが、たとえばデジタル・カメラを載せて簡易的に開口合成をして、超々強大なボケ味も作り出せる開口径80cmくらいの超大径カメラをを仕立ててみたい…とか思っています。
組み立て動かしてみると…何かとりあえず動いてるようでありつつも、怪しい感じ120%です。
2015-01-21[n年前へ]
■SUPER 4PCSの3D点群結合能力凄い
Makeblock のXY-ステージにKinectを乗っけてOpenFrameworksで3D点群を取得して、それら複数の3D点群ファイルを結合しようとしてハマる。pcl(Point Cloud Library)のICP使ってもイマイチだし、meshLabのICP結合でも手作業の対応点指定がめんどくさい。
…と思ったら、@syoyo さんにSUPER 4PCS Fast Global Pointcloud Registration via Smart Indexing を勧められた。これ凄い。初期値無しでも、もうほぼバッチリ。
2015-01-22[n年前へ]
■XYステージで大判書籍を超高画質で自炊してみる
大判書籍を超高画質で自炊するために、MakeblockのXY-ステージを使って「ドキュメント読み込み」を行っています。デジタルカメラで撮影された画像(動画)を眺めていると、書籍の紙表面における反射光から、読み取り実験をしている周りの様子がうっすら見えてしまいそうで怖いです。しかも、実験担当者(わたし)が実はズボン掃いてなかったりすることを考えると、まさに恐怖かも。
2017-04-30[n年前へ]
■スマホ(BLE)から動かせる街中スナップ用の(Ricoh Theta S用)2軸自動制御アームを作ってみる。
先週、Ricoh Theta用の極座標自動アームを作った。それを旅先で持ち歩き・街中で2軸アームを 動かしつつ気軽なスナップ写真を撮るために、今日は「ステージ制御をスマホ(iPhone)からできる」ようにしてみました。作戦は、iPhoneとアーム制御ボード間をBluetooth(BLE)で繋ぎ、iPhone上で動くPython環境(Pythonista)から制御アームとRicoh Theta Sを同期制御するという仕組みです。
先週組んだアームはMakeblockのパーツを使っているので、その制御に使ってる(Makeblock製の)ArduinoボードにBluetooth I/Fを繋ぎ、ドキュメントとiOSアプリのLightBlue Explorerで制御ボードにアクセスしてみると、servicesのFFE1中にあるcharacteristics FFE3 に書き込みを行えば、制御ボードに情報を渡すことができることがわかります。…というわけで、「iPad + Pythonista(iOSで動くPython) + BLEで、Genuino101のLチカをしてみた。」を参考に、Makeblock(Arduino UNO)ボードに(適当に俺ルールで決めた5byte一組の)コマンドをiPhone(Pythonista)から送りつけ、そのコマンドをもとに2軸アームを動かしてみることにしました。
というわけで、スマホから制御できる「Ricoh Theta S+制御アーム」を持ち歩き、山道で撮影した(円筒表面上の48枚の)画像から、試しに生成してみたた3次元風景が下の動画です。Ricoh Theta S自体は、全天周撮影を行うカメラですが、それを閉曲面状の複数点で撮影することで、3次元な全天周世界を復元したり、周囲の見た目を再現したり(ライトフィールド)することができます。
ちなみに、iOS Pythonista ( Python ) からの制御コードは、上記参考コードをもとにして、たとえば下のような感じにしています。
def did_discover_services(self, p, error): for s in p.services: print(s.uuid) if 'FFE1' in s.uuid: p.discover_characteristics(s) def did_discover_characteristics(self, s, error): if 'FFE1' in s.uuid: for c in s.characteristics: if 'FFE3' in c.uuid: self.myProcedureWithTheta(c)その上で、(上記コードのmyProcedureWithThetaとしたような部分で)適当なコマンドや値をMakeblock Arduinoボードに渡す(そしてその情報をもとにアームのモータなどを動かす)ことで、持ち歩き用の自動制御アーム付き三脚のできあがり!というわけです。
self.peripheral.write_characteristic_value( c, cmd, False) self.peripheral.write_characteristic_value( c, bytes([step]), False)