ROS_melodoc编译运行SVO错误的解决方案

在Ubuntu 18.04和ROS_melodoc环境下,编译及运行SVO时可能会遇到G2O和Eigen3版本不兼容的问题,导致编译错误或运行时崩溃。针对这些问题,可以修改SVO源码以适应新版G2O,以及回退到Eigen 3.2.10版本来解决运行时错误。同时,对于OpenCV编译错误,可以先禁用BA功能,单独编译cv_bridge包,再重新编译整个项目。
摘要由CSDN通过智能技术生成

ubuntu18.04-ROS_melodoc下编译和运行SVO(使用数据集)

安装指南:参考以下博客

https://blog.csdn.net/chentianting/article/details/82908402

参考以上博客,可基本运行SVO,但有些还会出现以下问题

1、关于G2O
如果使用的是新版G2O,在设置/catkin_ws/src/SVO/rpg_svo/svo/CMakeLists.txt中,SET(HAVE_G2O TRUE)之后,会报错,报错位置在/catkin_ws/src/SVO/rpg_svo/svo/src/bundle_adjustment.cpp中,错误语句为:

g2o::BlockSolver_6_3::LinearSolverType* linearSolver;
  linearSolver = new g2o::LinearSolverCholmod<g2o::BlockSolver_6_3::PoseMatrixType>();
   g2o::BlockSolver_6_3 * solver_ptr = new g2o::BlockSolver_6_3(linearSolver);
  g2o::OptimizationAlgorithmLevenberg * solver = new g2o::OptimizationAlgorithmLevenberg(solver_ptr);

可更改为:

#if SCHUR_TRICK
  // solver
   //g2o::BlockSolver_6_3::LinearSolverType* linearSolver;
   std::unique_ptr<g2o::BlockSolver_6_3::LinearSolverType> linearSolver(new g2o::LinearSolverCholmod<g2o::BlockSolver_6_3::PoseMatrixType>());
   //g2o::BlockSolver_6_3* solver_ptr = new   g2o::BlockSolver_6_3( std::unique_ptr<g2o::BlockSolver_6_3::LinearSolverType>(linearSolver) );
   std::unique_ptr<g2o::BlockSolver_6_3> solver_ptr(new g2o::BlockSolver_6_3(std::move(linearSolver)));
   g2o::OptimizationAlgorithmLevenberg* solver = new  g2o::OptimizationAlgorithmLevenberg(std::move(solver_ptr) );
    
  //linearSolver = new g2o::LinearSolverCSparse<g2o::BlockSolver_6_3::PoseMatrixType>();

#else
  std::unique_ptr<g2o::BlockSolverX::LinearSolverType> linearSolver(new g2o::LinearSolverCholmod<g2o::BlockSolverX::PoseMatrixType>());
  //linearSolver = new g2o::LinearSolverCSparse<g2o::BlockSolverX::PoseMatrixType>();
  std::unique_ptr<g2o::BlockSolverX> solver_ptr(new g2o::BlockSolverX(std::move(linearSolver)));
  g2o::OptimizationAlgorithmLevenberg* solver = new g2o::OptimizationAlgorithmLevenberg(std::move(solver_ptr));
#endif

2、编译没错误,但在运行时只运行一两秒就报错,错误信息:

CLEAR PARAMETERS
/svo/
PARAMETERS
/rosdistro: melodic
/rosversion: 1.12.5
/svo/cam_cx: 0.45905
/svo/cam_cy: 0.510056
/svo/cam_d0: 0.932
/svo/cam_fx: 0.509326
/svo/cam_fy: 0.796651
/svo/cam_height: 480
/svo/cam_model: ATAN
/svo/cam_topic: /camera/image_raw
/svo/cam_width: 752
/svo/grid_size: 30
/svo/init_rx: 3.14
/svo/init_ry: 0.0
/svo/init_rz: 0.0
/svo/loba_num_iter: 0
/svo/max_n_kfs: 10
NODES
/
svo (svo_ros/vo)

auto-starting new master
process[master]: started with pid [24647]
ROS_MASTER_URI=http://localhost:11311

set
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值