12.1 理论部分

可参考博客:

  1. SLAM14讲-ch12建图笔记
  2. 视觉SLAM十四讲:回环检测-知识点+代码

12.2 实践部分

12.2.1 单目稠密重建

从网址下载数据

: test_data

https://rpg.ifi.uzh.ch/datasets/remode_test_data.zip

代码及详细注释如下:

代码较长便补上来了,主要还没解读
复制

编译完成后在终端输入./dense_mono/dense_mapping ../remode_test_data/test_data 即可运行单目稠密重建程序

结果如下:

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.00821914
*** 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.00812056
*** 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.00722756
*** 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.00722575
*** loop 198 ***
Average squared error = 0.253476, average error: -0.00722573
*** loop 199 ***
Average squared error = 0.253473, average error: -0.00722449
*** loop 200 ***
Average squared error = 0.253483, average error: -0.00722778
*** loop 201 ***
estimation returns, saving depth map ...
done.

复制

上述代码执行时间相对较长,需要十几分钟,具体视电脑性能,我的代码执行中经常跳出提示 Depth_truth无响应

,也不知道是因为什么,一直点击等待就好吧.

 `depth

12.2.2 RGB-D稠密建图

注意!!!修改文件路径

将 ifstream fin("./data/pose.txt")修改为 ifstream fin("../dense_RGBD/data/pose.txt");
将 boost::format fmt("./data/%s/%d.%s"); //图像文件格式修改为 boost::format fmt("../dense_RGBD/data/%s/%d.%s"); //图像文件格式

八叉树建图-octomap_mapping

代码及详细注释如下:

代码较长便补上来了,主要也是还没解读
复制

编译完成后在终端输入./dense_RGBD/octomap_mapping 

即可运行单目稠密重建程序

结果如下:
在这里插入图片描述

生成一个文件cotomap.bt

,可用下面命令进行查看生成的八叉树文件

octovis octomap.bt
复制

在这里插入图片描述

这里报了一个错

octovis: error while loading shared libraries: liboctomap.so.1.9: cannot open shared object file: No such file or directory
复制

出现这类错误表示,系统不知道xxx.so放在哪个目录下,这时候就要在/etc/ld.so.conf中加入xxx.so所在的目录。

一般而言,有很多的so会存放在/usr/local/lib这个目录底下,去这个目录底下找,果然发现自己所需要的.so文件。

所以,在/etc/ld.so.conf中加入/usr/local/lib这一行,保存之后,再运行:sudo ldconfig更新一下配置即可。

在这里插入图片描述

但是在实际操作过程中发现自己并无权限,并且/usr/local/lib这一行已经在文档中,故只执行了 sudo ldconfig.结果可以正常显示八叉树, 不再报错.

点云-网格建图-pointcloud_mapping

代码及详细注释如下:

代码较长便补上来了,主要也是还没解读

编译完成后在终端输入./dense_RGBD/pointcloud_mapping 即可运行单目稠密重建程序

结果如下:
在这里插入图片描述

会生成点云文件map.pcd,用以下指令打开该文件:

pcl_viewer map.pcd

在这里插入图片描述

surfel重建 -surfel_mapping

代码及详细注释如下:

代码较长便补上来了,主要也是还没解读

编译完成后在终端输入./dense_RGBD/surfel_mapping map.pcd 即可运行单目稠密重建程序

结果如下:
在这里插入图片描述在这里插入图片描述

Bug调试

cmake ..就报了错

CMake Error at dense_RGBD/CMakeLists.txt:19 (find_package):
  By not providing "Findoctomap.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "octomap", but
  CMake did not find one.

  Could not find a package configuration file provided by "octomap" with any
  of the following names:

    octomapConfig.cmake
    octomap-config.cmake

  Add the installation prefix of "octomap" to CMAKE_PREFIX_PATH or set
  "octomap_DIR" to a directory containing one of the above files.  If
  "octomap" provides a separate development package or SDK, be sure it has
  been installed.

在这里插入图片描述这里报错的原因是没安装Octomap库及其依赖项doxygen,如若没安装这些直接编译程序,则会出现上面那些报错.

安装教程可参考 ubuntu18.04 安装octomap库

(如果git clone 进程很慢,就自己down下来然后安装即可)

安装好Octomap再次调试,报错如下:

CMakeFiles/dense_mapping.dir/dense_mapping.cpp.o:在函数‘updateDepthFilter(Eigen::Matrix<double, 2, 1, 0, 2, 1> const&, Eigen::Matrix<double, 2, 1, 0, 2, 1> const&, Sophus::SE3<double, 0> const&, Eigen::Matrix<double, 2, 1, 0, 2, 1> const&, cv::Mat&, cv::Mat&)’中:
dense_mapping.cpp:(.text+0x26e7):对‘fmt::v8::vprint(fmt::v8::basic_string_view<char>, fmt::v8::basic_format_args<fmt::v8::basic_format_context<fmt::v8::appender, char> >)’未定义的引用
CMakeFiles/dense_mapping.dir/dense_mapping.cpp.o:在函数‘readDatasetFiles(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, std::vector<Sophus::SE3<double, 0>, std::allocator<Sophus::SE3<double, 0> > >&, cv::Mat&)’中:
dense_mapping.cpp:(.text+0x3a22):对‘fmt::v8::vprint(fmt::v8::basic_string_view<char>, fmt::v8::basic_format_args<fmt::v8::basic_format_context<fmt::v8::appender, char> >)’未定义的引用
CMakeFiles/dense_mapping.dir/dense_mapping.cpp.o:在函数‘Sophus::SO3Base<Sophus::SO3<double, 0> >::normalize() [clone .part.646]’中:
dense_mapping.cpp:(.text.unlikely+0x32):对‘fmt::v8::vprint(fmt::v8::basic_string_view<char>, fmt::v8::basic_format_args<fmt::v8::basic_format_context<fmt::v8::appender, char> >)’未定义的引用
CMakeFiles/dense_mapping.dir/dense_mapping.cpp.o:在函数‘char const* fmt::v8::detail::parse_replacement_field<char, fmt::v8::detail::format_string_checker<char, fmt::v8::detail::error_handler, Eigen::Transpose<Eigen::Matrix<double, 4, 1, 0, 4, 1> > >&>(char const*, char const*, fmt::v8::detail::format_string_checker<char, fmt::v8::detail::error_handler, Eigen::Transpose<Eigen::Matrix<double, 4, 1, 0, 4, 1> > >&)’中:
dense_mapping.cpp:(.text._ZN3fmt2v86detail23parse_replacement_fieldIcRNS1_21format_string_checkerIcNS1_13error_handlerEJN5Eigen9TransposeINS5_6MatrixIdLi4ELi1ELi0ELi4ELi1EEEEEEEEEEPKT_SE_SE_OT0_[_ZN3fmt2v86detail23parse_replacement_fieldIcRNS1_21format_string_checkerIcNS1_13error_handlerEJN5Eigen9TransposeINS5_6MatrixIdLi4ELi1ELi0ELi4ELi1EEEEEEEEEEPKT_SE_SE_OT0_]+0x13c):对‘fmt::v8::detail::error_handler::on_error(char const*)’未定义的引用
dense_mapping.cpp:(.text._ZN3fmt2v86detail23parse_replacement_fieldIcRNS1_21format_string_checkerIcNS1_13error_handlerEJN5Eigen9TransposeINS5_6MatrixIdLi4ELi1ELi0ELi4ELi1EEEEEEEEEEPKT_SE_SE_OT0_[_ZN3fmt2v86detail23parse_replacement_fieldIcRNS1_21format_string_checkerIcNS1_13error_handlerEJN5Eigen9TransposeINS5_6MatrixIdLi4ELi1ELi0ELi4ELi1EEEEEEEEEEPKT_SE_SE_OT0_]+0x165):对‘fmt::v8::detail::error_handler::on_error(char const*)’未定义的引用
dense_mapping.cpp:(.text._ZN3fmt2v86detail23parse_replacement_fieldIcRNS1_21format_string_checkerIcNS1_13error_handlerEJN5Eigen9TransposeINS5_6MatrixIdLi4ELi1ELi0ELi4ELi1EEEEEEEEEEPKT_SE_SE_OT0_[_ZN3fmt2v86detail23parse_replacement_fieldIcRNS1_21format_string_checkerIcNS1_13error_handlerEJN5Eigen9TransposeINS5_6MatrixIdLi4ELi1ELi0ELi4ELi1EEEEEEEEEEPKT_SE_SE_OT0_]+0x17b):对‘fmt::v8::detail::error_handler::on_error(char const*)’未定义的引用
dense_mapping.cpp:(.text._ZN3fmt2v86detail23parse_replacement_fieldIcRNS1_21format_string_checkerIcNS1_13error_handlerEJN5Eigen9TransposeINS5_6MatrixIdLi4ELi1ELi0ELi4ELi1EEEEEEEEEEPKT_SE_SE_OT0_[_ZN3fmt2v86detail23parse_replacement_fieldIcRNS1_21format_string_checkerIcNS1_13error_handlerEJN5Eigen9TransposeINS5_6MatrixIdLi4ELi1ELi0ELi4ELi1EEEEEEEEEEPKT_SE_SE_OT0_]+0x1cb):对‘fmt::v8::detail::error_handler::on_error(char const*)’未定义的引用
dense_mapping.cpp:(.text._ZN3fmt2v86detail23parse_replacement_fieldIcRNS1_21format_string_checkerIcNS1_13error_handlerEJN5Eigen9TransposeINS5_6MatrixIdLi4ELi1ELi0ELi4ELi1EEEEEEEEEEPKT_SE_SE_OT0_[_ZN3fmt2v86detail23parse_replacement_fieldIcRNS1_21format_string_checkerIcNS1_13error_handlerEJN5Eigen9TransposeINS5_6MatrixIdLi4ELi1ELi0ELi4ELi1EEEEEEEEEEPKT_SE_SE_OT0_]+0x1e3):对‘fmt::v8::detail::error_handler::on_error(char const*)’未定义的引用
CMakeFiles/dense_mapping.dir/dense_mapping.cpp.o:dense_mapping.cpp:(.text._ZN3fmt2v86detail23parse_replacement_fieldIcRNS1_21format_string_checkerIcNS1_13error_handlerEJN5Eigen9TransposeINS5_6MatrixIdLi4ELi1ELi0ELi4ELi1EEEEEEEEEEPKT_SE_SE_OT0_[_ZN3fmt2v86detail23parse_replacement_fieldIcRNS1_21format_string_checkerIcNS1_13error_handlerEJN5Eigen9TransposeINS5_6MatrixIdLi4ELi1ELi0ELi4ELi1EEEEEEEEEEPKT_SE_SE_OT0_]+0x1f2): 跟着更多未定义的参考到 fmt::v8::detail::error_handler::on_error(char const*)
CMakeFiles/dense_mapping.dir/dense_mapping.cpp.o:在函数‘main’中:
dense_mapping.cpp:(.text.startup+0xe96):对‘fmt::v8::vprint(fmt::v8::basic_string_view<char>, fmt::v8::basic_format_args<fmt::v8::basic_format_context<fmt::v8::appender, char> >)’未定义的引用
dense_mapping.cpp:(.text.startup+0x1018):对‘fmt::v8::vprint(fmt::v8::basic_string_view<char>, fmt::v8::basic_format_args<fmt::v8::basic_format_context<fmt::v8::appender, char> >)’未定义的引用

在这里插入图片描述看到报错主要和fmt有关,应该是和fmt的链接有关,可以在CmakeList 文件中在target_link_libraries'语句后面都加上 fmt`.

