Visual SLAM講義14—ch12演習(マッピング)

0. 実践前の豆知識のご紹介

「make -j」は、利用可能なすべての CPU コアを使用してプログラムを並列コンパイルする Linux コマンドです。通常、プロセス数が指定されていない場合、このコマンドを使用すると CPU リソースの使用量が最大化され、コンパイルが高速化されます。
このコマンドは、実行可能ファイルを迅速に生成するために、できるだけ多くのプロセスを開始してプログラムを同時にコンパイルします。このコマンドは、コンピューター上で使用可能な CPU コアの数を自動的に検出し、使用可能なすべてのコアで適切な数のコンパイル タスクを開始します。
複数のプロセスが同時に実行されているため、「make -j」コマンドを使用すると出力が混乱する可能性がありますが、コンパイル結果の正確さには影響しません。コンパイル プロセスをより明確に確認したい場合は、「make VERBOSE=1」コマンドを使用すると、より詳細なコンパイル情報が出力されます。

「make -j8」は Linux コマンドで、コンパイル中に 8 つの並列プロセスを使用してコンパイルを高速化することを意味します。「-j」パラメータは並列プロセスの数を示し、次の数字「8」はコンパイルに 8 つのプロセスが使用されることを示します。

複数の並列プロセスを使用すると、コンパイルの正確さに影響を与えることなく、複数のコンパイル タスクを同時に処理できます。これにより、コンパイル速度が大幅に向上します。ハードウェアの条件が許せば、このパラメータを使用してコンパイルを高速化することをお勧めします。

すべてのコンパイルタスクがマルチプロセス並列コンパイルに適しているわけではないため、このパラメータを使用する場合は、実際の状況に応じて選択する必要があることに注意してください。同時に、ハードウェアの状態が悪い場合、並列処理を多用するとコンパイルの失敗やシステムのフリーズが発生する可能性があるため、ハードウェアの状態に応じて調整する必要があることに注意してください。

1. 実運用前の準備

  1. PCL のインストール
sudo apt-get install libpcl-dev pcl-tools
  1. オクトマップをインストールする
sudo apt-get install liboctomap-dev octovis
  1. ターミナルでch12フォルダに入り、以下のコマンドを実行してコンパイルします。
mkdir build
cd build
cmake ..
//注意,j8还是其他主要看自己的电脑情况
make -j8
  1. ビルドファイル内で実行します。
    注:作成プロセス中に、警告、しかし私たちの練習のプロセスにはほとんど影響しません。

  2. 使用したテストデータは、ドローンで収集した単眼俯瞰画像を合計200枚ダウンロードし、それぞれの画像の真の姿勢を提供します。ダウンロードアドレスはhttp://rpg.ifi.uzh.ch/datasets/remode_test_data.zipです。

2. 練習プロセス

2.1 単眼の高密度再構成

ビルドでステートメントを実行します。

 cd dense_mono
 ./dense_mapping /home/fighter/slam/slambook2/ch12/test_data

実行結果:
35 回目の反復画像:
35回目の反復

//刚开始运行时的平均方差和平均误差:
*** loop 1 ***
Average squared error = 1.84285, average error: -1.12517
//迭代到199次时的平均方差和平均误差:
*** loop 199 ***
Average squared error = 0.253473, average error: -0.00722449

すべての結果:

