日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

indigo版本teb_local_planner常见编译问题

發(fā)布時間:2023/12/8 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 indigo版本teb_local_planner常见编译问题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

項目場景:

Teb局部路徑規(guī)劃器的indigo版本在編譯時可能會遇到如下編譯報錯情況


問題描述

提示:/home/ros/catkin_ws/data/huang/my_ws/src/teb_local_planner-indigo-devel/src/optimal_planner.cpp:155:64: error: no matching function for call to ‘g2o::BlockSolver<g2o::BlockSolverTraits<-1, -1> >::BlockSolver(teb_local_planner::TEBLinearSolver*&)’
? ?TEBBlockSolver* blockSolver = new TEBBlockSolver(linearSolver);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ^

/home/ros/catkin_ws/data/huang/my_ws/src/teb_local_planner-indigo-devel/src/optimal_planner.cpp: In member function ‘boost::shared_ptr<g2o::SparseOptimizer> teb_local_planner::TebOptimalPlanner::initOptimizer()’: /home/ros/catkin_ws/data/huang/my_ws/src/teb_local_planner-indigo-devel/src/optimal_planner.cpp:155:64: error: no matching function for call to ‘g2o::BlockSolver<g2o::BlockSolverTraits<-1, -1> >::BlockSolver(teb_local_planner::TEBLinearSolver*&)’TEBBlockSolver* blockSolver = new TEBBlockSolver(linearSolver);^ /home/ros/catkin_ws/data/huang/my_ws/src/teb_local_planner-indigo-devel/src/optimal_planner.cpp:155:64: note: candidate is: In file included from /usr/local/include/g2o/core/block_solver.h:199:0,from /home/ros/catkin_ws/data/huang/my_ws/src/teb_local_planner-indigo-devel/include/teb_local_planner/optimal_planner.h:55,from /home/ros/catkin_ws/data/huang/my_ws/src/teb_local_planner-indigo-devel/src/optimal_planner.cpp:39: /usr/local/include/g2o/core/block_solver.hpp:40:1: note: g2o::BlockSolver<Traits>::BlockSolver(std::unique_ptr<typename Traits::LinearSolverType>) [with Traits = g2o::BlockSolverTraits<-1, -1>; typename Traits::LinearSolverType = g2o::LinearSolver<Eigen::Matrix<double, -1, -1> >]BlockSolver<Traits>::BlockSolver(std::unique_ptr<LinearSolverType> linearSolver)^ /usr/local/include/g2o/core/block_solver.hpp:40:1: note: ? no known conversion for argument 1 from ‘teb_local_planner::TEBLinearSolver* {aka g2o::LinearSolverCSparse<Eigen::Matrix<double, -1, -1> >*}’ to ‘std::unique_ptr<g2o::LinearSolver<Eigen::Matrix<double, -1, -1> >, std::default_delete<g2o::LinearSolver<Eigen::Matrix<double, -1, -1> > > >’ /home/ros/catkin_ws/data/huang/my_ws/src/teb_local_planner-indigo-devel/src/optimal_planner.cpp:156:100: error: no matching function for call to ‘g2o::OptimizationAlgorithmLevenberg::OptimizationAlgorithmLevenberg(teb_local_planner::TEBBlockSolver*&)’g2o::OptimizationAlgorithmLevenberg* solver = new g2o::OptimizationAlgorithmLevenberg(blockSolver);^ /home/ros/catkin_ws/data/huang/my_ws/src/teb_local_planner-indigo-devel/src/optimal_planner.cpp:156:100: note: candidate is: In file included from /home/ros/catkin_ws/data/huang/my_ws/src/teb_local_planner-indigo-devel/include/teb_local_planner/optimal_planner.h:58:0,from /home/ros/catkin_ws/data/huang/my_ws/src/teb_local_planner-indigo-devel/src/optimal_planner.cpp:39: /usr/local/include/g2o/core/optimization_algorithm_levenberg.h:47:16: note: g2o::OptimizationAlgorithmLevenberg::OptimizationAlgorithmLevenberg(std::unique_ptr<g2o::Solver>)explicit OptimizationAlgorithmLevenberg(std::unique_ptr<Solver> solver);^ /usr/local/include/g2o/core/optimization_algorithm_levenberg.h:47:16: note: ? no known conversion for argument 1 from ‘teb_local_planner::TEBBlockSolver* {aka g2o::BlockSolver<g2o::BlockSolverTraits<-1, -1> >*}’ to ‘std::unique_ptr<g2o::Solver>’

原因分析:

提示:note: ? no known conversion for argument 1 from ‘teb_local_planner::TEBBlockSolver* {aka g2o::BlockSolver<g2o::BlockSolverTraits<-1, -1> >*}’ to ‘std::unique_ptr<g2o::Solver>’

例如:因為g2o庫一直在更新,而indigo版本的Teb已經(jīng)是2015年的代碼,optimal_planner.cpp里申明的普通指針并不能轉(zhuǎn)換成智能指針。


解決方案:

提示:

? // allocating the optimizer
? boost::shared_ptr<g2o::SparseOptimizer> optimizer = boost::make_shared<g2o::SparseOptimizer>();
? std::unique_ptr<TEBLinearSolver> linearSolver(new TEBLinearSolver()); // see typedef in optimization.h
? linearSolver->setBlockOrdering(true);
? std::unique_ptr<TEBBlockSolver> blockSolver(new TEBBlockSolver(std::move(linearSolver)));
? g2o::OptimizationAlgorithmLevenberg* solver = new g2o::OptimizationAlgorithmLevenberg(std::move(blockSolver));

將報錯位置optimal_planner.cpp里的// allocating the optimizer部分更換成如上寫法,問題即可解決。

總結(jié)

以上是生活随笔為你收集整理的indigo版本teb_local_planner常见编译问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。