ubuntu(14):ubuntu16编译move_base报错与解决

目录

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.1 解决方案----从wiki--失败

3.2 安装libaria库

        注意:这一步可能对下一步有帮助,目前还不清楚,需要文件的邮箱联系

3.3 替换rosaria包

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

3.4 最终,编译通过:



1 Could NOT find OpenVDB (missing: OPENVDB_LOCATION)

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAYml0ZXIwMDg4,size_20,color_FFFFFF,t_70,g_se,x_16

 解决:我的另一篇博客: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版本的

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAYml0ZXIwMDg4,size_20,color_FFFFFF,t_70,g_se,x_16         点击上图的链接:http://robots.mobilerobots.com/wiki/Aria去下载.deb,一直跳转不了;

        下面的github也说跳转不了:

No such file Aria.h · Issue #42 · amor-ros-pkg/rosaria · GitHub

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAYml0ZXIwMDg4,size_20,color_FFFFFF,t_70,g_se,x_16

        注:上图红框中的方法简单尝试一下,没有成功,就没有再花时间了(可能会有效)

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)

         编译,显示版本不兼容。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAYml0ZXIwMDg4,size_20,color_FFFFFF,t_70,g_se,x_16

        注意:这一步可能对下一步有帮助,目前还不清楚,需要文件的邮箱联系

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

3.4 最终,编译通过:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值