cvl-robot's diary

研究ノート メモメモ https://github.com/dotchang/

xmlrpc for c and c++(xmlrpc-c)をWindows10, openFrameworks環境で使う

XML-RPCは古いインターフェースですが、Pythonの標準ライブラリでサーバーが簡単に作れるので、C++からPythonを呼び出したい時など、時と場合によっては便利に使えます。以前libxmlrpc++を紹介したことがありますが、今回のはxmlrpc for c and c++(xmlrpc-c)…

自分用読むべき論文メモ 2018年07月版

nuitrack. RealSenseD400シリーズと組み合わせてKinect2の人体認識の代替に使えそうな有料ライブラリ。30$/センサーなので十分安い。 qiita.com 画像処理を高速化できる(2~10倍ぐらい見込める)Halide言語について。 [1807.05520] Deep Clustering for Uns…

メモ:OpenGLの描画結果のデプスバッファから距離情報を復元する方法

OpenGLの描画結果のデプス値を単位を直して画像データとして取得するサンプル。詳細は[1]を参照のこと。 1. glReadPixelsでデプスバッファのデータを読み込み 2. nearClipとfarClipでデプス値を正規化 3. 上下反転されているので入れ替え ofPixels pix; pix…

Open3DのReconstruction systemをC++に移植(その3-1 integrate_scene)

integrate_scene.h #pragma once // Open3D: www.open3d.org // The MIT License (MIT) // See license file or visit www.open3d.org for details #include <Core/Core.h> #include <IO/IO.h> #include <Visualization/Visualization.h> void integrate_scene_main(std::string path_dataset, std::string path_in</visualization/visualization.h></io/io.h></core/core.h>…

Open3DのReconstruction systemをC++に移植(その2-1 register_fragment)

register_fragments.h #pragma once // Open3D: www.open3d.org // The MIT License (MIT) // See license file or visit www.open3d.org for details #include <Core/Core.h> #include <IO/IO.h> #include <Visualization/Visualization.h> void register_fragments_main(std::string path_dataset_); register_fr</visualization/visualization.h></io/io.h></core/core.h>…

Open3DのReconstruction systemをC++に移植(その1-3 make_fragment)

openFrameworksの呼び出し部分の例と実行結果。 ofApp.cpp // Open3D: www.open3d.org // The MIT License (MIT) // See license file or visit www.open3d.org for details #include "ofApp.h" #include "make_fragments.h" #pragma comment(lib, "Open3D.l…

Open3DのReconstruction systemをC++に移植(その1-2 make_fragment)

make_fragmentのc++移植の続き opencv_pose_estimation.h #pragma once // Open3D: www.open3d.org // The MIT License (MIT) // See license file or visit www.open3d.org for details #include <Core/Core.h> #include <IO/IO.h> #include <Visualization/Visualization.h> #include <opencv/cv.h> std::tuple</opencv/cv.h></visualization/visualization.h></io/io.h></core/core.h>

Open3DのReconstruction systemをC++に移植(その1-1 make_fragment)

Open3DのReconstruction Systetmは,距離画像とカラー画像の動画シーケンスから立体モデルを復元するためのPythonチュートリアルです。 詳細はこちらにあります。 Reconstruction system — Open3D 0.1 dev documentation テストデータは、上記で紹介されてい…

c++版Open3DのVisualizationは、openFrameworks0.10.0で自前で作ると便利。

Open3Dは、3次元点群処理が簡単に出来て便利です。ですが、いくつか弱点があって ・Visualizationが便利なようで自由が利かず不便 ・フォーマットが良く分からなくなることがある。ex. PointCloudとTriangleMeshの違いは? ・他のライブラリとのリンクが不便…

自分用読むべき論文メモ 2018年06月版

Optimal and Autonomous Control Using Reinforcement Learning: A Survey - IEEE Journals & Magazine 機械学習は、制御の自動化の方向へ進んでいくのは間違いない。 Dex-Net by BerkeleyAutomation 自動ビンピッキング Kinematic and Dynamic Solvers | Th…

動力学シミュレータofxBulletを静的な衝突判定ライブラリとしてだけ使う方法 (その2)任意のメッシュ形状でも衝突判定したい

三角ポリゴンの集合で表現された任意形状をofxBulletで扱うためには, ofxBulletCustomShape()クラスを使います。 普通に動力学シミュレーションで使うだけなら、Exampleに倣って実行すれば問題ないかと思います。 github.com ofxBullletCustomShapeクラスの…

動力学シミュレータofxBulletを静的な衝突判定ライブラリとしてだけ使う方法

OMPLが自由に使えるようになって経路計画がお手軽で楽しいのですが、衝突判定を自分で書くのが億劫です。プリミティブな形状同士の衝突判定は一つ一つであればたいして難しくもありませんが、効率的に、さまざまな形状の、複数物体同士を、衝突するものとし…

openFrameworksでOMPLを動かしたい(その5)

また[1]を参考に、修正を加えてみます。 1.障害物を追加 2.cboundsの値を調整 3.アニメーションを追加 #pragma once #include "ofxOMPL.h" #include "ofMain.h" class Scheduler : public ofThread { public: unsigned long counter = 0; std::vector<double> </double>…

openFrameworksでOMPLを動かしたい(その4)

omplのdemo_RigidBodyPlanningWithControlsをopenFrameworksに移植していきます。 ofxOMPL.hの更新 必要なヘッダーファイルを足していきます。 ofxOMPL.h #pragma once // Plaease add these settings manually // #include path example: D:\workspace\ompl…

openFrameworksでOMPLを動かしたい(その3)

