IDE:VSCode
BUG:fatal error: lidar_localization/saveMap.h: 没有那个文件或目录
解决方法:
saveMap.h是ros编译saveMap.srv自动生成的,进行catkin_make编译后在工作空间目录下的/devel/include里有/lidar_localization文件夹,里面就包含了上面的.h文件
我们只需要将这个绝对路径添加到/.vscode的c_cpp_properties.json文件的头文件路径内即可
注意是src目录下的.vscode文件夹,添加到其他子目录下的.vscode文件夹依然找不到头文件
顺便修改其他文件下的绝对路径,避免其他错误
同理可解决:fatal error: lidar_localization/optimizeMap.h: 没有那个文件或目录
BUG2:terminate called after throwing an instance of 'YAML::BadFile'
what(): bad file
问题探索:
查阅相关文章后得出该问题的主要原因只有一个:yaml文件的路径不对,导致找不到对应的yaml文件
接下来就是寻找工程中的哪个文件编写了yaml文件的路径
直接在搜索框搜索yaml,第一个即yaml文件的编写位置,在front_end.cpp文件的第26行
这里编写的是相对路径,先得到WORK_SPACE_PATH,后面才是yaml文件的具体位置,因此尝试打印一下WORK_SPACE_PATH
在给变量赋值前对WORK_SPACE_PATH进行打印
LOG(INFO) << WORK_SPACE_PATH << std::endl;
打印结果为
即找不到WORK_SPACE_PATH,这便是问题根源所在
因此跳到WORK_SPACE_PATH定义的位置,将其修改为绝对路径
//const std::string WORK_SPACE_PATH = "@WORK_SPACE_PATH@";
const std::string WORK_SPACE_PATH = "/home/hzc/my_ws/src/localization_in_auto_driving-5.0/lidar_localization";
编译后运行成功
解决办法:
将WORK_SPACE_PATH的内容修改为绝对路径,详细到/lidar_localization文件夹