g++ はコンパイルできますが、大規模なプロジェクトでは cmake を使用してコンパイルする必要があります。
cmakeファイル
#cmake の最小バージョンを宣言します。
cmake_minimum_required(バージョン 2.8)
#cmake プロジェクトを宣言する
プロジェクト(HelloSLAM)
#実行可能プログラムを追加する
#構文: add_executable(プログラム名ソースコードファイル)
add_executable(helloSLAM helloSLAM.cpp)
cmake を呼び出して、cmake でプロジェクトをコンパイルします。
1. ターミナル入力: cmake . -------->MakeFile
2. ターミナル入力: make ----------> 進捗表示: ビルドされたターゲット プロジェクト
3. ターミナル入力: ./helloSLAM --> 実行出力結果
Linux のライブラリ ファイルは、静的ライブラリと共有ライブラリに分かれており、静的ライブラリの接尾辞は .a で、共有ライブラリの末尾は .so です。すべてのライブラリはパッケージ化された関数のコレクションです。違いは、静的ライブラリは呼び出されるたびにコピーを生成するのに対し、共有ライブラリはコピーが 1 つだけであるため、スペースが節約されることです。
# 共有ライブラリ
add_library(hello_shared SHARED libHelloSLAM.cpp)
slambook2/ch2 各ファイルの役割:
CMakeLists.txt ---------------cmake 構成ファイル
helloSLAM.cpp -------------- cmake. と make を使用してソース ファイルをコンパイルして実行します
libHelloSLAM.cpp ------------ ライブラリ利用者は、ヘッダファイルとライブラリファイルを入手すれば、このファイルに従ってこのライブラリ、つまり libhello のヘッダファイルを呼び出すことができます。コンパイルしたばかりのライブラリ ファイルでは、printHello 関数を使用できます。
useHello.cpp --------------libHelloSLAM.h で printHello() 関数を使用する
注: 使用する場合は、cmakelist.txt に実行可能プログラム生成コマンドを追加し、先ほど使用したライブラリに接続する必要があります。
add_executable(プログラム名 ( useHello ) ソースコード ファイル ( useHello.cpp ))
target_link_libraries( useHello hello_shared )//プログラムはライブラリにリンクされています
Ubuntu16.04 環境 Kdevelop のインストールとローカリゼーション: 使用したリンク:
https://blog.csdn.net/lch_vison/article/details/79112450
mkdir ビルド
CD ビルド
cmake
作る
3.1 回転行列:
内積 (ab、内積の結果は座標系の選択とは関係がなく、2 つの間の長さと角度によって決まります) と外積 (a^b)
3.1.2 座標系間のユークリッド変換
剛体の動き: 回転 + 平行移動 (カメラの動き)
3.2 エンジンの練習
ライブラリはヘッダファイルとライブラリファイルで構成されます。eigen ヘッダー ファイルのデフォルトの場所は usr/include/engen3 です。これは、eigen ライブラリにはヘッダー ファイルしかないため、プログラムをライブラリにリンクするために target_link_libraries ステートメントを使用する必要はありません。
3.3 回転ベクトルとオイラー角
3.3.1 回転ベクトル
ユークリッド変換 R t 0 1 6 長さ、角度、体積
データの種類:
回転行列 3*3 固有::Matrix3d
回転ベクトル 3*1 Eigen::AngleAxisd
オイラー角 3*1 固有::Vector3d
クォータニオン 4*1 固有::クォータニオン
ユークリッド変換行列 4*4 Eigen::Isometry3d
アフィン変換 4*4 Eigen::Affine3d
射影変換 4*3 Reigen::Projective3dv
3.7.2: カメラポーズの表示
(メッセージ 32 件) C++ エラー: 'XXX' は 'std'_das のメンバーではありません Bai のブログ-CSDN ブログ
「エラー *** は std のメンバーではありません」というエラーが発生します。
cmakelist.txt ファイルを変更する
追加:set(CMAKE_CXX_FLAGS "-std=c++14 -O2 ${SSE_FLAGS} -msse4")
注: set(CMAKE_CXX_STANDARD 11) を追加するだけでは実行できません。
3.7.1: 動作軌跡の表示
まず、オンライン チュートリアルに従って pangolin ライブラリをインストールします。
最後に必ず sudo ldconfig コマンドを実行してください。
ldconfig コマンドの機能は、ダイナミック リンクライブラリをシステムで共有するためのダイナミック リンク ライブラリ管理コマンドです。
②: trajectory.txt のパスをローカルパスに変更します。私の場合は次のようになります。
文字列 trajectory_file = "/home/lyy/Desktop/slambook2/ch3/examples/trajectory.txt";
注: ホームの前に必ず / を追加してください。そうしないとコンパイルが失敗します。
操作結果:
R回転行列、rpyオイラー角
T変換行列、qクォータニオン (回転を表す)
午前: vscode で C++ 環境を構成し、リンクを学習します:
(メッセージ 32 件) VsCode は C/C++ 環境をインストールして構成します (非常に完全、Xiaobai のみ)