障害物を追加してみましょう。参考文献1を参考に、障害物を置きます。変更点を抜粋して説明していきます。 1.障害物オブジェクトobstacleをofApp.hで定義します。 ofAppクラスに物体を定義します。 ofBoxPrimitive obstacle; 2.isStateValid関数に判別…

openFrameworksでOMPLを動かしたい(その2)

ビルドの準備が整いましたので、ompl.slnを開いてビルドをしていきます。 ハマリポイント4 omplのEigenのパスが一部おかしい。 そのままビルドにかけると、Eigenのインクルードパスがおかしいとエラーが出ます。Linuxとかだと多分大丈夫なんでしょうけど、 …

openFrameworksでOMPLを動かしたい(その1)

ロボットの経路計画や動作計画用ライブラリとして有名なOMPL(OpenMotionPlanningLibrary)をWindows10MSVC環境のopenFrameworksで動かせるようにしたいと思います。 The Open Motion Planning Library 当初は、C++できれいに書かれているし単に.libをリン…

自分用読むべき論文メモ 2018年04月版

github.com MotionCaptureデータのビューアやアノテーションなどに使えるopenFrameworksアドオン。VRM対応誰かやってくれないかな。 nico-opendata.jp openpose.pyの出力を元に3次元位置推定. ロボット-カメラキャリブレーション (robot camera calibratio…

メモ: openFrameworksで2点を指定してofCylinderPrimitiveを描画する方法

忘れそうだったのでメモ。 端点を2点指定してその間にシリンダーを描画するサンプル。 ofCylinderPrimitiveは、デフォルトで(0,1,0)の方向に長軸が表示されるので、そのベクトルを2点を結ぶベクトルに沿うように回転させるだけ。 原理は簡単。忘れそうなのは…

Open3DをIntel RealSense D435で動かすためにTestRealSense.cppをlibrealsense2に対応するよう改造する(その2)色付きPointCloudに変換

RealSense D435で取得したRGBColor画像とDepthをDepth解像度でlibrealsense側でalignして、Open3DのRGBD画像を作り、RGBD画像をさらにPointCloudに変換するサンプルです。 目視で確認したい場合は、DrawGeometriesのコメントアウトを外してください。ただし…

Open3Dに寄稿する方法とマナーを調べる

(編集中) Open3Dのソースコードは、githubで管理されています。普段、仕事ではほとんど必要ないので、githubはgit cloneして便利に人のソースコードを使わせてもらうか、メモ代わりにGistにコードを張り付けるだけで、あまりちゃんと使ったことがありませ…

Intel RealSense D435のキャリブレーション

Intel RealSense D435のデプスキャリブレーションの方法を調べていきます。 資料 まず目を通すべき重要な資料はこれです。 https://www.intel.com/content/dam/support/us/en/documents/emerging-technologies/intel-realsense-technology/RealSense_D400_Dy…

Open3DをIntel RealSense D435で動かすためにTestRealSense.cppをlibrealsense2に対応するよう改造する

Open3Dは、2018年3月現在v0.1です。頻繁にアップデートがあると思われますので、この記事はすぐ風化する予定です。Intel RealSense D435は、廃版になってしまったKinect1/2の代替として期待されている低価格のデプスセンサーです。同時に発売されたD415に対…

Open3DのPythonチュートリアルをC++に移植(その6) intaractive_visualization.py

Open3Dは、2018年3月現在v0.1です。頻繁にアップデートがあると思われますので、この記事はすぐ風化する予定です。interactive_visualizationは、マウス操作によるクロップ(領域きりだし)と、ポイント選択による初期位置指定をつかった位置合わせを提供し…

Open3DのPythonチュートリアルをC++に移植(その5) customized_visualizer.py

Open3Dは、2018年3月現在v0.1です。頻繁にアップデートがあると思われますので、この記事はすぐ風化する予定です。customized_visualizerは、キー入力、アニメーション、画面キャプチャなどのサンプルを提供しています。 これと類似のテストがすでにc++で用…

Open3DのPythonチュートリアルをC++に移植(その4) rgbd_integration.py

Open3Dは、2018年3月現在v0.1です。頻繁にアップデートがあると思われますので、この記事はすぐ風化する予定です。rgbd_integrationは、マージングなどの名前で知られる手法と同じで、位置合わせされた複数組の3次元点群から、無駄な点や面のない綺麗な1つ…

Open3DのPythonチュートリアルをC++に移植(その3) multiway_registration.py

Open3Dは、2018年3月現在v0.1です。頻繁にアップデートがあると思われますので、この記事はすぐ風化する予定です。multiway_registrationは、複数の3次元点群のシーケンスから、総当たりでPoseGraphを作って全体最適化を行って、3次元形状復元をします。pyth…

Open3DのPythonチュートリアルをC++に移植(その2) global_registration.py

Open3Dは、2018年3月現在v0.1です。頻繁にアップデートがあると思われますので、この記事はすぐ風化する予定です。global_registrationは、初期位置合わせの要らない位置合わせ手法を提供します。pythonチュートリアルはこちら。 Open3D/global_registration…

Open3DのPythonチュートリアルをC++に移植(その1) colored_point_registration.py

Open3Dは、2018年3月現在v0.1です。頻繁にアップデートがあると思われますので、この記事はすぐ風化する予定です。Open3Dは、とてもシンプルで使いやすそうな、Intel製3次元点群ライブラリです[1][2]。 Pythonチュートリアルはとても充実していてすぐに使え…

Finalイヤホンの研究(その4) E3000いぶし銀が届いたので、開封の儀

E3000-T25の開封の儀(自慢したいだけ)です。 箱は、化粧箱が無くとても小さい。他のモデルもこの箱で出してくれたら、かさばらなくてよいのに。 本体は、袋の中。 イヤーピースは、透明が5サイズ、イヤーフック付き。 音は、基本的にE3000そのままです。早…