read total 202 files.
*** loop 1 ***
Average squared error = 1.84285, average error: -1.12517
*** loop 2 ***
Average squared error = 1.42146, average error: -0.865388
*** loop 3 ***
Average squared error = 1.05544, average error: -0.62268
*** loop 4 ***
Average squared error = 0.879682, average error: -0.515219
*** loop 5 ***
Average squared error = 0.45456, average error: -0.177368
*** loop 6 ***
Average squared error = 0.396917, average error: -0.128648
*** loop 7 ***
Average squared error = 0.364525, average error: -0.10006
*** loop 8 ***
Average squared error = 0.350139, average error: -0.0846462
*** loop 9 ***
Average squared error = 0.340283, average error: -0.0772052
*** loop 10 ***
Average squared error = 0.331579, average error: -0.0711182
*** loop 11 ***
Average squared error = 0.325072, average error: -0.0668865
*** loop 12 ***
Average squared error = 0.319159, average error: -0.0616389
*** loop 13 ***
Average squared error = 0.314988, average error: -0.0576225
*** loop 14 ***
Average squared error = 0.310317, average error: -0.0543781
*** loop 15 ***
Average squared error = 0.307007, average error: -0.0517102
*** loop 16 ***
Average squared error = 0.303809, average error: -0.0494418
*** loop 17 ***
Average squared error = 0.301495, average error: -0.0477168
*** loop 18 ***
Average squared error = 0.29937, average error: -0.0460656
*** loop 19 ***
Average squared error = 0.298098, average error: -0.0450206
*** loop 20 ***
Average squared error = 0.297042, average error: -0.0441051
*** loop 21 ***
Average squared error = 0.296148, average error: -0.0433046
*** loop 22 ***
Average squared error = 0.295283, average error: -0.0425197
*** loop 23 ***
Average squared error = 0.294497, average error: -0.0418231
*** loop 24 ***
Average squared error = 0.293742, average error: -0.0412219
*** loop 25 ***
Average squared error = 0.293078, average error: -0.0406908
*** loop 26 ***
Average squared error = 0.292565, average error: -0.0402601
*** loop 27 ***
Average squared error = 0.292155, average error: -0.0398929
*** loop 28 ***
Average squared error = 0.291749, average error: -0.0395666
*** loop 29 ***
Average squared error = 0.291299, average error: -0.0392129
*** loop 30 ***
Average squared error = 0.290664, average error: -0.0387602
*** loop 31 ***
Average squared error = 0.290207, average error: -0.0384231
*** loop 32 ***
Average squared error = 0.289564, average error: -0.037996
*** loop 33 ***
Average squared error = 0.289188, average error: -0.0377422
*** loop 34 ***
Average squared error = 0.288831, average error: -0.0373816
*** loop 35 ***
Average squared error = 0.288169, average error: -0.0369677
*** loop 36 ***
Average squared error = 0.28776, average error: -0.0366579
*** loop 37 ***
Average squared error = 0.287351, average error: -0.0363873
*** loop 38 ***
Average squared error = 0.286934, average error: -0.0361053
*** loop 39 ***
Average squared error = 0.286412, average error: -0.0357436
*** loop 40 ***
Average squared error = 0.286034, average error: -0.0354667
*** loop 41 ***
Average squared error = 0.285515, average error: -0.0351335
*** loop 42 ***
Average squared error = 0.285065, average error: -0.0347901
*** loop 43 ***
Average squared error = 0.284475, average error: -0.0343606
*** loop 44 ***
Average squared error = 0.28398, average error: -0.0339507
*** loop 45 ***
Average squared error = 0.283484, average error: -0.0335147
*** loop 46 ***
Average squared error = 0.282962, average error: -0.0330494
*** loop 47 ***
Average squared error = 0.282207, average error: -0.0324265
*** loop 48 ***
Average squared error = 0.281722, average error: -0.0319793
*** loop 49 ***
Average squared error = 0.28126, average error: -0.0314694
*** loop 50 ***
Average squared error = 0.280613, average error: -0.0308945
*** loop 51 ***
Average squared error = 0.28026, average error: -0.0304981
*** loop 52 ***
Average squared error = 0.279828, average error: -0.0301664
*** loop 53 ***
Average squared error = 0.279481, average error: -0.0299141
*** loop 54 ***
Average squared error = 0.279225, average error: -0.0297781
*** loop 55 ***
Average squared error = 0.279093, average error: -0.0296969
*** loop 56 ***
Average squared error = 0.27885, average error: -0.029586
*** loop 57 ***
Average squared error = 0.278791, average error: -0.0295429
*** loop 58 ***
Average squared error = 0.278614, average error: -0.029461
*** loop 59 ***
Average squared error = 0.278394, average error: -0.0293721
*** loop 60 ***
Average squared error = 0.278216, average error: -0.0292924
*** loop 61 ***
Average squared error = 0.27807, average error: -0.0292331
*** loop 62 ***
Average squared error = 0.277898, average error: -0.0291653
*** loop 63 ***
Average squared error = 0.277636, average error: -0.0290668
*** loop 64 ***
Average squared error = 0.27748, average error: -0.0290064
*** loop 65 ***
Average squared error = 0.277295, average error: -0.0289306
*** loop 66 ***
Average squared error = 0.277196, average error: -0.0288857
*** loop 67 ***
Average squared error = 0.277002, average error: -0.0288019
*** loop 68 ***
Average squared error = 0.276856, average error: -0.0287178
*** loop 69 ***
Average squared error = 0.276715, average error: -0.028626
*** loop 70 ***
Average squared error = 0.276542, average error: -0.0285359
*** loop 71 ***
Average squared error = 0.27639, average error: -0.0284511
*** loop 72 ***
Average squared error = 0.276233, average error: -0.0283693
*** loop 73 ***
Average squared error = 0.276015, average error: -0.0282531
*** loop 74 ***
Average squared error = 0.275862, average error: -0.0281722
*** loop 75 ***
Average squared error = 0.275723, average error: -0.0280873
*** loop 76 ***
Average squared error = 0.275545, average error: -0.027981
*** loop 77 ***
Average squared error = 0.275377, average error: -0.0278906
*** loop 78 ***
Average squared error = 0.275231, average error: -0.0278025
*** loop 79 ***
Average squared error = 0.275086, average error: -0.0277176
*** loop 80 ***
Average squared error = 0.274987, average error: -0.0276476
*** loop 81 ***
Average squared error = 0.274899, average error: -0.0275886
*** loop 82 ***
Average squared error = 0.274696, average error: -0.0274517
*** loop 83 ***
Average squared error = 0.274517, average error: -0.0272981
*** loop 84 ***
Average squared error = 0.274293, average error: -0.0271339
*** loop 85 ***
Average squared error = 0.274005, average error: -0.0268708
*** loop 86 ***
Average squared error = 0.273686, average error: -0.0265032
*** loop 87 ***
Average squared error = 0.273051, average error: -0.0257165
*** loop 88 ***
Average squared error = 0.272044, average error: -0.0243797
*** loop 89 ***
Average squared error = 0.271037, average error: -0.0231086
*** loop 90 ***
Average squared error = 0.270173, average error: -0.0222034
*** loop 91 ***
Average squared error = 0.268837, average error: -0.0205596
*** loop 92 ***
Average squared error = 0.268364, average error: -0.0192558
*** loop 93 ***
Average squared error = 0.267513, average error: -0.0182724
*** loop 94 ***
Average squared error = 0.266708, average error: -0.0175116
*** loop 95 ***
Average squared error = 0.2659, average error: -0.0167705
*** loop 96 ***
Average squared error = 0.265119, average error: -0.0160555
*** loop 97 ***
Average squared error = 0.264688, average error: -0.0156661
*** loop 98 ***
Average squared error = 0.264175, average error: -0.0152503
*** loop 99 ***
Average squared error = 0.263741, average error: -0.0148952
*** loop 100 ***
Average squared error = 0.263298, average error: -0.0145078
*** loop 101 ***
Average squared error = 0.26283, average error: -0.0139689
*** loop 102 ***
Average squared error = 0.262504, average error: -0.0136983
*** loop 103 ***
Average squared error = 0.261961, average error: -0.0132759
*** loop 104 ***
Average squared error = 0.261467, average error: -0.0128025
*** loop 105 ***
Average squared error = 0.261184, average error: -0.0125387
*** loop 106 ***
Average squared error = 0.260951, average error: -0.0123502
*** loop 107 ***
*** loop 108 ***
Average squared error = 0.260779, average error: -0.0122728
*** loop 109 ***
Average squared error = 0.260547, average error: -0.0121443
*** loop 110 ***
Average squared error = 0.260369, average error: -0.0120564
*** loop 111 ***
Average squared error = 0.260171, average error: -0.0119496
*** loop 112 ***
Average squared error = 0.25991, average error: -0.0118314
*** loop 113 ***
Average squared error = 0.259633, average error: -0.0117062
*** loop 114 ***
Average squared error = 0.259358, average error: -0.0115578
*** loop 115 ***
Average squared error = 0.259097, average error: -0.0114197
*** loop 116 ***
Average squared error = 0.258921, average error: -0.0113019
*** loop 117 ***
Average squared error = 0.258636, average error: -0.0111453
*** loop 118 ***
Average squared error = 0.258323, average error: -0.0109411
*** loop 119 ***
Average squared error = 0.258012, average error: -0.010738
*** loop 120 ***
Average squared error = 0.25748, average error: -0.0103609
*** loop 121 ***
Average squared error = 0.256995, average error: -0.0100245
*** loop 122 ***
Average squared error = 0.256586, average error: -0.00968946
*** loop 123 ***
Average squared error = 0.256245, average error: -0.00937251
*** loop 124 ***
Average squared error = 0.255877, average error: -0.00895965
*** loop 125 ***
Average squared error = 0.255615, average error: -0.00863918
*** loop 126 ***
Average squared error = 0.255493, average error: -0.00842778
*** loop 127 ***
Average squared error = 0.255422, average error: -0.00832814
*** loop 128 ***
Average squared error = 0.255371, average error: -0.00828552
*** loop 129 ***
Average squared error = 0.255334, average error: -0.00825662
*** loop 130 ***
Average squared error = 0.255342, average error: -0.0082551
*** loop 131 ***
Average squared error = 0.25535, average error: -0.00825099
*** loop 132 ***
Average squared error = 0.25532, average error: -0.0082309
*** loop 133 ***
Average squared error = 0.255291, average error: -0.00821913
*** loop 134 ***
Average squared error = 0.255274, average error: -0.0082109
*** loop 135 ***
Average squared error = 0.255271, average error: -0.00820692
*** loop 136 ***
Average squared error = 0.255272, average error: -0.00819507
*** loop 137 ***
Average squared error = 0.255216, average error: -0.00817473
*** loop 138 ***
Average squared error = 0.255177, average error: -0.00815629
*** loop 139 ***
Average squared error = 0.255138, average error: -0.00814459
*** loop 140 ***
Average squared error = 0.255086, average error: -0.00812726
*** loop 141 ***
Average squared error = 0.25507, average error: -0.00812055
*** loop 142 ***
Average squared error = 0.254982, average error: -0.00808992
*** loop 143 ***
Average squared error = 0.25494, average error: -0.00807278
*** loop 144 ***
Average squared error = 0.254944, average error: -0.00807379
*** loop 145 ***
Average squared error = 0.254885, average error: -0.0080535
*** loop 146 ***
Average squared error = 0.254837, average error: -0.00803103
*** loop 147 ***
Average squared error = 0.254814, average error: -0.00799901
*** loop 148 ***
Average squared error = 0.254806, average error: -0.00799629
*** loop 149 ***
Average squared error = 0.2548, average error: -0.0079941
*** loop 150 ***
Average squared error = 0.254776, average error: -0.00797947
*** loop 151 ***
Average squared error = 0.254771, average error: -0.00797405
*** loop 152 ***
Average squared error = 0.254746, average error: -0.0079654
*** loop 153 ***
Average squared error = 0.254724, average error: -0.00795639
*** loop 154 ***
Average squared error = 0.254699, average error: -0.0079408
*** loop 155 ***
Average squared error = 0.254636, average error: -0.0079139
*** loop 156 ***
Average squared error = 0.254568, average error: -0.00787785
*** loop 157 ***
Average squared error = 0.254525, average error: -0.00784813
*** loop 158 ***
Average squared error = 0.254369, average error: -0.00776553
*** loop 159 ***
Average squared error = 0.254215, average error: -0.0076815
*** loop 160 ***
Average squared error = 0.254138, average error: -0.00763075
*** loop 161 ***
Average squared error = 0.254019, average error: -0.00756259
*** loop 162 ***
Average squared error = 0.253929, average error: -0.00751232
*** loop 163 ***
Average squared error = 0.253854, average error: -0.00746892
*** loop 164 ***
Average squared error = 0.253793, average error: -0.00743709
*** loop 165 ***
Average squared error = 0.253723, average error: -0.00739672
*** loop 166 ***
Average squared error = 0.253581, average error: -0.00732856
*** loop 167 ***
Average squared error = 0.253574, average error: -0.00732363
*** loop 168 ***
Average squared error = 0.253507, average error: -0.00729212
*** loop 169 ***
Average squared error = 0.253487, average error: -0.00728301
*** loop 170 ***
Average squared error = 0.253473, average error: -0.0072775
*** loop 171 ***
Average squared error = 0.253474, average error: -0.00726942
*** loop 172 ***
Average squared error = 0.25347, average error: -0.00727054
*** loop 173 ***
Average squared error = 0.253469, average error: -0.00726697
*** loop 174 ***
Average squared error = 0.253457, average error: -0.00726471
*** loop 175 ***
Average squared error = 0.253392, average error: -0.00723937
*** loop 176 ***
Average squared error = 0.253359, average error: -0.00722755
*** loop 177 ***
Average squared error = 0.25335, average error: -0.00722365
*** loop 178 ***
Average squared error = 0.253339, average error: -0.00721831
*** loop 179 ***
Average squared error = 0.253538, average error: -0.00723501
*** loop 180 ***
Average squared error = 0.253541, average error: -0.0072366
*** loop 181 ***
Average squared error = 0.253536, average error: -0.0072361
*** loop 182 ***
Average squared error = 0.253528, average error: -0.00723492
*** loop 183 ***
Average squared error = 0.253508, average error: -0.00723009
*** loop 184 ***
Average squared error = 0.253493, average error: -0.00722341
*** loop 185 ***
Average squared error = 0.253485, average error: -0.00722269
*** loop 186 ***
Average squared error = 0.253462, average error: -0.00721511
*** loop 187 ***
Average squared error = 0.253452, average error: -0.00721043
*** loop 188 ***
Average squared error = 0.253456, average error: -0.00721228
*** loop 189 ***
Average squared error = 0.253466, average error: -0.00721536
*** loop 190 ***
Average squared error = 0.253458, average error: -0.00721122
*** loop 191 ***
Average squared error = 0.253469, average error: -0.00721441
*** loop 192 ***
Average squared error = 0.253477, average error: -0.00721751
*** loop 193 ***
Average squared error = 0.253482, average error: -0.00722042
*** loop 194 ***
Average squared error = 0.253482, average error: -0.00722156
*** loop 195 ***
Average squared error = 0.253482, average error: -0.00722296
*** loop 196 ***
Average squared error = 0.253481, average error: -0.00722378
*** loop 197 ***
Average squared error = 0.25348, average error: -0.00722574
*** loop 198 ***
Average squared error = 0.253476, average error: -0.00722573
*** loop 199 ***
Average squared error = 0.253473, average error: -0.00722449

