ヴスラムに関する 14 回の講義、最初の 3 回のセッションの学習記録

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 ライブラリをインストールします。

(メッセージ 32 件) Ubuntu 20.04 への Pangolin のインストール (Visual SLAM に関する講義 14)_Ning Xiaojian のブログ - CSDN ブログ_ubuntu20 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 のみ)

おすすめ

転載: blog.csdn.net/qq_44808827/article/details/123354748