目录
1 Could NOT find OpenVDB (missing: OPENVDB_LOCATION)
2 Could not find a package configuration file provided by "costmap_converter"
3 /move_base/src/rosaria/RosAria.cpp:6:25: fatal error: Aria/Aria.h: 没有那个文件或目录
注意:这一步可能对下一步有帮助,目前还不清楚,需要文件的邮箱联系
3.3.1 error: ‘i’ does not name a type for(auto i = p->cbegin(); i != p->cend(); ++i)
3.3.2 error: no matching function for call to ‘g2o::BlockSolver<-1,>
3.3.3 报错:/usr/bin/ld: 当搜索用于 /usr/local/Aria/lib/libAria.so 时跳过不兼容的 -lAria
1 Could NOT find OpenVDB (missing: OPENVDB_LOCATION)
解决:我的另一篇博客:https://blog.csdn.net/BIT_HXZ/article/details/123694338
2 Could not find a package configuration file provided by "costmap_converter"
CMake Error at /opt/ros/kinetic/share/catkin/cmake/catkinConfig.cmake:83 (find_package):
Could not find a package configuration file provided by "costmap_converter"
with any of the following names:
costmap_converterConfig.cmake
costmap_converter-config.cmake
Add the installation prefix of "costmap_converter" to CMAKE_PREFIX_PATH or
set "costmap_converter_DIR" to a directory containing one of the above
files. If "costmap_converter" provides a separate development package or
SDK, be sure it has been installed.
Call Stack (most recent call first):
move_base/src/teb_local_planner-kinetic-devel/CMakeLists.txt:8 (find_package)
解决:
sudo apt-get install ros-kinetic-costmap-converter
3 /move_base/src/rosaria/RosAria.cpp:6:25: fatal error: Aria/Aria.h: 没有那个文件或目录
3.1 解决方案----从wiki--失败
在rosaria的wiki教程上,有安装提示,我需要安装ubuntu16版本的
点击上图的链接:http://robots.mobilerobots.com/wiki/Aria去下载.deb,一直跳转不了;
下面的github也说跳转不了:
No such file Aria.h · Issue #42 · amor-ros-pkg/rosaria · GitHub
注:上图红框中的方法简单尝试一下,没有成功,就没有再花时间了(可能会有效)
3.2 安装libaria库
去搜索 sudo dpkg -i libaria_2.9.1+ubuntu16_i368.deb需要的文件,找到了一个近似版本
这里进行了安装:sudo dpkg -i xxx.deb
/home/meng/Desktop/yellow/guikong/src/move_base/src/rosaria/LaserPublisher.cpp:165:12: error: ‘i’ does not name a type
for(auto i = p->cbegin(); i != p->cend(); ++i)
^
/home/meng/Desktop/yellow/guikong/src/move_base/src/rosaria/LaserPublisher.cpp:165:29: error: expected ‘;’ before ‘i’
for(auto i = p->cbegin(); i != p->cend(); ++i)
^
/home/meng/Desktop/yellow/guikong/src/move_base/src/rosaria/LaserPublisher.cpp:165:29: error: ‘i’ was not declared in this scope
/home/meng/Desktop/yellow/guikong/src/move_base/src/rosaria/LaserPublisher.cpp:165:37: error: ‘const class std::__cxx11::list<ArPoseWithTime*>’ has no member named ‘cend’
for(auto i = p->cbegin(); i != p->cend(); ++i)
编译,显示版本不兼容。
注意:这一步可能对下一步有帮助,目前还不清楚,需要文件的邮箱联系
3.3 替换rosaria包
直接获取github上默认的rosaria包,替换现有的包:
git clone https://github.com/amor-ros-pkg/rosaria.git
编译,报错及解决如下:
3.3.1 error: ‘i’ does not name a type for(auto i = p->cbegin(); i != p->cend(); ++i)
/home/meng/Desktop/yellow/guikong/src/move_base/src/rosaria/LaserPublisher.cpp:165:12: error: ‘i’ does not name a type
for(auto i = p->cbegin(); i != p->cend(); ++i)
^
/home/meng/Desktop/yellow/guikong/src/move_base/src/rosaria/LaserPublisher.cpp:165:29: error: expected ‘;’ before ‘i’
for(auto i = p->cbegin(); i != p->cend(); ++i)
^
/home/meng/Desktop/yellow/guikong/src/move_base/src/rosaria/LaserPublisher.cpp:165:29: error: ‘i’ was not declared in this scope
/home/meng/Desktop/yellow/guikong/src/move_base/src/rosaria/LaserPublisher.cpp:165:37: error: ‘const class std::__cxx11::list<ArPoseWithTime*>’ has no member named ‘cend’
for(auto i = p->cbegin(); i != p->cend(); ++i)
解决:在CMakeLists.txt里面添加c++11编译选项
set(CMAKE_CXX_FLAGS "-std=c++11")
这里参考了一个g++的编译:https://blog.csdn.net/u010420283/article/details/109782294
3.3.2 error: no matching function for call to ‘g2o::BlockSolver<g2o::BlockSolverTraits<-1, -1>
/home/meng/Desktop/yellow/guikong/src/move_base/src/teb_local_planner-kinetic-devel/src/optimal_planner.cpp:159:64: error: no matching function for call to ‘g2o::BlockSolver<g2o::BlockSolverTraits<-1, -1> >::BlockSolver(teb_local_planner::TEBLinearSolver*&)’
TEBBlockSolver* blockSolver = new TEBBlockSolver(linearSolver);
这里参考一个视觉slam十四讲的两个博客,两个博客都不能直接拿来用:https://blog.csdn.net/unlimitedai/article/details/86546368
https://blog.csdn.net/lun55423/article/details/109036995
替换上面报错的行如下,在optimal_planner.cpp中(170多行):(注意:修改部分的前三行可能和原来一样)
// allocating the optimizer
// boost::shared_ptr<g2o::SparseOptimizer> optimizer = boost::make_shared<g2o::SparseOptimizer>();
// TEBLinearSolver* linearSolver = new TEBLinearSolver(); // see typedef in optimization.h
// linearSolver->setBlockOrdering(true);
// TEBBlockSolver* blockSolver = new TEBBlockSolver(linearSolver);
// g2o::OptimizationAlgorithmLevenberg* solver = new g2o::OptimizationAlgorithmLevenberg(blockSolver);
boost::shared_ptr<g2o::SparseOptimizer> optimizer = boost::make_shared<g2o::SparseOptimizer>();
TEBLinearSolver* linearSolver = new TEBLinearSolver();
linearSolver->setBlockOrdering(true);
TEBBlockSolver* blockSolver = new TEBBlockSolver(std::unique_ptr<TEBBlockSolver::LinearSolverType>(linearSolver));
g2o::OptimizationAlgorithmLevenberg* solver = new g2o::OptimizationAlgorithmLevenberg(std::unique_ptr<TEBBlockSolver>(blockSolver));
3.3.3 报错:/usr/bin/ld: 当搜索用于 /usr/local/Aria/lib/libAria.so 时跳过不兼容的 -lAria
参考一个在ubuntu16.04上安装Rosaria包的博客:https://blog.csdn.net/weixin_50774105/article/details/115373845
上面博客中说,官方给出的解决办法为:重新编译ARIA library
cd /usr/local/Aria/
make clean
make -j