Ceres Solver の使い方3〜曲面のフィッティング

引き続き Ceres Solver のサンプルです.前回の3次関数フィッティングより少し問題を複雑化して解いてみます. 1.問題設定(曲面のフィッティング) 前回とほぼ同じですが,曲面のフィッティングをやってみます.曲面なので,推定するパラメータが前回よ…

Ceres Solver の使い方2〜3次関数のフィッティング

引き続き Ceres Solver のサンプルです.前回の直線フィッティングより少し問題を複雑化して解いてみます.daily-tech.hatenablog.com3次関数のフィッティング 1.問題設定(3次関数のフィッティング) 前回とほぼ同じですが,3次関数のフィッティングを…

Ceres Solver の使い方1〜イントロダクション

久々の投稿です.やっぱ2月は短いですね...2月の目標の半分くらいしか行ってません.本にかじりついて消費ページ数を必死で増やしてるんですが,もはや「スキルを上げるために勉強するのか?」,「消費ページを増やすために本を読むのか?」わけわかん…

2019年2月やること!

ということで,2月の目標設定です!2月は短い&お休みがあんまりないので,どこまでできるかわからないですが,1月が割とうまくいったのでちょっと欲張って設定してしまいました. 今月のテーマ 2019年やりたいこと!で宣言した中で,今月のテーマは…

2019年1月の釣果

ということで,年初に宣言した通り今月の成果です! 1月は冬休み時間があったこともあり,割といい感じに終わりました(゚Д゚)ノ 1.SLAM のお勉強 ・確率ロボティクスの勉強. に関しては,EKF, Particle Filter を使う自己位置推定,Particle Filter を用い…

ロボットトレーニング

会社で「自分もロボットやりたいっす!」って言ってくれた子がいまして,どうやって進めたらいいかな〜と悩み中です.とりあえず応募開始の4月頭まであと3ヶ月弱ありますが,ここまでにどんなもんか感触をつかめるとこまで持って行こうとしたら,,,下記…

Fast SLAM with OGM ~ パーティクルフィルタを用いた SLAM (実験編)

確率ロボティクス13章の内容です.ついにここまできました(*ノωノ) 目的 前回の Monte Carlo Localization (下記リンクのエントリ) は,環境の地図をすでに持っている前提で,自分が地図のどこにいるか?を求める問題でした.で,ここで一つ疑問が出てきます…

Monte Carlo Localization ~ パーティクルフィルタを用いた自己位置推定(実験編)

確率ロボティクス8章の内容です. 目的 「こんなこと,何に使うねん?」って話ですが,自律移動のロボットを作るときに,走行する環境の地図をあらかじめ持っている場合が結構あります.(つくばチャレンジ,学習後のお掃除ロボット等)この「あらかじめ持…

EKF Localization ~ 拡張カルマンフィルタを用いた自己位置推定(実験編)

ということで,先月末からかじりついている確率ロボティクスですが,7章の拡張カルマンフィルタを用いた自己位置推定を実装してみたので書き留めておきます. 実験結果 問題設定のイメージは,確率ロボティクスにも出ていた RoboCup にしてみました.下記の…

2019年1月やること!

1月も折り返してしまったんですが,年初のエントリで書いたように今月やりたいことをまとめておきます.年明けから粛々とやってきたんで1月はまずまずの成果になるかと思います. 今月のテーマ 2019年やりたいこと!で宣言した中で,今月のテーマは下…

離散ベイズフィルタ(カルマンフィルタ)

12月から GMapping の勉強をするベくコードを読んでます.で,SLAMのバイブルこと確率ロボティックスを読みながら理解していってるんですが,やっぱりちょっとサンプルコードを書いたほうが理解が深まるかと思い,確率ロボティックスを部分的に Python で実…

SI2018に参加してきました.

ということで,もはや12月の恒例行事になりつつありますが,昨年の12月13日にSI2018に参加してきました.毎年開催地が変わっていて,SI2015 名古屋,SI2016 札幌,SI2017 仙台に続いて今年は大阪開催でした.毎年開催地が変わるので何気に楽しみにして…

2019年やりたいこと

「年初の誓い(゚Д゚)ノ」はしなかったんですが,「今年こんなことができたらいいな~」ってことを考えてみました.なんだかおっさんの割には好奇心だけは人一倍強くて,無数にやりたいこと・知りたいことが出てくるんですが,どうも容量が悪いのか頭の回転数が…

帰省からの,,,2019年あけましておめでとうございます!

あけましておめでとうございます! 年末もっとブログ(雑記)をアップするつもりだったんですが,実家に帰っていたこともあり更新できずじまいでした... 帰省 割と時間があったのでダイエットついでに結構歩き回ったんですが,大きな橋ができたりイオンモ…

EC++ #50, #51, #52 プレースメント new/delete

Effective C++ の 50, 51, 52項の内容です.本的には第8章をまるごと new/delete の話にさいていましたが,これを機会にちょっと new/delete の定義を見てみることにしました. new/delete とは? 下記,自分の環境にあった new/delete の宣言です. void* o…

#10 代入演算子は *this の参照を戻す

