gggggraziegrazie

graizegrazieさんのやったこと、学んだことを記録する雑記帳です

Brute-force

Weblioで意味を調べると、腕力という意味だそうです。これをデータの関連付けに当てはめると、総当たりで調べる、という意味になるそうです。へぇー。ejje.weblio.jp ja.wikipedia.org

locality sensitive hashing(LSH)

LSH[0][6]とは、ハッシュ関数を使ってデータを次元圧縮をしたり、データ同士の比較を高速で行えるようにするための手法である。使用するハッシュ関数の代表例は、下記の安定分布とハミング距離、Jaccard指数がある。ハミング距離を使って、データの比較する…

さまざまな距離

Computer visionなどの世界では、対象間の距離を測る方法がいくつもあります。その中で学んだものを下記に列挙していきます。 Bhattacharyya distance [1]によると、2つの確率分布が近いのか遠いのかを表現します。[2]の式を下記に記載します。 [2]より、多…

マルコフブランケット(Markov Blanket)

下記のP.30がわかりやすい。 グラフィカルモデル入門 from Kawamoto_Kazuhiko www.slideshare.netグラフィカルモデルでシステムをモデル化した時、注目変数について確率を求めたい時、考慮すべきはその変数と繋がっているノード(関係する変数)のみでよい、…

Visual Inertial Odometry(VIO)

Visual informationとInatial sensor(加速度センサやホイールエンコーダ)両方の情報を統合して求めるOdometry。[1]によると、両社のcouplingの程度によりloosely-coupledなシステムとtightly-coupledなシステムに分けられる。前者の代表はPTAMとDSO、後者…

相互相関関数

もしも2つの信号が同じ周期であれば、合成信号は2つの信号が強め合ってできたものになる。そのため相関関数をグラフ化すると、元の信号と同様の周期で極大・極小が現れる。ただし、観測方法・タイミングの問題等で、それぞれの信号が何の補正もなしにぴっ…

Ubuntu16.04にnVidia製グラフィックカードのドライバをインストールする方法

nVidiaのグラフィックカードのドライバをインストール必要があり、[1]の手法を試したのですが上手く行きませんでした。ただし、この時のインストールは新規ではありませんでした。インストールしたノートPCには一度インストールしたことがあり、なぜだか忘れ…

Active Vision

普通カメラは固定であり、そのためオクルージョンへの対処、パノラマ画像作成などが出来ない。そこでカメラを動かす、または複数枚の画像を使うことで、固定カメラ単体では解決できない問題に対処しようというのがActive Visionと呼ばれる分野。

ロボット系国際学会について調べてみた

ランクについては、Conference Ranksというwebサイトを使用して調査を行った。なおランキングの表記については、 サイトで使用している右記を用いる:B5 調査日:2019年3月1日。ランキングは変動がありえるので、上記は参考程度にご覧ください。また閲覧する…

英語論文を書く時のお役立ち情報

を目指して、適宜追加していきます。ただ本質的には日本語で書くときも同じだと思います。 "just", "only"などの単語は、人の研究について触れる際に使わないこと。失礼です。 例を上げたい場合は、"XXX such as YYY etc"などとするとスムーズです。 〜する…

ROSでXX_msgs::YY::ConstPtrをXX_msgs::YYに変換する方法

