编译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", , &ImageGrabber::GrabImage,&igb);
>
ros::Subscriber sub = nodeHandler.subscribe("/usb_cam/image_raw", , &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. REQUIRED)
>
find_package(OpenCV 3.2. 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. /usr/lib/x86_64-linux-gnu/libproj.so

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

解决办法:

在CMakeLists.txt中加上以下内容

find_package(OpenCV 3.2. REQUIRED)
find_package(Eigen3 3.1. 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配置

Ubuntu 16.04 编译ORB_SLAM2_modified的更多相关文章

  1. PHP7 学习笔记(一)Ubuntu 16.04 编译安装Nginx-1.10.3、 PHP7.0.9、Redis3.0 扩展、Phalcon3.1 扩展、Swoole1.9.8 扩展、ssh2扩展(全程编译安装)

    ==================== PHP 7.0 编译安装================== wget http://cn2.php.net/get/php-7.0.9.tar.bz2/fr ...

  2. Ubuntu 16.04 编译安装 ss

    在网上没有找到合适的适合ubuntu的ss客户端, 考虑到ss的编译安装其实就带了ss-local这样的客户端, 于是在Ubuntu下编译安装了ss. 首先去github上下载最新的安装包 https ...

  3. Ubuntu 16.04 编译安装&&用dpkg安装--zabbix3.4

    编译安装zabbix3.4,官方有教程,但是遇到一些报错: 总结下来,需要安装这些环境: 更新系统: apt update apt upgrade 先装这些: apt-get install libm ...

  4. UBUNTU 16.04 编译 OPENJDK8

    参考了几篇文章,和错误查询,最后总结如下 一.下载 我比较倾向于使用mercurial来获取源代码,虽然你得挑网络稳定的时候更新,但是易更新. 从官网查找一下,可以通过以下步骤完成源代码的下载 1. ...

  5. ubuntu 16.04 编译安装 amule (开启GUI)

    安装依赖 $ -dev libgeoip-dev zlib1g-dev libupnp-dev libboost-all-dev libwxbase3.-dev libwxgtk3.-dev buil ...

  6. ubuntu 16.04 编译安装 trl8291cu系列 无线网卡驱动

    1 先 下载git包 和相关编译工具 sudo apt-get update sudo apt-get install git linux-headers-generic build-essentia ...

  7. ubuntu 16.04 编译安装 python3.9

    下载 python包 wget https://www.python.org/ftp/python/3.9.1/Python-3.9.1.tgz 解压 tar zxf Python-3.9.1.tgz ...

  8. Ubuntu 16.04 编译OpenCV 问题解决stdlib.h: No such file or directory

    https://blog.csdn.net/xinyu391/article/details/72867510 https://ask.csdn.net/questions/365969

  9. [Android 编译(一)] Ubuntu 16.04 LTS 成功编译 Android 6.0 源码教程

    本文转载自:[Android 编译(一)] Ubuntu 16.04 LTS 成功编译 Android 6.0 源码教程 1 前言 经过3天奋战,终于在Ubuntu 16.04上把Android 6. ...

随机推荐

  1. 详解嵌套ListView、ScrollView布局显示不全的问题

    在项目开发中,可能经常遇到嵌套ListView.ScrollView的问题,就是重写onMeasure方法.解决如下 public class ExpandListView extends ListV ...

  2. 创建的项目如果没有src/main/resources文件夹,如何解决?

    这是刚创建的一个maven项目,由此可以看见,项目并没有存放配置文件的src/main/resources文件夹? 解决方案: (1)选中项目,右键单击,如图所示选择:Build Path --> ...

  3. 四十二:数据库之SQLAlchemy之数据查询懒加载技术

    懒加载在一对多,或者多对多的时候,如果要获取多的这一部分的数据的时候,通过一个relationship定义好对应关系就可以全部获取,此时获取到的数据是list,但是有时候不想获取全部数据,如果要进行数 ...

  4. Kibana 5.5.2 安装包下载 (各种历史版本下载)

    背景说明 最近项目中在使用 5.5.2 版本的  Elasticsearch 作为数据库,使用的是以前的老版本. 用到 Elasticsearch ,难免要和其相关基本操作命令打交道.选择一款顺手的工 ...

  5. mingw32环境上静态编译 dav1d 0.4.0

    2019-08-05 发布 dav1d 0.4.0 dav1d 'Cheetah', the fast and small AV1 decoder This is the fourth major r ...

  6. oracle导入导出常见问题及解决方案

    一.导出 1.导出命令     exp 用户名/密码@实例名 file=路径 2.出现问题:空表不能导出, 解决方案:   --查找空表 SELECT TABLE_NAME FROM USER_TAB ...

  7. java调用支付宝 支付api 【沙箱环境】

    由于支付宝支付api需要各种备案,但学校项目需要引入支付功能  先演示  ,所以采用 沙箱环境 一.登录支付宝 开放平台 及配置相关 https://openhome.alipay.com/platf ...

  8. 【VS开发】visual studio 2015的NuGet Manager解决方案管理功能

    NuGet的官方说明是:NuGet是一款Visual Studio的扩展,它可以简单的安装.升级开源库和工具. 官网地址:http://www.nuget.org/ 官网最醒目的位置就是下载链接,安装 ...

  9. value(C# )

    上下文关键字 value 用在普通属性声明的 set 访问器中. 此关键字类似于方法的输入参数. 关键字 value 引用客户端代码尝试分配给属性的值. 在以下示例中,MyDerivedClass 有 ...

  10. 在 IntelliJ IDEA 中使用 Git,太方便了!

    git是目前流行的分布式版本管理系统.它拥有两套版本库,本地库和远程库,在不进行合并和删除之类的操作时这两套版本库互不影响.也 因此其近乎所有的操作都是本地执行,所以在断网的情况下任然可以提交代码,切 ...