最初の 10 回までは効果が顕著で、10 回を超えると速度が低下することがわかります。

2.2 RGB-D 高密度マッピング

  1. RGB-D デンス マッピングは、RGB 画像と深度画像を使用して 3D 再構成する技術です。従来の三角測量ベースのスパース再構成手法とは異なり、RGB-D 密マッピングは、オブジェクトの詳細や形状を含む、グローバルに一貫した密な 3D モデルを生成できます。この技術は、ロボットナビゲーション、仮想現実、拡張現実、医療分野で広く使用されています。

  2. RGB-D デンス マッピングの基本プロセスには、RGB および深度画像の取得、点群の生成、デンス再構成、およびテクスチャ マッピングが含まれます。このうち、点群生成は RGB 画像と深度画像を 3D 点群データに変換すること、密再構成は点群データを 3D モデルに変換すること、テクスチャ マッピングは RGB 画像を 3D モデルの表面にマッピングすることです。現実感と忠実感があります。

  3. RGB-D 高密度マッピングの利点は、高品質の 3D モデルを迅速に生成でき、オブジェクトの表面の詳細と形態学的情報をキャプチャできることです。ただし、画質とキャリブレーション精度に対する要求が高いため、この技術を実用化するにはさらなる改善と完成度が必要です。

2.3 点群マップ

