Vorlesung 14 über Visual SLAM – CH12-Übung (Mapping)

0. Einführung in kleine Kenntnisse vor der Praxis

„make -j“ ist ein Linux-Befehl, der alle verfügbaren CPU-Kerne nutzt, um Programme parallel zu kompilieren. Wenn die Anzahl der Prozesse nicht angegeben ist, kann die Verwendung dieses Befehls normalerweise die Nutzung der CPU-Ressourcen maximieren und die Kompilierung beschleunigen.
Dieser Befehl startet so viele Prozesse wie möglich, um das Programm gleichzeitig zu kompilieren, um schnell ausführbare Dateien zu generieren. Dieser Befehl erkennt automatisch die Anzahl der auf dem Computer verfügbaren CPU-Kerne und startet eine entsprechende Anzahl von Kompilierungsaufgaben auf allen verfügbaren Kernen.
Es ist zu beachten, dass die Ausgabe bei Verwendung des Befehls „make -j“ möglicherweise verwechselt wird, da mehrere Prozesse gleichzeitig ausgeführt werden. Dies hat jedoch keinen Einfluss auf die Richtigkeit des Kompilierungsergebnisses. Wenn Sie den Kompilierungsprozess klarer sehen möchten, können Sie den Befehl „make VERBOSE=1“ verwenden, der detailliertere Kompilierungsinformationen ausgibt.

„make -j8“ ist ein Linux-Befehl, der bedeutet, während der Kompilierung 8 parallele Prozesse zu verwenden, um die Kompilierung zu beschleunigen. Der Parameter „-j“ gibt die Anzahl der parallelen Prozesse an, und die folgende Zahl „8“ gibt an, dass 8 Prozesse zum Kompilieren verwendet werden.

Durch die Verwendung mehrerer paralleler Prozesse können mehrere Kompilierungsaufgaben gleichzeitig verarbeitet werden, ohne dass die Korrektheit der Kompilierung beeinträchtigt wird. Dies kann die Kompilierungsgeschwindigkeit erheblich verbessern. Wenn die Hardwarebedingungen dies zulassen, wird empfohlen, diesen Parameter zu verwenden, um die Kompilierung zu beschleunigen.

Es ist zu beachten, dass nicht alle Kompilierungsaufgaben für die parallele Kompilierung mehrerer Prozesse geeignet sind. Daher muss dieser Parameter bei Verwendung entsprechend der tatsächlichen Situation ausgewählt werden. Gleichzeitig ist zu beachten, dass die Verwendung zu vieler paralleler Prozesse bei schlechtem Hardwarezustand zu Kompilierungsfehlern oder zum Einfrieren des Systems führen kann. Sie müssen daher Anpassungen an Ihren eigenen Hardwarezustand vornehmen.

1. Vorbereitungen vor dem praktischen Betrieb

  1. PCL installieren
sudo apt-get install libpcl-dev pcl-tools
  1. Octomap installieren
sudo apt-get install liboctomap-dev octovis
  1. Geben Sie den Ordner ch12 im Terminal ein und führen Sie zum Kompilieren die folgenden Befehle aus.
mkdir build
cd build
cmake ..
//注意,j8还是其他主要看自己的电脑情况
make -j8
  1. Führen Sie es in der Build-Datei aus.
    Hinweis: Während des Erstellungsvorgangs wird dies der Fall seinWarnung, hat aber kaum Auswirkungen auf den Prozess unserer Praxis.

  2. Laden Sie die verwendeten Testdaten herunter. Die Daten stellen eine von einer Drohne gesammelte monokulare Draufsicht dar, insgesamt 200 Teile, und liefern die wahre Pose jedes Bildes. Die Download-Adresse lautet http://rpg.ifi.uzh.ch/datasets/remode_test_data.zip

2. Übungsprozess

2.1 Monokulare dichte Rekonstruktion

Führen Sie die Anweisung im Build aus:

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