dens_Mono和dens_ORGB两个文件夹的CmakeList都可以修改,以防报错

1.dens_MonoCmakeList

cmake_minimum_required(VERSION 2.8)
project(dense_monocular)

set(CMAKE_BUILD_TYPE "Release")
set(CMAKE_CXX_FLAGS "-std=c++11 -march=native -O3")

############### dependencies ######################
# Eigen
include_directories("/usr/include/eigen3")
# OpenCV
find_package(OpenCV 3.1 REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
# Sophus
find_package(Sophus REQUIRED)
include_directories(${Sophus_INCLUDE_DIRS})

set(THIRD_PARTY_LIBS
        ${OpenCV_LIBS}
        ${Sophus_LIBRARIES})

add_executable(dense_mapping dense_mapping.cpp)
target_link_libraries(dense_mapping ${THIRD_PARTY_LIBS} fmt)

2.dens_RGBDCmakeList

cmake_minimum_required(VERSION 2.8)

set(CMAKE_BUILD_TYPE Release)
set(CMAKE_CXX_FLAGS "-std=c++11 -O2")

# opencv 
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})

# eigen 
include_directories("/usr/include/eigen3/")

# pcl 
find_package(PCL REQUIRED)
include_directories(${PCL_INCLUDE_DIRS})
add_definitions(${PCL_DEFINITIONS})

# octomap 
find_package(octomap REQUIRED)
include_directories(${OCTOMAP_INCLUDE_DIRS})

add_executable(pointcloud_mapping pointcloud_mapping.cpp)
target_link_libraries(pointcloud_mapping ${OpenCV_LIBS} ${PCL_LIBRARIES} fmt)

add_executable(octomap_mapping octomap_mapping.cpp)
target_link_libraries(octomap_mapping ${OpenCV_LIBS} ${PCL_LIBRARIES} ${OCTOMAP_LIBRARIES} fmt)

add_executable(surfel_mapping surfel_mapping.cpp)
target_link_libraries(surfel_mapping ${OpenCV_LIBS} ${PCL_LIBRARIES} fmt)

即可编译通过
在这里插入图片描述

参考博客

  1. 【读书笔记】《视觉SLAM十四讲(高翔著)》 第13讲
  2. 视觉SLAM十四讲从理论到实践第二版源码调试笔记(实践应用7-14章)
  3. SLAM14讲学习笔记(十四)ch13 建图(代码详述带注释)