ビルドでステートメントを実行します。

cd dense_RGBD
 ./pointcloud_mapping

操作結果:

正在将图像转换为点云...
转换图像中: 1
转换图像中: 2
转换图像中: 3
转换图像中: 4
转换图像中: 5
点云共有1309800个点.
滤波之后,点云共有31876个点.

同時に、map.pcd ファイルが生成されます。このファイルの場所は次のとおりです。

/home/fighter/slam/slambook2/ch12/build/dense_RGBD/map.pcd

次のコマンドを使用して、map.pcd ファイルを表示できます。

 pcl_viewer map.pcd

ボクセル フィルタリング後の点群は次のようになります。これは 5 つの ICL-NUIM 画像の再構成結果です: スクロール ホイールでズームインした後の表示: スクロールして小さいサイズにスライドした後の表示
:
大きい
同時に
小さい
、ターミナルは対応する情報も出力します。

The viewer window provides interactive commands; for help, press 'h' or 'H' from within the window.
> Loading map.pcd [PCLVisualizer::setUseVbos] Has no effect when OpenGL version is ≥ 2
[done, 378.775 ms : 31876 points]
Available dimensions: x y z rgb

2.4 点群からのメッシュの再構築

ビルドでステートメントを実行します。

cd dense_RGBD
./surfel_mapping map.pcd