Laufergebnis:
das 35. Iterationsbild:
35. Iteration

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

Alle Ergebnisse:

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

Es ist zu erkennen, dass der Effekt bei den ersten 10 Malen bemerkenswert ist und die Geschwindigkeit nach 10 Malen abnimmt.

2.2 RGB-D-Dense-Mapping

  1. RGB-D Dense Mapping ist eine Technik zur 3D-Rekonstruktion unter Verwendung von RGB-Bildern und Tiefenbildern. Im Gegensatz zu herkömmlichen triangulationsbasierten Methoden zur spärlichen Rekonstruktion kann RGB-D Dense Mapping global konsistente dichte 3D-Modelle generieren, einschließlich Objektdetails und -formen. Diese Technologie wird häufig in den Bereichen Roboternavigation, virtuelle Realität, erweiterte Realität und Medizin eingesetzt.

  2. Der grundlegende Prozess der RGB-D-Dichtungskartierung umfasst: Erfassung von RGB- und Tiefenbildern, Punktwolkenerzeugung, dichte Rekonstruktion und Texturkartierung. Unter anderem besteht die Punktwolkengenerierung darin, RGB-Bilder und Tiefenbilder in 3D-Punktwolkendaten umzuwandeln, die dichte Rekonstruktion darin, Punktwolkendaten in 3D-Modelle umzuwandeln, und die Texturzuordnung besteht darin, RGB-Bilder auf die Oberfläche des 3D-Modells abzubilden, um das Modell zu erstellen hat einen Sinn für Realität und Treue.

  3. Der Vorteil der dichten RGB-D-Kartierung besteht darin, dass schnell hochwertige 3D-Modelle erstellt und Oberflächendetails und morphologische Informationen von Objekten erfasst werden können. Aufgrund der hohen Anforderungen an Bildqualität und Kalibrierungsgenauigkeit bedarf diese Technologie jedoch weiterer Verbesserung und Perfektionierung in der praktischen Anwendung.

2.3 Punktwolkenkarte

Führen Sie die Anweisung im Build aus:

cd dense_RGBD
 ./pointcloud_mapping

Operationsergebnis:

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

Gleichzeitig wird eine Datei „map.pcd“ generiert. Der Speicherort dieser Datei lautet:

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

Sie können die Datei „map.pcd“ mit dem folgenden Befehl anzeigen:

 pcl_viewer map.pcd

Die Punktwolke nach der Voxelfilterung ist wie folgt zu sehen. Dies ist das Rekonstruktionsergebnis der fünf ICL-NUIM-Bilder: Ansicht nach dem Vergrößern mit dem Scrollrad: Ansicht nach dem Scrollen und Verkleinern:
Gleichzeitig
groß
wird
Klein
die Das Terminal gibt auch entsprechende Informationen aus:

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 Rekonstruktion des Netzes aus Punktwolke

Führen Sie die Anweisung im Build aus:

cd dense_RGBD
./surfel_mapping map.pcd

Laufergebnis:
Das Ergebnis ist das aus der Punktwolke rekonstruierte Oberflächen- und Netzmodell. Das Bild sieht wie folgt aus
Das Ergebnis ist das aus der Punktwolke rekonstruierte Oberflächen- und Netzmodell. Das Bild sieht wie folgt aus
und das Terminal gibt Informationen aus:

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

2.5 Octree-Karte

Führen Sie die Anweisung im Build aus:

cd dense_RGBD
 ./octomap_mapping

Laufergebnis:
Terminalausgabe:

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

Führen Sie die generierte Datei octomap.bt aus und verwenden Sie den folgenden Befehl, um die Datei anzuzeigen:

 octovis octomap.bt

Terminalausgabe:

Lesen des binären Octree-Typs OcTree

Bilder der Octree-Karte in verschiedenen Auflösungen werden unten angezeigt
0,05 m Auflösung
0,1 m Auflösung

