zoukankan      html  css  js  c++  java
  • Ubuntu 编译ORB_SLAM2_modified

    编译g2o_with_orbslam2

    1.修改g2o/types/slam2d/edge_se2_pointxy_bearing.cpp

    t.setRotation(t.rotation().angle()+_measurement);  --->>>  t.setRotation((Eigen::Rotation2Dd)(t.rotation().angle()+_measurement));

    2.修改g2o/solvers/eigen/linear_solver_eigen.h

    typedef Eigen::PermutationMatrix<Eigen::Dynamic, Eigen::Dynamic, SparseMatrix::Index> PermutationMatrix;  --->>>  typedef Eigen::PermutationMatrix<Eigen::Dynamic, Eigen::Dynamic, SparseMatrix::StorageIndex> PermutationMatrix;

    (报错信息关键字:YOU_MIXED_DIFFERENT_NUMERIC_TYPES__YOU_NEED_TO_USE_THE_CAST_METHOD_OF_MATRIXBASE_TO_CAST_NUMERIC_TYPES_EXPLICITLY)

    3.修改g2o/g2o/examples/tutorial_slam2d/simulator.cpp: 80行

    VectorXd probLimits(MO_NUM_ELEMS);   --->>>   VectorXd probLimits;  probLimits.resize(MO_NUM_ELEMS);

    (报错信息关键字:FLOATING_POINT_ARGUMENT_PASSED__INTEGER_WAS_EXPECTED)

    编译ORB_SLAM2_modified

    1.编译DBoW2

    cd ~/ORB_SLAM2_modified/Thirdparty/DBoW2
    mkdir build
    cd build
    cmake .. -DCMAKE_BUILD_TYPE=Release
    make -j8

    2.编译ORB_SLAM2_modified

    cd ~/ORB_SLAM2_modified
    mkdir build cd build cmake ..
    -DCMAKE_BUILD_TYPE=Release make -j8

    编译完成之后发现只能显示不能保存,然后查看代码进行修改:

    在/src/pointcloudmapping.cc中加入PCL保存头文件

    #include <pcl/io/pcd_io.h>
    #include <pcl/point_types.h>

    然后在PointCloudMapping::viewer -->> while()函数最后面加入

        if(globalMap->points.size())
        {
        pcl::io::savePCDFileASCII ("test_pcd.pcd", *globalMap);
        cout<< endl << "Saved PCD Successful!!" << endl;
        }
        }
    }

    编译ORB_SLAM2_modified——ROS

    1.更改~/ORB_SLAM2-master/Examples/ROS/ORB_SLAM2/src/ros_mono.cc中(更改接口,否则运行黑屏)(RGBD 即Kinect同理)

    ros::Subscriber sub = nodeHandler.subscribe("/camera/image_raw", 1, &ImageGrabber::GrabImage,&igb);
    >
    ros::Subscriber sub = nodeHandler.subscribe("/usb_cam/image_raw", 1, &ImageGrabber::GrabImage,&igb);

    2.修改CMakeLists.txt

    在相似位置添加

    find_package( PCL 1.7 REQUIRED )
    ${PCL_INCLUDE_DIRS}

    在“Set{”上面加入

    add_definitions( ${PCL_DEFINITIONS} )
    link_directories( ${PCL_LIBRARY_DIRS} )

    修改

    find_package(OpenCV 2.3.9 REQUIRED)
    >
    find_package(OpenCV 3.2.0 REQUIRED)   (本机Opencv版本号)

    修改

    ${PROJECT_SOURCE_DIR}/../../../Thirdparty/g2o/lib/libg2o.so
    >
    ${PROJECT_SOURCE_DIR}/../../../Thirdparty/g2o_with_orbslam2/lib/libg2o_calibration_odom_laser.so
    ${PROJECT_SOURCE_DIR}/../../../Thirdparty/g2o_with_orbslam2/lib/libg2o_cli.so
    ${PROJECT_SOURCE_DIR}/../../../Thirdparty/g2o_with_orbslam2/lib/libg2o_core.so
    ${PROJECT_SOURCE_DIR}/../../../Thirdparty/g2o_with_orbslam2/lib/libg2o_csparse_extension.so
    ${PROJECT_SOURCE_DIR}/../../../Thirdparty/g2o_with_orbslam2/lib/libg2o_ext_csparse.so
    ${PROJECT_SOURCE_DIR}/../../../Thirdparty/g2o_with_orbslam2/lib/libg2o_ext_freeglut_minimal.so
    ${PROJECT_SOURCE_DIR}/../../../Thirdparty/g2o_with_orbslam2/lib/libg2o_hierarchical.so
    ${PROJECT_SOURCE_DIR}/../../../Thirdparty/g2o_with_orbslam2/lib/libg2o_incremental.so
    ${PROJECT_SOURCE_DIR}/../../../Thirdparty/g2o_with_orbslam2/lib/libg2o_interactive.so
    ${PROJECT_SOURCE_DIR}/../../../Thirdparty/g2o_with_orbslam2/lib/libg2o_interface.so
    ${PROJECT_SOURCE_DIR}/../../../Thirdparty/g2o_with_orbslam2/lib/libg2o_opengl_helper.so
    ${PROJECT_SOURCE_DIR}/../../../Thirdparty/g2o_with_orbslam2/lib/libg2o_parser.so
    ${PROJECT_SOURCE_DIR}/../../../Thirdparty/g2o_with_orbslam2/lib/libg2o_simulator.so
    ${PROJECT_SOURCE_DIR}/../../../Thirdparty/g2o_with_orbslam2/lib/libg2o_solver_cholmod.so
    ${PROJECT_SOURCE_DIR}/../../../Thirdparty/g2o_with_orbslam2/lib/libg2o_solver_csparse.so
    ${PROJECT_SOURCE_DIR}/../../../Thirdparty/g2o_with_orbslam2/lib/libg2o_solver_dense.so
    ${PROJECT_SOURCE_DIR}/../../../Thirdparty/g2o_with_orbslam2/lib/libg2o_solver_eigen.so
    ${PROJECT_SOURCE_DIR}/../../../Thirdparty/g2o_with_orbslam2/lib/libg2o_solver_pcg.so
    ${PROJECT_SOURCE_DIR}/../../../Thirdparty/g2o_with_orbslam2/lib/libg2o_solver_slam2d_linear.so
    ${PROJECT_SOURCE_DIR}/../../../Thirdparty/g2o_with_orbslam2/lib/libg2o_solver_structure_only.so
    ${PROJECT_SOURCE_DIR}/../../../Thirdparty/g2o_with_orbslam2/lib/libg2o_stuff.so
    ${PROJECT_SOURCE_DIR}/../../../Thirdparty/g2o_with_orbslam2/lib/libg2o_tutorial_slam2d.so
    ${PROJECT_SOURCE_DIR}/../../../Thirdparty/g2o_with_orbslam2/lib/libg2o_types_data.so
    ${PROJECT_SOURCE_DIR}/../../../Thirdparty/g2o_with_orbslam2/lib/libg2o_types_icp.so
    ${PROJECT_SOURCE_DIR}/../../../Thirdparty/g2o_with_orbslam2/lib/libg2o_types_sba.so
    ${PROJECT_SOURCE_DIR}/../../../Thirdparty/g2o_with_orbslam2/lib/libg2o_types_sclam2d.so
    ${PROJECT_SOURCE_DIR}/../../../Thirdparty/g2o_with_orbslam2/lib/libg2o_types_sim3.so
    ${PROJECT_SOURCE_DIR}/../../../Thirdparty/g2o_with_orbslam2/lib/libg2o_types_slam2d.so
    ${PROJECT_SOURCE_DIR}/../../../Thirdparty/g2o_with_orbslam2/lib/libg2o_types_slam2d_addons.so
    ${PROJECT_SOURCE_DIR}/../../../Thirdparty/g2o_with_orbslam2/lib/libg2o_types_slam3d.so
    ${PROJECT_SOURCE_DIR}/../../../Thirdparty/g2o_with_orbslam2/lib/libg2o_types_slam3d_addons.so
    ${PROJECT_SOURCE_DIR}/../../../Thirdparty/g2o_with_orbslam2/lib/libg2o_viewer.so

     3.编译

    cd ~/ORB_SLAM2_modified/Examples/ROS/ORB_SLAM2
    mkdir build
    cd build
    cmake .. -DCMAKE_BUILD_TYPE=Release
    make -j8

    编译遇到的错误

    1.遇到:*** No rule to make target '/usr/lib/x86_64-linux-gnu/libproj.so', needed by '../lib/libORB_SLAM2.so'。 停止。

    解决办法:

    sudo apt-get install libproj-dev
    sudo ln -s /usr/lib/x86_64-linux-gnu/libproj.so.9 /usr/lib/x86_64-linux-gnu/libproj.so

    2.遇到:/usr/bin/ld: 找不到 -lvtkproj4

    解决办法:

    在CMakeLists.txt中加上以下内容

    find_package(OpenCV 3.2.0 REQUIRED)
    find_package(Eigen3 3.1.0 REQUIRED)
    find_package(Pangolin REQUIRED)
    find_package( G2O REQUIRED )
    find_package( PCL 1.7 REQUIRED )
    
    list(REMOVE_ITEM PCL_LIBRARIES "vtkproj4")
    
    include_directories(
    ${PROJECT_SOURCE_DIR}
    ${PROJECT_SOURCE_DIR}/include
    ${EIGEN3_INCLUDE_DIR}
    ${Pangolin_INCLUDE_DIRS}
    ${PCL_INCLUDE_DIRS}
    )

     其他问题请参考另外两篇文章:

    https://www.cnblogs.com/haijian/p/10226678.html  Ubuntu配置ORB-SLAM2过程中的问题
    https://www.cnblogs.com/haijian/p/9734014.html  Ubuntu 16.04 orb-slam2配置
  • 相关阅读:
    enyo学习之enyo.Object类
    java.lang.Object
    Nginx转发匹配规则
    工具类Redis工具类
    Redis从0到精通Redis.conf详解
    工具类类型转换器
    Docker入门到精通
    Redis从0到精通Jedis
    工具类字符集工具类
    Spock高质量单元测试实操篇
  • 原文地址:https://www.cnblogs.com/haijian/p/10788141.html
Copyright © 2011-2022 走看看