実行結果:
結果は点群から再構成されたサーフェスおよびメッシュ モデルです。画像は次のとおりで
結果は、点群から再構築されたサーフェスとメッシュ モデルです。イメージは次のとおりです。
、端末は情報を出力します。

point cloud loaded, points: 31876
computing normals ...
computing mesh ...
display mesh ...

2.5 オクツリーマップ

ビルドでステートメントを実行します。

cd dense_RGBD
 ./octomap_mapping

実行結果:
端末出力:

正在将图像转换为 Octomap ...
转换图像中: 1
转换图像中: 2
转换图像中: 3
转换图像中: 4
转换图像中: 5
saving octomap ...
Writing 1136665 nodes to output stream... done.

生成されたファイル octomap.bt を実行し、次のコマンドを使用してファイルを表示します。

 octovis octomap.bt

端子出力:

バイナリオクツリー型OcTreeの読み取り

さまざまな解像度でのオクツリー マップの画像を以下に示します。
0.05mの解像度
0.1mの解像度

3. 発生した問題と解決策

3.1 cmake ... の場合、opencv バージョンの問題があります

発生するエラー:

CMake Error at dense_mono/CMakeLists.txt:11 (find_package):
  Could not find a configuration file for package "OpenCV" that is compatible
  with requested version "3.1".

  The following configuration files were considered but not accepted:

    /usr/local/lib/cmake/opencv4/OpenCVConfig.cmake, version: 4.5.0
    /usr/lib/x86_64-linux-gnu/cmake/opencv4/OpenCVConfig.cmake, version: 4.2.0
    /lib/x86_64-linux-gnu/cmake/opencv4/OpenCVConfig.cmake, version: 4.2.0

