#43 テンプレート化された基底クラスの名前へのアクセス方法

Effective C++ 43項の内容です. テンプレート化された基底クラスの名前は,派生クラスからは見えない. ということで,サンプルコードを見ていきます.まず,下記のような基底クラスと派生クラスがあったとします. class ElementA { public: void sayType(…

#33 継承した名前を隠蔽しない

Effective C++ 33項の内容です. 基底クラスにある名前は,派生クラスに同じ名前があると隠蔽される. 基底クラスにある名前は,派生クラスで同じ名前が使われるとアクセスできなくなります.下記,サンプルコードです. #include <iostream> class Base { public: cla</iostream>…

#42 typenameの2つの意味を理解する.

Effective C++ 42項の内容です. typenameの2つの用法 この項で述べられているtypenameの2つの意味ですが,下記です. 1. テンプレートパラメータの宣言として使う. 2. 「C++では,テンプレートパラメータ内部にあるネストされた依存型名はそのままでは型名…

#39 private 継承の使い方

Effective C++ 39項の内容です. private継承とは何ぞや? まず,private継承とはなんぞや?という話ですが,クラスの継承には public継承とprivate継承の2つがあります.だいたいpublic継承が使われていて,自分はprivate継承なんてあんまり見たことないん…

#34 インターフェースの継承と実装の継承を区別する.

Effective C++ 6章,34項の内容です. 関数の種類 関数の定義の仕方には下記の3種類があって,目的はそれぞれ次のようになります. 純粋仮想関数:派生クラスの作成者にインターフェースの実装を強制する.デフォルトの実装を提供することも可能であるが…

SLAMのお勉強① ~論文と関連書籍の整理&まとめ

以前のエントリでも書きましたが,今年は北陽電機さんのご厚意で UTM-30LX-EW を貸していただくことができ,ROSのフレームワークが使えるようになりました.daily-tech.hatenablog.comで,つくばチャレンジも終わり,,,3次元復元ネタに戻ろうかと思ったん…

#21 オブジェクトを戻すべき時に参照を戻さない

Effective C++ 4章21項の内容です. 1.ローカルなオブジェクトに対する参照戻し これも,よく考えるとそのとおりなんですが,テンパってるとやってしまいそうです...何を言っているかというと,例えば次のようなコードがあったとします. Hoge & loc…

#13 リソース管理にオブジェクトを使う

Effective C++ 3章13項の内容です. 1.リソース管理オブジェクトとは? 自分みたいに組み込み系をメインでやっている人って,C++をガンガン使うというよりはCを使っている人が多いと思います.Cだとやっぱり生のポインタに対してメモリをmallocで割り当…

#7 ポリモーフィズムのための基底クラスには仮想デストラクタを宣言する.

Effective C++ 2章7項の内容です. 1.仮想関数 そもそも仮想関数とは何か?という話ですが,クラスのメンバ関数として宣言するときに,関数の前にvirtualをつけてあげれば仮想関数になります.で,なんでこんなことするか?ですが,下記の状況で使いたく…

#5 デフォルト代入演算子とデフォルトコピーコンストラクタの振る舞い

Effective C++ の2章で,コピー代入演算子,コピーコンストラクタについて説明されてますが,そもそも自分でこの関数を書かないといけない時がどういう時かはっきりわかってませんでした(汗) ちょっとググッて下記のページを見つけ,yohshiy.blog.fc2.com…

#5 C++が自動で生成する関数(デフォルトコンストラクタ,コピーコンストラクタ,コピー代入演算子,デストラクタ)

今回の内容は Effective C++, 5項のまとめです.クラスに何も記述しないような実装をしても,C++によって自動で生成される関数があります.それが,タイトルの通り,,, コンストラクタ コピーコンストラクタ コピー代入演算子 デストラクタ です.これは,…

#2 #define よりも const, enum, inline を使おう

ちょっともう少し C++ をきちんと理解しないといけないな...と思うことがあり,ロボットも終わったちょうどいいタイミングなので,毎日少しづつ Effective C++ を読んで行くことにしました.ただ,読むだけだとどうも頭に入ってこないので,できるだけブ…

Visual Studio Code を使った C++ のビルド&デバッグ方法(with CMAKE)

前回のエントリでC++のファイルをビルド・デバッグする方法を扱いました.自分で一からファイルを作って,作ったファイルをすべて g++ の引数に渡してビルドして....ということもあるかもですが,大体は規模が大きくなってくると CMake を使うと思います…

Visual Studio Code を使った C++ のビルド&デバッグ方法

ということで,つくばチャレンジも一段落した今,ちょっと基礎的なエントリです.仕事では Visual Studio を使って Windows メインで開発をしてるんですが,エディアとか IDE とかってなれるまでに時間がかかリますよね...なのでちょっと億劫だったんです…

つくばチャレンジ2018を終えて...

ということで,今年も終わりました.つくばチャレンジ本走行. 全く同じ書き出しでちょうど一年前に同じ記事を書いてました.一年たつの早いですね~. daily-tech.hatenablog.com 今年の結果 今年はつくばチャレンジ第三ステージということで,昨年までとコ…

ハフ変換

さあ,,,つくばチャレンジ本番までついに2週間です...つくばチャレンジ本番2週間前にこんな基礎的なことやってていいのかなあ...と思いつつ,どうしてもハフ変換が必要になったので,思い切って実装しました.OpenCVとかにも実装があるのですが,ど…

Semi Global Matching (SGM) と 動的計画法

LidarとStereoのフュージョンに向けて SGM を勉強したので,備忘録としてまとめておきます.今回からGitHubにコードも公開していきたいと思います.ここで使ったサンプルコードは下記にあります. github.com Semi Global Matching 二枚の画像ペア(左カメラ…

一段落...

全く不本意ながら仕事が立て込みなかなかロボットできてなかったんですが,先週ようやく(&おそらく)一段落し平穏が訪れました.ということで,ここからロボットラストスパートです.結局今年はまだ試走会にも参加できておらず,11/11の本番まで残り一か月…

イグジット(Exit)

"イグジット" という単語をググると,下記の定義が出てきます.イグジットとは、ベンチャービジネスや企業再生などにおいて、創業者やファンド(ベンチャーキャピタルや再生ファンドなど)が株式を売却し、利益を手にすること。ハーベスティング(Harvesting…

動的計画法4 連鎖行列積

問題定義 連鎖行列積問題 n個の行列の連鎖が与えられたとき,スカラーの乗算回数を最小化するように積 A1, A2, .... An を完全に括弧付けする問題です. (与えられた行列計算を実行するために,掛け算の回数が最小となる計算順序を決定することが目的.) …

動的計画法3 最長共通部分列

動的計画法シリーズ,3個目の例題です.前回のエントリの最後で説明したステップ通りに問題を解いていきたいと思います.今回の問題も有名な問題で,”最長共通部分列問題”と呼ばれるものです.問題の定義は,,, 問題定義 二つの与えられた文字列に対して…

動的計画法2 コイン問題

動的計画法シリーズ,2個目の例題です.この問題も結構有名な問題らしく,ググるといろいろ出てきます.今回は再帰を使ってこの問題を解く方法を考えて,そこから動的計画法の表を作ってみたいと思います. 問題定義 額面が C1, C2, ... , Cm のコインを使…

動的計画法1 ナップザック問題

引き続き,動的計画法です.今回はフィボナッチ数の問題よりも少し難しくなりますが,動的計画法のありがたさがよくわかる例かと思います.取り上げる問題は,有名な "ナップザック問題" です.問題は, 重さが wi, 価値が vi であるような n 個の品物がある…

動的計画法0 フィボナッチ数

つくばチャレンジ本番まであとわずかですが,,,カメラとLidarのフュージョンをするにあたってせっかくなのでSGMとStixelをちゃんと理解しておこうと思い論文を読んでます.SGMの論文 https://core.ac.uk/download/pdf/11134866.pdfStixelの論文 http://www…

初自動走行

本日9/15日,第三回試走会の日でしたが,,,,あいにくの雨だったので参加をあきらめました.ロボットの防水がしっかりできておらず,壊れてしまうとつらいので...結局次回の試走会が10/13ということで,だいぶ後になってしまうのですが,確認走行のトラ…

ROS Teb Local Planner を使った位置制御

ということで第三回試走会前最後の週末,割と頑張りましたが ROS Navigation Stack の理解で思ったより時間がかかってしまい,,,自宅の地図を作ってセンシングしながらの自律走行まで完了させたかったんですが,Teb Local Planner を使ってオドメトリだけ…

Yp-Spur を使ったロボット制御

ロボットが,,,,走ったーーーー(∩´∀`)∩9/15日の確認走行完了に向けて準備をしてます.今日明日で,ROSの基本パッケージを使って自動走行できるとこまでもっていかないといけないんですが,やらないといけないことは....1. 確認走行コースのデータ取…

ROS amcl を使った自己位置推定@つくば市役所

ということで,gmapping を使ったマップ生成が完了したので,amcl を用いて自己位置推定をしてみました.一応マップを作成したデータとは異なるデータなので,ここでうまく自己位置推定ができていれば,ある程度再現性はあるかと思います.www.youtube.com結…

ROS slam_gmapping を使ったマップ作成@つくば市役所

オドメトリ作成を終え,ようやく gmapping を使うとこまで来ました!Lidarの精度はやっぱり強烈ですね...もともとオドメトリの精度がそこそこ出ていることもあって,かなり綺麗なマップができました.赤のラインはオドメトリラインです.bag ファイルを再…

複数の Input と ROS message_filter

前回のエントリでオドメトリの話をしましたが,自分のオドメトリを生成するために必要な Input は下記になります. Input : 1. sensor_msgs/JointState.h : i-Cart Middleのモータドライバからの出力 2. kmsgs/Imu.h : 自作 IMU からのヨーレート出力ここで…