Ch3 연습 및 피트 회피
1. ch3의 전체 단계
- C++ 오픈 소스 선형 대수 라이브러리인 Eigen 라이브러리를 설치했는지 확인하십시오.
sudo apt-get install libeigen3-dev
설명: 행렬에 대한 빠른 선형 대수 연산을 제공하고 방정식 풀이와 같은 기능도 포함합니다. g2o\Sophus와 같은 상위 수준 소프트웨어 라이브러리도 Eigen 라이브러리를 사용합니다.
- 터미널에 ch3 폴더를 입력하고 다음 명령어를 실행하여 컴파일합니다.
mkdir build
cd build
cmake ..
//注意,j4还是其他主要看自己的电脑情况
make -j4
- 빌드 파일에서 실행합니다.
2. 서류의 집행
1. 실습: 아이겐
빌드 파일에서 useEigen으로 더 이동한 다음 ./eigenMatrix를 실행하여 다음 결과를 얻습니다.
matrix 2x3 from 1 to 6:
1 2 3
4 5 6
print matrix 2x3:
1 2 3
4 5 6
[1,2,3;4,5,6]*[3,2,1]=10 28
[1,2,3;4,5,6]*[4,5,6]: 32 77
random matrix:
0.680375 0.59688 -0.329554
-0.211234 0.823295 0.536459
0.566198 -0.604897 -0.444451
transpose:
0.680375 -0.211234 0.566198
0.59688 0.823295 -0.604897
-0.329554 0.536459 -0.444451
sum: 1.61307
trace: 1.05922
times 10:
6.80375 5.9688 -3.29554
-2.11234 8.23295 5.36459
5.66198 -6.04897 -4.44451
inverse:
-0.198521 2.22739 2.8357
1.00605 -0.555135 -1.41603
-1.62213 3.59308 3.28973
det: 0.208598
Eigen values =
0.0242899
0.992154
1.80558
Eigen vectors =
-0.549013 -0.735943 0.396198
0.253452 -0.598296 -0.760134
-0.796459 0.316906 -0.514998
time of normal inverse is 0.14ms
x = -55.7896 -298.793 130.113 -388.455 -159.312 160.654 -40.0416 -193.561 155.844 181.144 185.125 -62.7786 19.8333 -30.8772 -200.746 55.8385 -206.604 26.3559 -14.6789 122.719 -221.449 26.233 -318.95 -78.6931 50.1446 87.1986 -194.922 132.319 -171.78 -4.19736 11.876 -171.779 48.3047 84.1812 -104.958 -47.2103 -57.4502 -48.9477 -19.4237 28.9419 111.421 92.1237 -288.248 -23.3478 -275.22 -292.062 -92.698 5.96847 -93.6244 109.734
time of Qr decomposition is 0.089ms
x = -55.7896 -298.793 130.113 -388.455 -159.312 160.654 -40.0416 -193.561 155.844 181.144 185.125 -62.7786 19.8333 -30.8772 -200.746 55.8385 -206.604 26.3559 -14.6789 122.719 -221.449 26.233 -318.95 -78.6931 50.1446 87.1986 -194.922 132.319 -171.78 -4.19736 11.876 -171.779 48.3047 84.1812 -104.958 -47.2103 -57.4502 -48.9477 -19.4237 28.9419 111.421 92.1237 -288.248 -23.3478 -275.22 -292.062 -92.698 5.96847 -93.6244 109.734
time of ldlt decomposition is 0.043ms
x = -55.7896 -298.793 130.113 -388.455 -159.312 160.654 -40.0416 -193.561 155.844 181.144 185.125 -62.7786 19.8333 -30.8772 -200.746 55.8385 -206.604 26.3559 -14.6789 122.719 -221.449 26.233 -318.95 -78.6931 50.1446 87.1986 -194.922 132.319 -171.78 -4.19736 11.876 -171.779 48.3047 84.1812 -104.958 -47.2103 -57.4502 -48.9477 -19.4237 28.9419 111.421 92.1237 -288.248 -23.3478 -275.22 -292.062 -92.698 5.96847 -93.6244 109.734
2. 실습: 고유 기하학 모듈
(1) 고유 수집 모듈의 데이터 시연
빌드에 useGeometry를 입력하고 ./eigenGeometry를 실행하면 다음과 같은 결과가 나타납니다.
rotation matrix =
0.707 -0.707 0
0.707 0.707 0
0 0 1
(1,0,0) after rotation (by angle axis) = 0.707 0.707 0
(1,0,0) after rotation (by matrix) = 0.707 0.707 0
yaw pitch roll = 0.785 -0 0
Transform matrix =
0.707 -0.707 0 1
0.707 0.707 0 3
0 0 1 4
0 0 0 1
v tranformed = 1.71 3.71 4
quaternion from rotation vector = 0 0 0.383 0.924
quaternion from rotation matrix = 0 0 0.383 0.924
(1,0,0) after rotation = 0.707 0.707 0
should be equal to 0.707 0.707 0 0
(2) 실제 좌표 변환 예제
빌드에 예제를 입력하고 ./coordinateTransform을 실행하면 다음과 같은 결과가 나타납니다.
-0.0309731 0.73499 0.296108
3. 시각적 표현
(1) 궤적 표시 빌드
에 예제를 입력하고 ./plotTrajectory를 실행한 후 결과는 다음과 같습니다.
동시에 터미널 출력:
총 620개의 포즈 항목 읽기
(2) 고유 수집 모듈의 시각적 데모 빌드
에 visualGeometry를 입력하고 ./visualizeGeometry를 실행하면 결과는 다음과 같습니다.
문제
1. 제목이 나타납니다. ./plotTrajectory 실행 시 다음과 같은 오류가 발생합니다.
cannot find trajectory file at ./examples/trajectory.txt
해결 방법: plotTrajectory.cpp 파일을 변경하고 11./examples/trajectory.txt 줄을 다음과 같이 변경합니다.
// path to trajectory file
string trajectory_file = "/home/fighter/slam/slambook2/ch3/examples/trajectory.txt";
이유: 주된 이유는 파일을 찾을 수 없기 때문입니다. 더 많은 문제와 문제를 피하기 위해 절대 경로로 직접 변경하는 것이 좋습니다.