理由:
CMakeLists.txt には、opencv セットのバージョンに問題があります。
この種の問題は主に、コード内の opencv のバージョンが現在インストールされているバージョンと異なることが原因です。

解決策:
前の解決策と同様に、CMakeLists.txt ファイルの opencv バージョンを変更するだけです。

//更改前:
find_package(OpenCV 3 REQUIRED)
//更改后:
find_package(OpenCV REQUIRED)

3.2 -j8 を作成すると、PCL と opencv のバージョンに関連していくつかのエラーが発生しました。

  1. 生じる問題:

未定義の識別子「CV_GRAY2BGR」

ここに画像の説明を挿入

理由:
これは、このステートメントが opencv バージョンと同じではないためです。
解決策:
dense_mapping.cpp ヘッダー ファイルを変更し、次のヘッダー ファイルを追加します。

//添加头文件
#include <opencv2/imgproc/types_c.h>

opencv のバージョンとステートメントの問題に関するエラー レポートのコレクションについては、次の記事を参照してください: https://blog.csdn.net/qq_44164791/article/details/131210608?spm=1001.2014.3001.5502

  1. 生じる問題:

発生した問題:
作成時に、画面を更新する赤いエラーが発生しました。次の 2 つの段落があります。

/usr/include/pcl-1.10/pcl/pcl_config.h:7:4: error: #error PCL requires C++14 or above
    7 |   #error PCL requires C++14 or above
      |    ^~~~~
In file included from /usr/include/pcl-1.10/pcl/pcl_macros.h:77,
                 from /usr/include/pcl-1.10/pcl/point_types.h:42,
                 from /home/fighter/slam/slambook2/ch12/dense_RGBD/pointcloud_mapping.cpp:10:
/usr/include/pcl-1.10/pcl/pcl_config.h:7:4: error: #error PCL requires C++14 or above
    7 |   #error PCL requires C++14 or above
      |    ^~~~~