ということで,Effective C++の10項の内容です. コンストラクタ,コピーコンストラクタの暗黙呼び出し ということで,ちょっと内容とずれてしまうのですが寄り道です.そもそも,コンストラクタとかコピーコンストラクタってコンパイラが暗黙の呼び出しを…

#6 コンパイラが自動生成する関数を使用禁止する方法

ということで,Effective C++6項のお話です. コンパイラが自動で生成する関数 クラスを自作した時,明示的に自作関数を書かなければ下記の関数はコンパイラが自動生成するのでした. 1.コンストラクタ (Hoge()) 2.デストラクタ (~Hoge()) 3.コピ…

確率分布からの乱数の生成2 分布に従う乱数の発生,Box Muller法

ということで前回のエントリでは,下記の条件が既知の場合に変換後変数の確率密度分布を求める方法を考えました. 1.変換前の確率変数Xの確率密度関数がわかっている. 2.確率変数Xと確率変数Yの変換式Y=Φ(X) で,結果的に変換後の確率変数が従う分布 g(…

確率分布からの乱数の生成1 確率変数の変換

ということで,下記のエントリのGMappingの解剖実験進めているんですが,Motion Model の計算のところで正規分布に従う変数を生成する必要があったので簡単にまとめておくことにしました. 確率分布と分布に従う乱数の生成 平均値μ,分散σの正規分布が下記の…

#12 クラスのコピーの仕方3 STLコンテナを使うとき

Effective C++ 12項の内容+αの内容になりますが,STLのコンテナを使うときにコピーコンストラクタ・コピー代入演算子がどのように働くかを見てみます.下記のサンプルコードを作ってみました. #include <iostream> #include <memory> #include <cstring> #include <vector> class MyContainer </vector></cstring></memory></iostream>…

#12 クラスのコピーの仕方2 ディープコピー

ということで,Effective C++ 12項の内容の続きですが,ここでは自作コンテナを Deep Copy する例を取り上げます. ディープコピーのイメージ ディープコピーのイメージディープコピーした場合は,コピー元のオブジェクトとコピー先のオブジェクトになんの関…

#12 クラスのコピーの仕方1 シャローコピー

ということで,Effective C++の12項の内容なんですが,この辺自分もきちんと理解しきれてなかったのでまとめてみました. コピーの種類 オブジェクトをデザインするときに,コピーの振る舞いとか定義をどうするかを決めないといけないと思うんですが,大まか…

#35 仮想関数の代わりになるものを考える

Effective C++ #35 の内容です.この項はちょっと一風変わっていて,継承と仮想関数の仕組みを用いたシンプルなポリモーフィズムの実装を,異なるデザインパターンでおきかえる話でした.登場したデザインパターンとしては, 1.非仮想のインターフェースを…

SLAMのお勉強②−2 ~GMapping の環境設定

ということで,実際に ROS GMapping の解剖実験をするにあたって,環境を整えます.ROSのモジュールとして「ROSラッパー」「アルゴコア」の両方がきちんと管理されているので,そのまま catkin のパッケージとして落としてくれば,あとは catkin_make でビル…

SLAMのお勉強②−1 ~GMapping vs Google Cartographer

下記のエントリでSLAMの勉強をしているという話をしましたが,論文&本読みだけだとなかなか具体的なイメージが湧いてこないので,ソースコードも引っ張ってきて勉強することにしました.で,題材には下記の2つを使おうと思います.daily-tech.hatenablog.c…

#3(の2)可能ならいつでも const を使う.

Effective C++ 3項の内容です. const なメンバ関数とは?? 前回のエントリで変数に対する const の説明をしました.今回は,関数に対して使う const の説明です.クラスのメンバ関数に対して const をつけることによって,そのメソッドが当該オブジェクト…

#3(の1)可能ならいつでも const を使う.

Effective C++ 3項の内容です. const の使い方一覧 constがとても大事なことは,Effective C++も言っているし,とても良くわかるんですが,constの位置によってconstの対象が変わるのがなかなか覚えられません...一通りリストアップします. "const" for…

#24(の2) すべての引数に型変換が必要なら,非メンバ関数を定義する.

ということで前回エントリの続きです. 演算子の定義 前回整数値からRationalへの暗黙の型変換をするには,コンストラクタが使われていることを実験しました.今回はもう一歩進んで,掛け算の演算子オペレータを定義したいと思います.早速サンプルコードで…

#24(の1) すべての引数に型変換が必要なら,非メンバ関数を定義する.

ということで,Effective C++24項の内容です. コンストラクタと暗黙の型変換 Effective CPPでは,有理数の例を用いて暗黙の型変換が好まれる例を説明していました.他に簡単&適切な例が思いつかないので,ここでも有理数の例を用いて実験したいと思います…

#45 すべての互換型を受け取るために,メンバ関数テンプレートを使う

Effective C++ 45項の内容です. テンプレートで互換型を受け取るには? 「スマートポインタ(=リソース管理オブジェクト)を使えばリソースの破棄等を適切な範囲でやってくれるから,生のポインタを使わずにスマートポインタを使おう!」というのが #13 の…