视觉SLAM十四讲ch5问题记录

1.rgbd

1.1 报错:编译执行make时报错(没有规则可制作目标“/usr/lib/libOpenNI.so)

Scanning dependencies of target joinMap
[ 50%] Building CXX object CMakeFiles/joinMap.dir/joinMap.o
make[2]: *** 没有规则可制作目标“/usr/lib/libOpenNI.so”,由“joinMap” 需求。 停止。
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/joinMap.dir/all' failed
make[1]: *** [CMakeFiles/joinMap.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2

解决:这应该是未安装Pangolin或之前的安装损坏不能用了,可参考一下链接安装:

Ubuntu20.04安装Pangolin(视觉SLAM十四讲)-CSDN博客

1.2 但如果之前在别的目录安装过,现在不能用了,再次安装Pangolin可能会报如下错误:

CMake Error: The current CMakeCache.txt directory /home/qh/Desktop/gaoxiang_code/slambook2/3rdparty/Pangolin/build/CMakeCache.txt is 
different than the directory /home/qh/Desktop/slambook/3rdparty/Pangolin/build where 
CMakeCache.txt was created. This may result in binaries being created in the wrong place. 
If you are not sure, reedit the CMakeCache.txt
CMake Error: The source "/home/qh/Desktop/gaoxiang_code/slambook2/3rdparty/Pangolin/CMakeLists.txt" 
does not match the source "/home/qh/Desktop/slambook/3rdparty/Pangolin/CMakeLists.txt" 
used to generate cache.  Re-run cmake with a different source directory.

这个问题涉及到CMake在构建项目时遇到的路径不一致问题。具体来说,CMake缓存文件(CMakeCache.txt)的当前目录与创建该缓存文件时所用的目录不一致,同时CMakeLists.txt文件的路径也不匹配。这通常发生在尝试在不同目录下复用或重新构建项目时,而没有正确清理或重新配置CMake环境。

解决:删掉原安装目录里的文件及现要安装目录下build文件夹的里文件,再重新安装Pangolin。

1.3 Pangolin安装后还可能报一大堆错(报错打印末尾段如下)

text<char, fmt::v8::detail::error_handler> > >&)’中:
joinMap.cpp:(.text._ZN3fmt2v86detail15do_parse_arg_idIcRZNS1_15parse_precisionIcRNS1_13specs_checkerINS1_21dynamic_specs_handlerINS0_26basic_format_parse_contextIcNS1_13error_handlerEEEEEEEEEPKT_SE_SE_OT0_E17precision_adapterEESE_SE_SE_SG_[_ZN3fmt2v86detail15do_parse_arg_idIcRZNS1_15parse_precisionIcRNS1_13specs_checkerINS1_21dynamic_specs_handlerINS0_26basic_format_parse_contextIcNS1_13error_handlerEEEEEEEEEPKT_SE_SE_OT0_E17precision_adapterEESE_SE_SE_SG_]+0xb5):对‘fmt::v8::detail::assert_fail(char const*, int, char const*)’未定义的引用
CMakeFiles/joinMap.dir/joinMap.o:在函数‘int fmt::v8::detail::get_dynamic_spec<fmt::v8::detail::width_checker, fmt::v8::basic_format_arg<fmt::v8::basic_format_context<fmt::v8::appender, char> >, fmt::v8::detail::error_handler>(fmt::v8::basic_format_arg<fmt::v8::basic_format_context<fmt::v8::appender, char> >, fmt::v8::detail::error_handler)’中:
joinMap.cpp:(.text._ZN3fmt2v86detail16get_dynamic_specINS1_13width_checkerENS0_16basic_format_argINS0_20basic_format_contextINS0_8appenderEcEEEENS1_13error_handlerEEEiT0_T1_[_ZN3fmt2v86detail16get_dynamic_specINS1_13width_checkerENS0_16basic_format_argINS0_20basic_format_contextINS0_8appenderEcEEEENS1_13error_handlerEEEiT0_T1_]+0x27e):对‘fmt::v8::detail::error_handler::on_error(char const*)’未定义的引用
CMakeFiles/joinMap.dir/joinMap.o:在函数‘int fmt::v8::detail::get_dynamic_spec<fmt::v8::detail::precision_checker, fmt::v8::basic_format_arg<fmt::v8::basic_format_context<fmt::v8::appender, char> >, fmt::v8::detail::error_handler>(fmt::v8::basic_format_arg<fmt::v8::basic_format_context<fmt::v8::appender, char> >, fmt::v8::detail::error_handler)’中:
joinMap.cpp:(.text._ZN3fmt2v86detail16get_dynamic_specINS1_17precision_checkerENS0_16basic_format_argINS0_20basic_format_contextINS0_8appenderEcEEEENS1_13error_handlerEEEiT0_T1_[_ZN3fmt2v86detail16get_dynamic_specINS1_17precision_checkerENS0_16basic_format_argINS0_20basic_format_contextINS0_8appenderEcEEEENS1_13error_handlerEEEiT0_T1_]+0x27e):对‘fmt::v8::detail::error_handler::on_error(char const*)’未定义的引用
CMakeFiles/joinMap.dir/joinMap.o:在函数‘void fmt::v8::detail::check_string_type_spec<fmt::v8::detail::error_handler>(fmt::v8::presentation_type, fmt::v8::detail::error_handler&&)’中:
joinMap.cpp:(.text._ZN3fmt2v86detail22check_string_type_specINS1_13error_handlerEEEvNS0_17presentation_typeEOT_[_ZN3fmt2v86detail22check_string_type_specINS1_13error_handlerEEEvNS0_17presentation_typeEOT_]+0x22):对‘fmt::v8::detail::error_handler::on_error(char const*)’未定义的引用
CMakeFiles/joinMap.dir/joinMap.o:在函数‘unsigned long long fmt::v8::detail::width_checker<fmt::v8::detail::error_handler>::operator()<int, 0>(int)’中:
joinMap.cpp:(.text._ZN3fmt2v86detail13width_checkerINS1_13error_handlerEEclIiLi0EEEyT_[_ZN3fmt2v86detail13width_checkerINS1_13error_handlerEEclIiLi0EEEyT_]+0x2f):对‘fmt::v8::detail::error_handler::on_error(char const*)’未定义的引用
CMakeFiles/joinMap.dir/joinMap.o:在函数‘unsigned long long fmt::v8::detail::width_checker<fmt::v8::detail::error_handler>::operator()<unsigned int, 0>(unsigned int)’中:
joinMap.cpp:(.text._ZN3fmt2v86detail13width_checkerINS1_13error_handlerEEclIjLi0EEEyT_[_ZN3fmt2v86detail13width_checkerINS1_13error_handlerEEclIjLi0EEEyT_]+0x2f):对‘fmt::v8::detail::error_handler::on_error(char const*)’未定义的引用
CMakeFiles/joinMap.dir/joinMap.o:joinMap.cpp:(.text._ZN3fmt2v86detail13width_checkerINS1_13error_handlerEEclIxLi0EEEyT_[_ZN3fmt2v86detail13width_checkerINS1_13error_handlerEEclIxLi0EEEyT_]+0x32): 跟着更多未定义的参考到 fmt::v8::detail::error_handler::on_error(char const*)
collect2: error: ld returned 1 exit status
CMakeFiles/joinMap.dir/build.make:113: recipe for target 'joinMap' failed
make[2]: *** [joinMap] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/joinMap.dir/all' failed
make[1]: *** [CMakeFiles/joinMap.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2

这应该是cmakelists文件没有写完整,改成如下代码:
参考自:Ubuntu20.04 18.04编译视觉SLAM十四讲slambook2/ch5/rgbd_ch5点云共有0个点-CSDN博客

project(rgbd)
 
cmake_minimum_required(VERSION 3.10)
 
find_package(Sophus REQUIRED)
 
add_executable(joinMap joinMap.cpp)
 
include_directories(${Sophus_INCLUDE_DIRS})
 
#链接OpenCV库
 
find_package(OpenCV REQUIRED)
 
#添加头文件
 
include_directories( ${OpenCV-INCLUDE_DIRS})
 
target_link_libraries(joinMap ${OpenCV_LIBS} ${Pangolin_LIBRARIES})
 
 
find_package(Pangolin REQUIRED)
 
 
target_link_libraries(joinMap ${OpenCV_LIBS} ${Pangolin_LIBRARIES})
 
 
# Eigen
 
include_directories("/usr/local/include/eigen3")
 
target_link_libraries(joinMap ${Sophus_LIBRARIES} fmt)
 
 
#链接c++11
 
set(CMAKE_CXX_FLAGS "-std=c++11") 

rgbd程序运行成功记录:


视觉SLAM十四》的第七章主要介绍了ORB特征的手写实现。ORB特征是一种基于FAST角点检测和BRIEF描述子的特征提取方法,它在计算效率和鲁棒性上表现出色,被广泛应用于视觉SLAM中。 第七章还介绍了ORB特征的主要步骤,包括角点检测、特征描述子计算和特征匹配。在角点检测中,通过FAST算法检测图像中的角点位置。然后,利用BRIEF描述子计算对应角点位置的特征描述子。最后,通过特征匹配算法将当前帧的ORB特征与地图中的ORB特征进行匹配,从而实现相机的位姿估计和地图构建。 除了手写ORB特征的实现,第七章还介绍了ORB-SLAM系统的整体框架和关键技术。该系统结合了特征点法和直接法,实现了在无GPS和IMU信息的情况下进行实时的视觉SLAM。通过利用ORB特征进行初始化、追踪和建图,ORB-SLAM系统在室内和室外环境下都取得了良好的效果。 总而言之,视觉SLAM的第七章《视觉SLAM十四》介绍了手写ORB特征的实现方法,并介绍了ORB-SLAM系统的整体框架和关键技术。这些内容对于理解和应用视觉SLAM具有重要意义。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [视觉SLAM十四——ch7](https://blog.csdn.net/weixin_58021155/article/details/123496372)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [《视觉slam十四》学习笔记——ch7实践部分 比较opencv库下的ORB特征的提取和手写ORB的区别](https://blog.csdn.net/weixin_70026476/article/details/127415318)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值