g2o

ubuntu16.04安装g2o时出现 E: 无法定位软件包 libcholmod-dev

别来无恙 提交于 2019-12-04 12:17:39
最近在学习slam ,在安装g2o库的时候总是出现E: 无法定位软件包 libcholmod-dev这样的问题。 查资料查了一下午才知道原来输入sudo apt-get install libcholmod然后按Tab键,Tab键就是自动补充命令,当你记不住完整命令的时候,你按下它,他会自动搜索!我在这里出来的是libcholmod3.0.4,然后安装就好! 在运行 build$ ./curve_fitting时出现./curve_fitting: error while loading shared libraries: libg2o_core.so: cannot open shared object file: No such file or directory的错误时“发现问题的原因是在默认情况下,编译器只会使用/lib和/usr/lib这两个目录下的库文件,通过源码包进行安装时,如果不指定–prefix会将库安装在/usr/local目录下,而又没有在文件/etc/ld.so.conf中添加 /usr/local/lib这个目录。这样虽然安装了源码包,但是使用时仍然找不到相关的.so库,就会报错。也就是说系统不知道安装了源码包。” 网络上的解决方法是在/etc/ld.so.conf里添加绝对路径/usr/local/lib。应该 sudo gedit /etc/ld.so

第十讲 g2o_custombundle/g2o_bundle.cpp

匿名 (未验证) 提交于 2019-12-03 00:27:02
4、将下降策略设定为optimizer的setAlgorithm()。 SolveProblem()就启动优化了,此函数运行完后优化就完毕了。所以main()中就是直接调用了一句这个函数就完事了。 #include <Eigen/StdVector> #include <Eigen/Core> #include <iostream> #include <stdint.h> #include <unordered_set> #include <memory> #include <vector> #include <stdlib.h> #include "g2o/stuff/sampler.h" #include "g2o/core/sparse_optimizer.h" #include "g2o/core/block_solver.h" #include "g2o/core/solver.h" #include "g2o/core/robust_kernel_impl.h" #include "g2o/core/batch_stats.h" #include "g2o/core/optimization_algorithm_levenberg.h" #include "g2o/core/optimization_algorithm_dogleg.h" #include "g2o

第九讲 0.3

匿名 (未验证) 提交于 2019-12-03 00:26:01
当然同时增加的还有g2o相关的头文件和源文件:g2o_types.h和g2o_types.cpp EdgeProjectXYZ2UVPoseOnly 0.3版本只用到了第三种,也就是3D2D的重投影误差,所以只说一下第三种,其他两种也差不多: #ifndef MYSLAM_G2O_TYPES_H #define MYSLAM_G2O_TYPES_H #include "myslam/common_include.h" #include "camera.h" #include <g2o/core/base_vertex.h> #include <g2o/core/base_unary_edge.h> #include <g2o/core/block_solver.h> #include <g2o/core/optimization_algorithm_levenberg.h> #include <g2o/types/sba/types_six_dof_expmap.h> #include <g2o/solvers/dense/linear_solver_dense.h> #include <g2o/core/robust_kernel.h> #include <g2o/core/robust_kernel_impl.h> namespace myslam { class

g2o、Eigen、Mat矩阵类型转换

 ̄綄美尐妖づ 提交于 2019-12-02 04:59:06
1. Eigen 矩阵赋值 1) 使用 row 或者 col Eigen::Matrix3d R = Eigen::Matrix3d::Identity(); R.row(0) = Eigen::Vector3d(-0.0134899,-0.997066,0.0753502); R.row(1) = Eigen::Vector3d(-0.0781018,-0.0740761,-0.99419); R.row(2) = Eigen::Vector3d(0.996854,-0.0192965,-0.0768734); 2)使用 block 注意:g2o中使用的 g2o::Matrix3D 是 typedef Eigen::Matrix<double,3,3,Eigen::ColMajor> Matrix3D; ,即还是使用的 Eigen 矩阵 g2o::Matrix3D R = g2o::Matrix3D::Identity(); R.block<2,2>(0,0) << cos(theta),-sin(theta),sin(theta),cos(theta); Se3 <-> SE3Quat Matrix3D Rbc=toEigenMatrix3d(se3bc.R()); Vector3D tbc=toG2oVector3D(se3bc.tvec); g2o::SE3Quat Tbc

G2O框架

守給你的承諾、 提交于 2019-11-30 19:56:40
(一)简介:   g2o简称General Graphic Optimization,是一个用来优化非线性误差函数的c++框架 (二)g2o基本框架 1: SparseOptimizer SparseOptimizer是整个图的核心,我们注意右上角的 is-a 实心箭头,这个SparseOptimizer它是一个Optimizable Graph,从而也是一个超图(HyperGraph) 其中超图(HyperGraph)包括多个边与顶点;SparseOptimizer包括一个优化算法 2: 定点与边 这个超图包含了许多顶点(HyperGraph::Vertex)和边(HyperGraph::Edge)。而这些顶点顶点继承自 Base Vertex,也就是OptimizableGraph::Vertex,而边可以继承自 BaseUnaryEdge(单边), BaseBinaryEdge(双边)或BaseMultiEdge(多边),它们都叫做OptimizableGraph::Edge 3: 设置非线性优化的下降策略 OptimizationAlgorithm是通过OptimizationWithHessian 来实现的。其中迭代策略可以从Gauss-Newton(高斯牛顿法,简称GN), Levernberg-Marquardt(简称LM法), Powell's dogleg