In file included from /usr/include/pcl-1.10/pcl/console/print.h:44,
                 from /usr/include/pcl-1.10/pcl/conversions.h:53,
                 from /usr/include/pcl-1.10/pcl/common/io.h:48,
                 from /usr/include/pcl-1.10/pcl/io/file_io.h:41,
                 from /usr/include/pcl-1.10/pcl/io/pcd_io.h:44,
                 from /home/fighter/slam/slambook2/ch12/dense_RGBD/surfel_mapping.cpp:7:
/usr/include/pcl-1.10/pcl/pcl_config.h:7:4: error: #error PCL requires C++14 or above
    7 |   #error PCL requires C++14 or above
      |    ^~~~~
In file included from /usr/include/pcl-1.10/pcl/console/print.h:44,
                 from /usr/include/pcl-1.10/pcl/conversions.h:53,
                 from /usr/include/pcl-1.10/pcl/common/io.h:48,
                 from /usr/include/pcl-1.10/pcl/io/file_io.h:41,
                 from /usr/include/pcl-1.10/pcl/io/pcd_io.h:44,
                 from /home/fighter/slam/slambook2/ch12/dense_RGBD/pointcloud_mapping.cpp:11:
/usr/include/pcl-1.10/pcl/pcl_config.h:7:4: error: #error PCL requires C++14 or above
    7 |   #error PCL requires C++14 or above
      |    ^~~~~

ここに画像の説明を挿入
ここに画像の説明を挿入
理由:
主な理由はC++のバージョンの問題です。

解決策:
C++ バージョン設定ステートメントを含む CMakeLists.txt ファイル内のバージョンを 14 以降に変更します。
その後、make 中にいくつかの警告が表示されますが、その時点ではプログラムの結果には影響しません。
ここに画像の説明を挿入

3.3 cmake ...、vtk の問題が発生します。

生じる問題:

The imported target "vtkRenderingPythonTkWidgets" references the file
   "/usr/lib/x86_64-linux-gnu/libvtkRenderingPythonTkWidgets.so"
but this file does not exist.  Possible reasons include:
* The file was deleted, renamed, or moved to another location.
* An install or uninstall procedure did not complete successfully.
* The installation package was faulty and contained
   "/usr/lib/cmake/vtk-7.1/VTKTargets.cmake"
but not all the files it references.

-- The imported target "pvtk" references the file
   "/usr/bin/pvtk"
but this file does not exist.  Possible reasons include:
* The file was deleted, renamed, or moved to another location.
* An install or uninstall procedure did not complete successfully.
* The installation package was faulty and contained
   "/usr/lib/cmake/vtk-7.1/VTKTargets.cmake"
but not all the files it references.

解決策:
2 つのソフト リンクを作成します。
最初のソフト リンク:

sudo ln -s /usr/lib/python2.7/dist-packages/vtk/libvtkRenderingPythonTkWidgets.x86_64-linux-gnu.so /usr/lib/x86_64-linux-gnu/libvtkRenderingPythonTkWidgets.so

2 番目のソフト リンク:

sudo ln -s /usr/bin/vtk7 /usr/bin/vtk 

3.4 ./dense_mapping /home/fighter/slam/slambook2/ch12/test_data を実行するとセグメント エラーが発生する

発生するエラー:

 ./dense_mapping /home/fighter/slam/slambook2/ch12/test_data
read total 202 files.
*** loop 1 ***
Segmentation fault

理由:
セグメンテーション違反 (コア ダンプ) は、主にメモリの不適切な操作が原因で発生します。null ポインタとワイルド ポインタの読み取りおよび書き込み操作、配列の範囲外アクセス、定数の破棄など。例えば、最近の位置エネルギーグラフコードにおけるリンクリスト演算、代入を含むリンクリストの追加や解放など、不適切な操作があるとプログラムがクラッシュする可能性があります。この問題を回避するには、宣言後に各ポインタを NULL に初期化するのが良い方法です。この問題をトラブルシューティングする最良の方法は、デバッグすることです。

解決策:
ファイル Density_mapping.cpp に update 関数を bool 型として定義しますが、戻り値がなく、void に変更できます。
変更前の例としては、次のようなものがあります。
ここに画像の説明を挿入

変更後の例としては、次のようなものがあります。

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/qq_44164791/article/details/131284692