博主是在ubuntu 18.04 ros melodic进行编译DVO SLAM时遇到一些问题,这里记录一下
1.pluginlib版本问题
/home/riger/dvo_ws/src/dvo_slam/dvo_ros/src/camera_tracker_nodelet.cpp:24:24: error: expected constructor, destructor, or type conversion before ‘(’ token
PLUGINLIB_DECLARE_CLASS(dvo_ros, camera_tracker, dvo_ros::CameraTrackerNodelet, nodelet::Nodelet)
PLUGINLIB_DECLARE_CLASS(dvo_ros, camera_tracker, dvo_ros::CameraTrackerNodelet, nodelet::Nodelet) 替换为
PLUGINLIB_EXPORT_CLASS(dvo_ros::CameraTrackerNodelet, nodelet::Nodelet)
2.g2o更新问题
/home/riger/dvo_ws/src/dvo_slam/dvo_slam/src/local_map.cpp:81:13: error: no matching function for call to ‘g2o::BlockSolver<g2o::BlockSolverTraits<6, 3> >::BlockSolver(dvo_slam::internal::LocalMapImpl::LinearSolver*)’
解决方法
// g2o setup这段注释后面改为
std::unique_ptr<BlockSolver::LinearSolverType> linearSolver = g2o::make_unique<LinearSolver>();
std::unique_ptr <BlockSolver> block_solver ( new BlockSolver( std::move(linearSolver)) );
graph_.setAlgorithm(
new g2o::OptimizationAlgorithmLevenberg(
std::move(block_solver)
)
);
还有一个类似的错误也是同理修改
3.使用catkin build报config错
解决方法:使用catkin_make