激光slam学习笔记4--slam_in_autonomous_driving编译碰到问题汇总

背景:项目需要,学习一些imu姿态估计知识。从组长那边借来高翔新作:自动驾驶与机器人中的slam技术,仔细看一看。环境,ubuntu20.04。

一、资料准备

课本对应的代码

一些依赖,首先参考github上对应的readme介绍安装

二、踩到的坑

报错1:

cpp 复制代码
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
CHOLMOD_LIBRARY
    linked by target "run_gins_pre_integ" in directory /home/ylh/code_ws/slam_in_autonomous_driving/src/ch4

解决方式:

cpp 复制代码
sudo apt install libcholmod3 libsuitesparse-dev

报错2:

cpp 复制代码
/home/ylh/code_ws/slam_in_autonomous_driving/thirdparty/g2o/g2o/core/openmp_mutex.h:30:10: fatal error: g2o/config.h: No such file or directory
   30 | #include "g2o/config.h"

解决方式:

cpp 复制代码
将thirdparty/g2o/build/g2o/config.h拷贝到thirdparty/g20/目录下

报错3:

cpp 复制代码
fatal error: velodyne_msgs/VelodyneScan.h: No such file or directory
   18 | #include "velodyne_msgs/VelodyneScan.h"

解决方式:

cpp 复制代码
sudo apt install ros-noetic-velodyne-msgs安装消息依赖

报错4:

cpp 复制代码
make[2]: *** No rule to make target 'gmock', needed by '../bin/test_nn'.  Stop.
make[1]: *** [CMakeFiles/Makefile2:4227: src/ch5/CMakeFiles/test_nn.dir/all] Error 2

解决方式:

修改ch4、ch5对应的cmakelists.txt:

ch4:

cpp 复制代码
# 查找 Google Test,它应该也包含了 Google Mock
find_package(GTest REQUIRED)
include_directories(${GTEST_INCLUDE_DIRS})
 
# 添加您的库
add_library(${PROJECT_NAME}.ch4
        gins_pre_integ.cc
        imu_preintegration.cc
        g2o_types.cc
)
 
# 添加您的测试可执行文件
add_executable(test_preintegration test_preintegration.cc)
 
# 链接 Google Test (它应该包含了 gmock) 以及其他依赖项
target_link_libraries(test_preintegration
        ${GTEST_LIBRARIES}
        pthread glog gflags ${PROJECT_NAME}.ch4 ${PROJECT_NAME}.ch3 ${PROJECT_NAME}.common
)
 
# 添加测试
add_test(NAME test_preintegration COMMAND test_preintegration)
 
# 添加其他可执行文件
add_executable(run_gins_pre_integ run_gins_pre_integ.cc)
target_link_libraries(run_gins_pre_integ
        ${PROJECT_NAME}.ch3
        ${PROJECT_NAME}.ch4
        ${G2O_LIBS}
)

ch5:

cpp 复制代码
find_package(GTest REQUIRED)
include_directories(${GTEST_INCLUDE_DIRS})

add_executable(point_cloud_load_and_vis point_cloud_load_and_vis.cc)
target_link_libraries(point_cloud_load_and_vis
        ${PCL_LIBRARIES}
        ${GLOG_LIBRARIES}
        gflags
        )

add_executable(pcd_to_bird_eye pcd_to_bird_eye.cc)
target_link_libraries(pcd_to_bird_eye
        ${PCL_LIBRARIES}
        ${GLOG_LIBRARIES}
        ${OpenCV_LIBS}
        gflags
        )

add_executable(scan_to_range_image scan_to_range_image.cc)
target_link_libraries(scan_to_range_image
        ${PCL_LIBRARIES}
        ${GLOG_LIBRARIES}
        ${OpenCV_LIBS}
        gflags
        )

add_library(${PROJECT_NAME}.ch5
        bfnn.cc
        kdtree.cc
        octo_tree.cc
        )
target_link_libraries(${PROJECT_NAME}.ch5
        tbb
        )

add_executable(linear_fitting linear_fitting.cc)
target_link_libraries(linear_fitting
        ${PCL_LIBRARIES}
        ${GLOG_LIBRARIES}
        ${OpenCV_LIBS}
        gflags
        )

ADD_EXECUTABLE(test_nn test_nn.cc)
ADD_TEST(test_nn test_bfnn)

target_link_libraries(test_nn
        gtest pthread glog gflags ${PROJECT_NAME}.ch5 ${PROJECT_NAME}.common ${PCL_LIBRARIES} tbb
        )

参考

报错5:

cpp 复制代码
Failed to find glog - Could not find glog include directory

解决方式:

cpp 复制代码
sudo apt-get install libgoogle-glog-dev

三、小结

1、thirdparty目录下,对g2o、livox_ros_driver、Pangolin进行:

cpp 复制代码
mkdir build && cd build
cmake .. && make

其他包没有进行编译操作

2、确保上述对应的坑都踩了,编译时还提示奇奇怪怪错误,可将根目录下build删除新建,再进行cmake .. && make 操作

###################

好记性不如烂笔头

积跬步期千里

相关推荐
孤寂大仙v1 小时前
【Linux笔记】理解文件系统(上)
linux·运维·笔记
ianozo1 小时前
数据结构--【栈与队列】笔记
数据结构·笔记
极客BIM工作室2 小时前
机器学校的考试风波:误差分析、过拟合和欠拟合
笔记·机器学习
flashier3 小时前
C语言 进阶指针学习笔记
c语言·笔记·学习
大白的编程日记.3 小时前
【Linux学习笔记】Linux基本指令分析和权限的概念
linux·笔记·学习
螺旋式上升abc3 小时前
GO语言学习笔记
笔记·学习·golang
Moonnnn.4 小时前
51单片机——汇编工程建立、仿真、调试全过程
汇编·笔记·嵌入式硬件·学习·51单片机
画个逗号给明天"4 小时前
TinyWebServer项目笔记——02 半同步半反应堆线程池
笔记
不会聊天真君6474 小时前
HTML5(Web前端开发笔记第一期)
笔记·html5
!!!5255 小时前
Sentinel 笔记
笔记·sentinel