3. Aufgetretene Probleme und Lösungen

Bei 3.1 cmake ... liegt ein OpenCV-Versionsproblem vor

Der auftretende Fehler:

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

Grund:
In CMakeLists.txt liegt ein Problem mit der Version des OpenCV-Sets vor;
dieses Problem liegt hauptsächlich daran, dass sich die Version von OpenCV im Code von der aktuell installierten Version unterscheidet.

Lösung:
Ändern Sie einfach wie bei der vorherigen Lösung die opencv-Version in der Datei CMakeLists.txt.

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

3.2 Bei der Erstellung von -j8 sind einige Fehler aufgetreten, die mit der Version von PCL und opencv zusammenhängen.

  1. Das dabei auftretende Problem:

undefinierter Bezeichner 'CV_GRAY2BGR'

Fügen Sie hier eine Bildbeschreibung ein

Grund:
Dies liegt daran, dass diese Anweisung nicht mit der OpenCV-Version identisch ist.
Lösung:
Ändern Sie die Header-Datei „dense_mapping.cpp“ und fügen Sie die folgenden Header-Dateien hinzu:

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

Die Sammlung von Fehlerberichten zu OpenCV-Versions- und Anweisungsproblemen finden Sie im Artikel: https://blog.csdn.net/qq_44164791/article/details/131210608?spm=1001.2014.3001.5502

  1. Das dabei auftretende Problem:

Das aufgetretene Problem:
Beim Erstellen ist ein roter Fehler aufgetreten, der den Bildschirm aktualisiert hat. Hier sind zwei Absätze:

/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
      |    ^~~~~

Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein
Grund:
Der Hauptgrund liegt im Problem der C++-Version

Lösung:
Ändern Sie die Version in der Datei CMakeLists.txt, die die C++-Versionseinstellungsanweisung enthält, auf 14 oder höher.
Dann werden während der Erstellung einige Warnungen angezeigt, die sich zu diesem Zeitpunkt nicht auf die Programmergebnisse auswirken.
Fügen Sie hier eine Bildbeschreibung ein

3.3 cmake ..., es wird vtk-Probleme geben,

Das dabei auftretende Problem:

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.

Lösung:
Erstellen Sie zwei Softlinks:
den ersten Softlink:

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

Der zweite Softlink:

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

3.4 Beim Ausführen von ./dense_mapping /home/fighter/slam/slambook2/ch12/test_data tritt ein Segmentfehler auf

Der auftretende Fehler:

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

Grund:
Segmentierungsfehler (Kern-Dump) wird meist durch unsachgemäßen Betrieb des Speichers verursacht. Lese- und Schreiboperationen von Nullzeigern und Wildzeigern, Zugriff auf Arrays außerhalb der Grenzen, Zerstörung von Konstanten usw. Beispielsweise kann der Vorgang der verknüpften Liste im aktuellen Code für das Diagramm der potenziellen Energie, das Hinzufügen und Freigeben der verknüpften Liste, einschließlich der Zuweisung usw., bei fehlerhaften Vorgängen zum Absturz des Programms führen. Das Initialisieren jedes Zeigers auf NULL nach der Deklaration ist eine gute Möglichkeit, dieses Problem zu vermeiden. Der beste Weg, dieses Problem zu beheben, ist das Debuggen.

Lösung:
Definieren Sie die Aktualisierungsfunktion in der Datei „dense_mapping.cpp“ als Bool-Typ, sie hat jedoch keinen Rückgabewert und kann in „void“ geändert werden.
Vor der Änderung zum Beispiel einer davon:
Fügen Sie hier eine Bildbeschreibung ein

Nach der Änderung zum Beispiel einer davon:

Fügen Sie hier eine Bildbeschreibung ein

Je suppose que tu aimes

Origine blog.csdn.net/qq_44164791/article/details/131284692
conseillé
Classement