例えばsensor_msgs::LaserScan::ConstPtrをsensor_msgs::LaserScanに変換したい時があるかと思います。sensor_msgs::LaserScan::ConstPtrの実体は、boost::shared_ptrになります。そのため、 boost::shared_ptr<sensor_msgs::LaserScan> laserscan_ptr = boost::const_pointer_cast<sensor_msgs::LaserScan>(l</sensor_msgs::laserscan></sensor_msgs::laserscan>…

PCLを使った点群の軸(直線)を推定する手法

他にも色々とあるんだと思いますが、ここではRANSACとPCAを使った点群の軸(直線)を推定する手法について紹介します。 RANSAC(RANdom SAmple Consensus) RANSACとは、ロバスト推定の中の1つの手法です。ロバスト推定とは、データの中に外れ値が含まれてい…

決定木(Decision Tree)

決定木とは、複数のルールを使って組み合わせることで、データを複数のサブセットに分割する手法のことです。分割したサブセットの内容により、分類木や回帰木と呼ばれます。分類木の分割対象はクラスであり、回帰木の対象は出力値です。つまり決定木の作成…

C++における集合演算のための関数たち

C++

席集合や和集合などを作る関数がないか調べたところ、STLとBoostでそれらの関数を見つけたのでメモします。なお、STLとBoostでそれぞれ関数名は一緒です。挙動や入出力は異なりますので、詳細は下記の参考文献をご覧ください。和集合: set_union 積集合: se…

外れ値・異常値の検出手法

外れ値と異常値 外れ値とは、原因が不明だけれども真値から大きく異なる値のことです。一方異常値とは、同じく真値から大きく値が異なるけれども、何故値が真値と異なるのか説明がつく(測定ミス、記入ミスなど)値を指します[4][5]。つまり、異常値外れ値と…

Numpyでの二次元排列の操作方法

順次記載内容を追加してきたいと思います。 二次元配列の作り方 参考文献 二次元配列の作り方 arr = np.empty((0, 2) , float) # 0行2列の二次元配列オブジェクトを生成する arr = np.append(arr, np.array([[x, y]]), axis=0) # np.appendは演算結果を返す…

PCL中のGeneralized ICPを調査してわかったことメモ

PCL中でGeneralized ICP(以降GICP)を調査してわかったことを書き連ねます。適宜更新するため、読みづらいところがあるかもしれませんがご容赦ください。GICPを実行するには、ICPと同様にalignを行えばよい。Levenberg–Marquardt法を使いたいんだけどと思う…

コマンドライン中で指定したパラメータ名をノード中で取得する方法(C++)

結論から言うと、2種類の方法があります。 ros::names::remap : 返り値としてremapされたパラメータ名が取得できます。 resolveName : 返り値としてremapされたパラメータ名が取得できます。第二引数でremapが成功したかをboolで取得できます。 ros::names:…

ROSにおけるシャットダウン処理の書き方

ROSのノードを動かした時、Ctrl-Cでそのノードを落としたいのに、落ちてくれない場合ありますよね。また落ちたとしても、下記の様なexceptionが発生したりするなどして、キレイに落ちてくれなかったりします。 terminate called after throwing an instance …

インピーダンス制御とコンプライアンス制御

インピーダンス制御は、目標値の計算に弾性項と粘性項の両方を加味する。一方コンプライアンス制御は、粘性項を無視して弾性項のみを使う。これにより、コンプライアンス制御は動作速度の抑制は行わないことがわかる。 参考文献 haraduka.hatenadiary.jp htt…

roslaunchでパラメータの値を設定する方法

roslaunchにおいては、タグまたはタグのどちらかを使えば、パラメータの値を設定できる。*下記ではとの両方で記述しているが、どちらか片方だけ記述すればよいことに注意。 *下記では変数型としてstrを記述しているが、他にもint, double, bool, yamlも使…

Canonical Scan Matcher

Canonical Scan Matcherは、連続するscanデータの移動量を推定する手法です。Visual OdometryでPnPを使って移動量を推定するのと、等価の出力といえます。まだ読み進めていないのですが、アブストラクトを読む限り、移動量が大きい場合はエラーが大きくなっ…

Daynamo - Autodesk tool

Dynamoには「Dynamo」と「Dynamo Studio」の2種類があります。前者はAutodesk Revitの拡張ツールでOSSです。また無償でダウンロードできます(そもそものRevitが有償ですが)。後者のDynamo Studioは、スタンドアローンなツールです。こちらは有償です。た…

RhinoVAULT - Rhinoceros plugin

ETH Zurichが開発したプラグインで、Compression-onlyな構造を創造・探求するのに使います。美しい形状を創り出すだけでなく、構造体の原理を理解するのにも使えます。興味がある方は、[1]にTutorial動画が沢山ありますので、そちらをご覧ください。 参考文…

Millipede - Grasshopper plugin

Millipedeとは、Grasshopperのプラグインの1つで、構造解析や最適化を可能にします。数値解析や線形システムの解析解の算出、固有値計算、メッシュのベクトル表現化、メッシュの統合・フィルタリング、固有モード解析なども出来ます。出来ること一覧は、[ht…

Firefly - Grasshopper plugin

Fireflyとは、Grasshopperのプラグインの1つです。つまりは、Rhinocerosのプラグインとも言えます。このプラグインを使うことで、GrasshopperとArduino, Arduinoと接続したデバイスの間でのデータの入出力が可能となります。またGrasshopperのVisual Progra…

Grasshopper - Rhinoceros plugin

本記事では、Grasshopperとはなんぞやについて記述します。どう使うのか等の実践的な話については、お手数ですが他サイトを確認くださいますようお願いいたします。Grasshopperとは、3DモデリングソフトRhinocerosのプラグインです。元々はプラグインでした…

k-d tree

k-d treeとは、K-Dimensional treeの略で、K次元のデータの最近傍点を探索するための手法です[1]。検索対象のデータ数をとした時、データの次元数が大きすぎると線形探索と計算量が変わらないそうです[1]。なお線形探索とは、全探索の1種で一個ずつ検索対象…

ROSを使ったOrbbec Astra Proのキャリブレーション

Astra Proは手頃な価格でかつデプスの有効範囲が長め(8m)なRGB-Dカメラです。このカメラは専用のキャリブレーションツールや、工場出荷時にキャリブレーションが行われている訳ではありません。そのため自分でキャリブレーションツールを探し、キャリブレ…

Sparse Pose Adjustment(SPA)

SPAとは、Konoligeらによって提案された、2D Pose Graphの最適化を効率よく行うための手法です[1]。この手法は線形システムに対して使え、direct sparseコレスキー分解を使うことで効率化を図っています。SRIが開発したopen_karto[2][3]というSLAM向けのライ…