g2o: A General Framework for Graph Optimization

Overview

g2o - General Graph Optimization

Linux: CI Windows: Build status Codacy Badge

g2o is an open-source C++ framework for optimizing graph-based nonlinear error functions. g2o has been designed to be easily extensible to a wide range of problems and a new problem typically can be specified in a few lines of code. The current implementation provides solutions to several variants of SLAM and BA.

A wide range of problems in robotics as well as in computer-vision involve the minimization of a non-linear error function that can be represented as a graph. Typical instances are simultaneous localization and mapping (SLAM) or bundle adjustment (BA). The overall goal in these problems is to find the configuration of parameters or state variables that maximally explain a set of measurements affected by Gaussian noise. g2o is an open-source C++ framework for such nonlinear least squares problems. g2o has been designed to be easily extensible to a wide range of problems and a new problem typically can be specified in a few lines of code. The current implementation provides solutions to several variants of SLAM and BA. g2o offers a performance comparable to implementations of state-of-the-art approaches for the specific problems (02/2011).

Papers Describing the Approach

Rainer Kuemmerle, Giorgio Grisetti, Hauke Strasdat, Kurt Konolige, and Wolfram Burgard g2o: A General Framework for Graph Optimization IEEE International Conference on Robotics and Automation (ICRA), 2011

Documentation

A detailed description of how the library is structured and how to use and extend it can be found in /doc/g2o.pdf The API documentation can be generated as described in doc/doxygen/readme.txt

License

g2o is licensed under the BSD License. However, some libraries are available under different license terms. See below.

The following parts are licensed under LGPL3+:

  • csparse_extension

The following parts are licensed under GPL3+:

  • g2o_viewer
  • g2o_incremental
  • slam2d_g2o (example for 2D SLAM with a QGLviewer GUI)

Please note that some features of CHOLMOD (which may be used by g2o, see libsuitesparse below) are licensed under the GPL. To avoid the GPL, you may have to re-compile CHOLMOD without including its GPL features. The CHOLMOD library distributed with, for example, Ubuntu or Debian includes the GPL features. The supernodal factorization is considered by g2o, if it is available.

Within the folder g2o/EXTERNAL we include software not written by us to guarantee easy compilation.

  • ceres: BSD (see g2o/EXTERNAL/ceres/LICENSE) Headers to perform Automatic Differentiation

  • freeglut: X Consortium (Copyright (c) 1999-2000 Pawel W. Olszta) We use a stripped down version for drawing text in OpenGL.

See the doc folder for the full text of the licenses.

g2o is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the licenses for more details.

Requirements

On Ubuntu / Debian these dependencies are resolved by installing the following packages.

  • cmake
  • libeigen3-dev

Optional requirements

On Ubuntu / Debian these dependencies are resolved by installing the following packages.

  • libsuitesparse-dev
  • qtdeclarative5-dev
  • qt5-qmake
  • libqglviewer-dev-qt5

Mac OS X

If using Homebrew, then

brew install brewsci/science/g2o

will install g2o together with its required dependencies. In this case no manual compilation is necessary.

Windows

If using vcpkg, then

scripts\install-deps-windows.bat

will build and install the required dependencies. The location of vcpkg and required triplet are determined by the environment variables VCPKG_ROOT_DIR and VCPKG_DEFAULT_TRIPLET.

Compilation

Our primary development platform is Linux. Experimental support for Mac OS X, Android and Windows (MinGW or MSVC). We recommend a so-called out of source build which can be achieved by the following command sequence.

  • mkdir build
  • cd build
  • cmake ../
  • make

The binaries will be placed in bin and the libraries in lib which are both located in the top-level folder.

On Windows with vcpkg the following two commands will generate build scripts for Visual Studio 2017 MSVC 14 tool set:

  • mkdir build
  • cd build
  • cmake -G "Visual Studio 14 2017 Win64" -DG2O_BUILD_APPS=ON -DG2O_BUILD_EXAMPLES=ON -DVCPKG_TARGET_TRIPLET="%VCPKG_DEFAULT_TRIPLET%" -DCMAKE_TOOLCHAIN_FILE="%VCPKG_ROOT_DIR%\scripts\buildsystems\vcpkg.cmake" ..

If you are compiling on Windows and you are for some reasons not using vcpkg please download Eigen3 and extract it. Within cmake-gui set the variable G2O_EIGEN3_INCLUDE to that directory.

Cross-Compiling for Android

  • mkdir build
  • cd build
  • cmake -DCMAKE_TOOLCHAIN_FILE=../script/android.toolchain.cmake -DANDROID_NDK=<YOUR_PATH_TO_ANDROID_NDK_r10d+> -DCMAKE_BUILD_TYPE=Release -DANDROID_ABI="armeabi-v7a with NEON" -DEIGEN3_INCLUDE_DIR="<YOUR_PATH_TO_EIGEN>" -DEIGEN3_VERSION_OK=ON .. && cmake --build .

Acknowledgments

We thank the following contributors for providing patches:

  • Simon J. Julier: patches to achieve compatibility with Mac OS X and others.
  • Michael A. Eriksen for submitting patches to compile with MSVC.
  • Mark Pupilli for submitting patches to compile with MSVC.

Projects using g2o

Contact information

Comments
  • Memory Corruption and Segfault on basic example

    Memory Corruption and Segfault on basic example

    Hi everybody,

    first of all thanks for this great piece of software! I have used g2o before, but I get segfault and memory corruption errors with a fairly new version of g2o. Note that compiling works like a charm, no errors there. I have also used g2o before with an older version (latest tag). Here are my details:

    OS: Ubuntu 16.04 G2O Revision: 653c9eedc51f73394451cd8f55463c962b4092ab GCC: gcc (Ubuntu 5.4.0-6ubuntu1~16.04.10) 5.4.0 20160609 CMake: cmake version 3.5.1

    I have created a very simple example which crashes in my setup all the time.

    #include <g2o/core/block_solver.h>
    #include <g2o/core/optimization_algorithm_levenberg.h>
    #include <g2o/solvers/csparse/linear_solver_csparse.h>
    #include <g2o/types/slam3d/edge_se3.h>
    #include <g2o/types/slam3d/vertex_se3.h>
    
    typedef g2o::LinearSolverCSparse<g2o::BlockSolverX::PoseMatrixType> SlamLinearSolver;
    
    int main(int argc, char **argv)
    {
        g2o::SparseOptimizer optimizer;
    
    
        auto linearSolver = g2o::make_unique<SlamLinearSolver>();
        linearSolver->setBlockOrdering(false);
    
        auto blockSolver =
            g2o::make_unique<g2o::BlockSolverX>(std::move(linearSolver));
    
        g2o::OptimizationAlgorithm *algorithm =
            new g2o::OptimizationAlgorithmLevenberg(std::move(blockSolver));
    
        optimizer.setVerbose(true);
        optimizer.setAlgorithm(algorithm);
    
        g2o::VertexSE3 *v = new g2o::VertexSE3();
        v->setId(0);
        v->setEstimate(g2o::Isometry3::Identity());
        v->setFixed(false);
        optimizer.addVertex(v);
    
        v = new g2o::VertexSE3();
        v->setId(1);
        v->setEstimate(g2o::Isometry3::Identity());
        v->setFixed(false);
        optimizer.addVertex(v);
    
        g2o::EdgeSE3 *e = new g2o::EdgeSE3();
        e->setInformation(g2o::EdgeSE3::InformationType::Identity());
        e->setMeasurement(g2o::Isometry3::Identity());
        e->vertices()[0] = optimizer.vertex(0);
        e->vertices()[1] = optimizer.vertex(1);
        optimizer.addEdge(e);
    
        optimizer.initializeOptimization();
        optimizer.optimize(100);
    
        return 0;
    }
    

    The crash creates direct command line output stating a memory corruption as follows:

    *** Error in `./devel/lib/sensor-calibration/calibrate_sensors': free(): invalid next size (fast): 0x0000000000b64770 ***
    ======= Backtrace: =========
    /lib/x86_64-linux-gnu/libc.so.6(+0x777e5)[0x7f4f082b77e5]
    /lib/x86_64-linux-gnu/libc.so.6(+0x8037a)[0x7f4f082c037a]
    /lib/x86_64-linux-gnu/libc.so.6(+0x82d52)[0x7f4f082c2d52]
    /lib/x86_64-linux-gnu/libc.so.6(posix_memalign+0x11d)[0x7f4f082c771d]
    /home/fabian/develop/calib_ws/src/sensor_calibration/external/install/lib/libg2o_types_slam3d.so(_ZNSt6vectorIN5Eigen9TransformIdLi3ELi1ELi0EEENS0_17aligned_allocatorIS2_EEE19_M_emplace_back_auxIJRKS2_EEEvDpOT_+0x7f)[0x7f4f094403ff]
    /home/fabian/develop/calib_ws/src/sensor_calibration/external/install/lib/libg2o_core.so(_ZN3g2o15SparseOptimizer4pushERSt6vectorIPNS_16OptimizableGraph6VertexESaIS4_EE+0x28)[0x7f4f096c3c78]
    /home/fabian/develop/calib_ws/src/sensor_calibration/external/install/lib/libg2o_core.so(_ZN3g2o30OptimizationAlgorithmLevenberg5solveEib+0xb1)[0x7f4f096ccda1]
    /home/fabian/develop/calib_ws/src/sensor_calibration/external/install/lib/libg2o_core.so(_ZN3g2o15SparseOptimizer8optimizeEib+0xf7)[0x7f4f096c49d7]
    ./devel/lib/sensor-calibration/calibrate_sensors(main+0x37b)[0x4d7ddb]
    /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0)[0x7f4f08260830]
    ./devel/lib/sensor-calibration/calibrate_sensors(_start+0x29)[0x4d7909]
    ======= Memory map: ========
    00400000-0055d000 r-xp 00000000 00:33 1056490                            /home/fabian/develop/calib_ws/devel/lib/sensor-calibration/calibrate_sensors
    0075d000-0075e000 r--p 0015d000 00:33 1056490                            /home/fabian/develop/calib_ws/devel/lib/sensor-calibration/calibrate_sensors
    0075e000-0075f000 rw-p 0015e000 00:33 1056490                            /home/fabian/develop/calib_ws/devel/lib/sensor-calibration/calibrate_sensors
    00b4e000-00b80000 rw-p 00000000 00:00 0                                  [heap]
    7f4f00000000-7f4f00021000 rw-p 00000000 00:00 0 
    7f4f00021000-7f4f04000000 ---p 00000000 00:00 0 
    7f4f04bf1000-7f4f04bf6000 r-xp 00000000 08:03 5381482                    /usr/lib/x86_64-linux-gnu/libXdmcp.so.6.0.0
    7f4f04bf6000-7f4f04df5000 ---p 00005000 08:03 5381482                    /usr/lib/x86_64-linux-gnu/libXdmcp.so.6.0.0
    7f4f04df5000-7f4f04df6000 r--p 00004000 08:03 5381482                    /usr/lib/x86_64-linux-gnu/libXdmcp.so.6.0.0
    7f4f04df6000-7f4f04df7000 rw-p 00005000 08:03 5381482                    /usr/lib/x86_64-linux-gnu/libXdmcp.so.6.0.0
    7f4f04df7000-7f4f04df9000 r-xp 00000000 08:03 5381471                    /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0
    7f4f04df9000-7f4f04ff9000 ---p 00002000 08:03 5381471                    /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0
    7f4f04ff9000-7f4f04ffa000 r--p 00002000 08:03 5381471                    /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0
    7f4f04ffa000-7f4f04ffb000 rw-p 00003000 08:03 5381471                    /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0
    7f4f04ffb000-7f4f0500b000 r-xp 00000000 08:03 5379974                    /usr/lib/x86_64-linux-gnu/libdrm.so.2.4.0
    7f4f0500b000-7f4f0520b000 ---p 00010000 08:03 5379974                    /usr/lib/x86_64-linux-gnu/libdrm.so.2.4.0
    7f4f0520b000-7f4f0520c000 r--p 00010000 08:03 5379974                    /usr/lib/x86_64-linux-gnu/libdrm.so.2.4.0
    7f4f0520c000-7f4f0520d000 rw-p 00011000 08:03 5379974                    /usr/lib/x86_64-linux-gnu/libdrm.so.2.4.0
    7f4f0520d000-7f4f05212000 r-xp 00000000 08:03 5381520                    /usr/lib/x86_64-linux-gnu/libXxf86vm.so.1.0.0
    7f4f05212000-7f4f05411000 ---p 00005000 08:03 5381520                    /usr/lib/x86_64-linux-gnu/libXxf86vm.so.1.0.0
    7f4f05411000-7f4f05412000 r--p 00004000 08:03 5381520                    /usr/lib/x86_64-linux-gnu/libXxf86vm.so.1.0.0
    7f4f05412000-7f4f05413000 rw-p 00005000 08:03 5381520                    /usr/lib/x86_64-linux-gnu/libXxf86vm.so.1.0.0
    7f4f05413000-7f4f05434000 r-xp 00000000 08:03 5382907                    /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0
    7f4f05434000-7f4f05633000 ---p 00021000 08:03 5382907                    /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0
    7f4f05633000-7f4f05634000 r--p 00020000 08:03 5382907                    /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0
    7f4f05634000-7f4f05635000 rw-p 00021000 08:03 5382907                    /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0
    7f4f05635000-7f4f05639000 r-xp 00000000 08:03 5382875                    /usr/lib/x86_64-linux-gnu/libxcb-dri2.so.0.0.0
    7f4f05639000-7f4f05838000 ---p 00004000 08:03 5382875                    /usr/lib/x86_64-linux-gnu/libxcb-dri2.so.0.0.0
    7f4f05838000-7f4f05839000 r--p 00003000 08:03 5382875                    /usr/lib/x86_64-linux-gnu/libxcb-dri2.so.0.0.0
    7f4f05839000-7f4f0583a000 rw-p 00004000 08:03 5382875                    /usr/lib/x86_64-linux-gnu/libxcb-dri2.so.0.0.0
    7f4f0583a000-7f4f05851000 r-xp 00000000 08:03 5382879                    /usr/lib/x86_64-linux-gnu/libxcb-glx.so.0.0.0
    7f4f05851000-7f4f05a50000 ---p 00017000 08:03 5382879                    /usr/lib/x86_64-linux-gnu/libxcb-glx.so.0.0.0
    7f4f05a50000-7f4f05a52000 r--p 00016000 08:03 5382879                    /usr/lib/x86_64-linux-gnu/libxcb-glx.so.0.0.0
    7f4f05a52000-7f4f05a53000 rw-p 00018000 08:03 5382879                    /usr/lib/x86_64-linux-gnu/libxcb-glx.so.0.0.0
    7f4f05a53000-7f4f05b88000 r-xp 00000000 08:03 5395805                    /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0
    7f4f05b88000-7f4f05d88000 ---p 00135000 08:03 5395805                    /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0
    7f4f05d88000-7f4f05d89000 r--p 00135000 08:03 5395805                    /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0
    7f4f05d89000-7f4f05d8d000 rw-p 00136000 08:03 5395805                    /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0
    7f4f05d8d000-7f4f05d8e000 r-xp 00000000 08:03 5395811                    /usr/lib/x86_64-linux-gnu/libX11-xcb.so.1.0.0
    7f4f05d8e000-7f4f05f8d000 ---p 00001000 08:03 5395811                    /usr/lib/x86_64-linux-gnu/libX11-xcb.so.1.0.0
    7f4f05f8d000-7f4f05f8e000 r--p 00000000 08:03 5395811                    /usr/lib/x86_64-linux-gnu/libX11-xcb.so.1.0.0
    7f4f05f8e000-7f4f05f8f000 rw-p 00001000 08:03 5395811                    /usr/lib/x86_64-linux-gnu/libX11-xcb.so.1.0.0
    7f4f05f8f000-7f4f05f94000 r-xp 00000000 08:03 5381486                    /usr/lib/x86_64-linux-gnu/libXfixes.so.3.1.0
    7f4f05f94000-7f4f06193000 ---p 00005000 08:03 5381486                    /usr/lib/x86_64-linux-gnu/libXfixes.so.3.1.0
    7f4f06193000-7f4f06194000 r--p 00004000 08:03 5381486                    /usr/lib/x86_64-linux-gnu/libXfixes.so.3.1.0
    7f4f06194000-7f4f06195000 rw-p 00005000 08:03 5381486                    /usr/lib/x86_64-linux-gnu/libXfixes.so.3.1.0
    7f4f06195000-7f4f06197000 r-xp 00000000 08:03 5381480                    /usr/lib/x86_64-linux-gnu/libXdamage.so.1.1.0
    7f4f06197000-7f4f06396000 ---p 00002000 08:03 5381480                    /usr/lib/x86_64-linux-gnu/libXdamage.so.1.1.0
    7f4f06396000-7f4f06397000 r--p 00001000 08:03 5381480                    /usr/lib/x86_64-linux-gnu/libXdamage.so.1.1.0
    7f4f06397000-7f4f06398000 rw-p 00002000 08:03 5381480                    /usr/lib/x86_64-linux-gnu/libXdamage.so.1.1.0
    7f4f06398000-7f4f063a9000 r-xp 00000000 08:03 5381484                    /usr/lib/x86_64-linux-gnu/libXext.so.6.4.0
    7f4f063a9000-7f4f065a8000 ---p 00011000 08:03 5381484                    /usr/lib/x86_64-linux-gnu/libXext.so.6.4.0
    7f4f065a8000-7f4f065a9000 r--p 00010000 08:03 5381484                    /usr/lib/x86_64-linux-gnu/libXext.so.6.4.0
    7f4f065a9000-7f4f065aa000 rw-p 00011000 08:03 5381484                    /usr/lib/x86_64-linux-gnu/libXext.so.6.4.0
    7f4f065aa000-7f4f065d6000 r-xp 00000000 08:03 5383820                    /usr/lib/x86_64-linux-gnu/libglapi.so.0.0.0
    7f4f065d6000-7f4f067d5000 ---p 0002c000 08:03 5383820                    /usr/lib/x86_64-linux-gnu/libglapi.so.0.0.0
    7f4f067d5000-7f4f067d9000 r--p 0002b000 08:03 5383820                    /usr/lib/x86_64-linux-gnu/libglapi.so.0.0.0
    7f4f067d9000-7f4f067da000 rw-p 0002f000 08:03 5383820                    /usr/lib/x86_64-linux-gnu/libglapi.so.0.0.0
    7f4f067da000-7f4f067db000 rw-p 00000000 00:00 0 
    7f4f067db000-7f4f067dc000 r-xp 00000000 08:03 5382925                    /usr/lib/x86_64-linux-gnu/libxshmfence.so.1.0.0
    7f4f067dc000-7f4f069dc000 ---p 00001000 08:03 5382925                    /usr/lib/x86_64-linux-gnu/libxshmfence.so.1.0.0
    7f4f069dc000-7f4f069dd000 r--p 00001000 08:03 5382925                    /usr/lib/x86_64-linux-gnu/libxshmfence.so.1.0.0
    7f4f069dd000-7f4f069de000 rw-p 00002000 08:03 5382925                    /usr/lib/x86_64-linux-gnu/libxshmfence.so.1.0.0
    7f4f069de000-7f4f069e3000 r-xp 00000000 08:03 5382899                    /usr/lib/x86_64-linux-gnu/libxcb-sync.so.1.0.0
    7f4f069e3000-7f4f06be3000 ---p 00005000 08:03 5382899                    /usr/lib/x86_64-linux-gnu/libxcb-sync.so.1.0.0
    7f4f06be3000-7f4f06be4000 r--p 00005000 08:03 5382899                    /usr/lib/x86_64-linux-gnu/libxcb-sync.so.1.0.0
    7f4f06be4000-7f4f06be5000 rw-p 00006000 08:03 5382899                    /usr/lib/x86_64-linux-gnu/libxcb-sync.so.1.0.0
    7f4f06be5000-7f4f06be7000 r-xp 00000000 08:03 5382887                    /usr/lib/x86_64-linux-gnu/libxcb-present.so.0.0.0
    7f4f06be7000-7f4f06de6000 ---p 00002000 08:03 5382887                    /usr/lib/x86_64-linux-gnu/libxcb-present.so.0.0.0
    7f4f06de6000-7f4f06de7000 r--p 00001000 08:03 5382887                    /usr/lib/x86_64-linux-gnu/libxcb-present.so.0.0.0
    7f4f06de7000-7f4f06de8000 rw-p 00002000 08:03 5382887                    /usr/lib/x86_64-linux-gnu/libxcb-present.so.0.0.0
    7f4f06de8000-7f4f06dea000 r-xp 00000000 08:03 5382877                    /usr/lib/x86_64-linux-gnu/libxcb-dri3.so.0.0.0
    7f4f06dea000-7f4f06fe9000 ---p 00002000 08:03 5382877                    /usr/lib/x86_64-linux-gnu/libxcb-dri3.so.0.0.0
    7f4f06fe9000-7f4f06fea000 r--p 00001000 08:03 5382877                    /usr/lib/x86_64-linux-gnu/libxcb-dri3.so.0.0.0
    7f4f06fea000-7f4f06feb000 rw-p 00002000 08:03 5382877                    /usr/lib/x86_64-linux-gnu/libxcb-dri3.so.0.0.0
    7f4f06feb000-7f4f07011000 r-xp 00000000 08:03 3150562                    /lib/x86_64-linux-gnu/libexpat.so.1.6.0
    7f4f07011000-7f4f07211000 ---p 00026000 08:03 3150562                    /lib/x86_64-linux-gnu/libexpat.so.1.6.0
    7f4f07211000-7f4f07213000 r--p 00026000 08:03 3150562                    /lib/x86_64-linux-gnu/libexpat.so.1.6.0
    7f4f07213000-7f4f07214000 rw-p 00028000 08:03 3150562                    /lib/x86_64-linux-gnu/libexpat.so.1.6.0
    7f4f07214000-7f4f0722d000 r-xp 00000000 08:03 3150722                    /lib/x86_64-linux-gnu/libz.so.1.2.8
    7f4f0722d000-7f4f0742c000 ---p 00019000 08:03 3150722                    /lib/x86_64-linux-gnu/libz.so.1.2.8
    7f4f0742c000-7f4f0742d000 r--p 00018000 08:03 3150722                    /lib/x86_64-linux-gnu/libz.so.1.2.8
    7f4f0742d000-7f4f0742e000 rw-p 00019000 08:03 3150722                    /lib/x86_64-linux-gnu/libz.so.1.2.8
    7f4f0742e000-7f4f0749b000 r-xp 00000000 08:03 5381318                    /usr/lib/x86_64-linux-gnu/libGLU.so.1.3.1
    7f4f0749b000-7f4f0769b000 ---p 0006d000 08:03 5381318                    /usr/lib/x86_64-linux-gnu/libGLU.so.1.3.1
    7f4f0769b000-7f4f0769c000 r--p 0006d000 08:03 5381318                    /usr/lib/x86_64-linux-gnu/libGLU.so.1.3.1
    7f4f0769c000-7f4f0769d000 rw-p 0006e000 08:03 5381318                    /usr/lib/x86_64-linux-gnu/libGLU.so.1.3.1
    7f4f0769d000-7f4f076b5000 r-xp 00000000 08:03 3150653                    /lib/x86_64-linux-gnu/libpthread-2.23.so
    7f4f076b5000-7f4f078b4000 ---p 00018000 08:03 3150653                    /lib/x86_64-linux-gnu/libpthread-2.23.so
    7f4f078b4000-7f4f078b5000 r--p 00017000 08:03 3150653                    /lib/x86_64-linux-gnu/libpthread-2.23.so
    7f4f078b5000-7f4f078b6000 rw-p 00018000 08:03 3150653                    /lib/x86_64-linux-gnu/libpthread-2.23.so
    7f4f078b6000-7f4f078ba000 rw-p 00000000 00:00 0 
    7f4f078ba000-7f4f078bd000 r-xp 00000000 08:03 3150834                    /lib/x86_64-linux-gnu/libdl-2.23.so
    7f4f078bd000-7f4f07abc000 ---p 00003000 08:03 3150834                    /lib/x86_64-linux-gnu/libdl-2.23.so
    7f4f07abc000-7f4f07abd000 r--p 00002000 08:03 3150834                    /lib/x86_64-linux-gnu/libdl-2.23.so
    7f4f07abd000-7f4f07abe000 rw-p 00003000 08:03 3150834                    /lib/x86_64-linux-gnu/libdl-2.23.so
    7f4f07abe000-7f4f07b2e000 r-xp 00000000 08:03 5771645                    /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1.2.0
    7f4f07b2e000-7f4f07d2d000 ---p 00070000 08:03 5771645                    /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1.2.0
    7f4f07d2d000-7f4f07d30000 r--p 0006f000 08:03 5771645                    /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1.2.0
    7f4f07d30000-7f4f07d31000 rw-p 00072000 08:03 5771645                    /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1.2.0
    7f4f07d31000-7f4f07d32000 rw-p 00000000 00:00 0 
    7f4f07d32000-7f4f07d35000 r-xp 00000000 00:33 1056295                    /home/fabian/develop/calib_ws/src/sensor_calibration/external/install/lib/libg2o_opengl_helper.so
    7f4f07d35000-7f4f07f35000 ---p 00003000 00:33 1056295                    /home/fabian/develop/calib_ws/src/sensor_calibration/external/install/lib/libg2o_opengl_helper.so
    7f4f07f35000-7f4f07f36000 r--p 00003000 00:33 1056295                    /home/fabian/develop/calib_ws/src/sensor_calibration/external/install/lib/libg2o_opengl_helper.so
    7f4f07f36000-7f4f07f37000 rw-p 00004000 00:33 1056295                    /home/fabian/develop/calib_ws/src/sensor_calibration/external/install/lib/libg2o_opengl_helper.so
    7f4f07f37000-7f4f0803f000 r-xp 00000000 08:03 3145754                    /lib/x86_64-linux-gnu/libm-2.23.so
    7f4f0803f000-7f4f0823e000 ---p 00108000 08:03 3145754                    /lib/x86_64-linux-gnu/libm-2.23.so
    7f4f0823e000-7f4f0823f000 r--p 00107000 08:03 3145754                    /lib/x86_64-linux-gnu/libm-2.23.so
    7f4f0823f000-7f4f08240000 rw-p 00108000 08:03 3145754                    /lib/x86_64-linux-gnu/libm-2.23.so
    7f4f08240000-7f4f08400000 r-xp 00000000 08:03 3150832                    /lib/x86_64-linux-gnu/libc-2.23.so
    7f4f08400000-7f4f08600000 ---p 001c0000 08:03 3150832                    /lib/x86_64-linux-gnu/libc-2.23.so
    7f4f08600000-7f4f08604000 r--p 001c0000 08:03 3150832                    /lib/x86_64-linux-gnu/libc-2.23.so
    7f4f08604000-7f4f08606000 rw-p 001c4000 08:03 3150832                    /lib/x86_64-linux-gnu/libc-2.23.so
    7f4f08606000-7f4f0860a000 rw-p 00000000 00:00 0 
    7f4f0860a000-7f4f08620000 r-xp 00000000 08:03 3150569                    /lib/x86_64-linux-gnu/libgcc_s.so.1
    7f4f08620000-7f4f0881f000 ---p 00016000 08:03 3150569                    /lib/x86_64-linux-gnu/libgcc_s.so.1
    7f4f0881f000-7f4f08820000 rw-p 00015000 08:03 3150569                    /lib/x86_64-linux-gnu/libgcc_s.so.1
    7f4f08820000-7f4f08841000 r-xp 00000000 08:03 5375590                    /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0
    7f4f08841000-7f4f08a40000 ---p 00021000 08:03 5375590                    /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0
    7f4f08a40000-7f4f08a41000 r--p 00020000 08:03 5375590                    /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0
    7f4f08a41000-7f4f08a42000 rw-p 00021000 08:03 5375590                    /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0
    7f4f08a42000-7f4f08bb4000 r-xp 00000000 08:03 5375587                    /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21
    7f4f08bb4000-7f4f08db4000 ---p 00172000 08:03 5375587                    /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21
    7f4f08db4000-7f4f08dbe000 r--p 00172000 08:03 5375587                    /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21
    7f4f08dbe000-7f4f08dc0000 rw-p 0017c000 08:03 5375587                    /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21
    7f4f08dc0000-7f4f08dc4000 rw-p 00000000 00:00 0 
    7f4f08dc4000-7f4f08ded000 r-xp 00000000 08:03 5382392                    /usr/lib/x86_64-linux-gnu/libcxsparse.so.3.1.4
    7f4f08ded000-7f4f08fec000 ---p 00029000 08:03 5382392                    /usr/lib/x86_64-linux-gnu/libcxsparse.so.3.1.4
    7f4f08fec000-7f4f08fed000 r--p 00028000 08:03 5382392                    /usr/lib/x86_64-linux-gnu/libcxsparse.so.3.1.4
    7f4f08fed000-7f4f08fee000 rw-p 00029000 08:03 5382392                    /usr/lib/x86_64-linux-gnu/libcxsparse.so.3.1.4
    7f4f08fee000-7f4f08ff3000 r-xp 00000000 00:33 1069194                    /home/fabian/develop/calib_ws/src/sensor_calibration/external/install/lib/libg2o_csparse_extension.so
    7f4f08ff3000-7f4f091f2000 ---p 00005000 00:33 1069194                    /home/fabian/develop/calib_ws/src/sensor_calibration/external/install/lib/libg2o_csparse_extension.so
    7f4f091f2000-7f4f091f3000 r--p 00004000 00:33 1069194                    /home/fabian/develop/calib_ws/src/sensor_calibration/external/install/lib/libg2o_csparse_extension.so
    7f4f091f3000-7f4f091f4000 rw-p 00005000 00:33 1069194                    /home/fabian/develop/calib_ws/src/sensor_calibration/external/install/lib/libg2o_csparse_extension.so
    7f4f091f4000-7f4f09210000 r-xp 00000000 00:33 1056292                    /home/fabian/develop/calib_ws/src/sensor_calibration/external/install/lib/libg2o_stuff.so
    7f4f09210000-7f4f0940f000 ---p 0001c000 00:33 1056292                    /home/fabian/develop/calib_ws/src/sensor_calibration/external/install/lib/libg2o_stuff.so
    7f4f0940f000-7f4f09410000 r--p 0001b000 00:33 1056292                    /home/fabian/develop/calib_ws/src/sensor_calibration/external/install/lib/libg2o_stuff.so
    7f4f09410000-7f4f09411000 rw-p 0001c000 00:33 1056292                    /home/fabian/develop/calib_ws/src/sensor_calibration/external/install/lib/libg2o_stuff.so
    7f4f09411000-7f4f09412000 rw-p 00000000 00:00 0 
    7f4f09412000-7f4f0947f000 r-xp 00000000 00:33 1069120                    /home/fabian/develop/calib_ws/src/sensor_calibration/external/install/lib/libg2o_types_slam3d.so
    7f4f0947f000-7f4f0967f000 ---p 0006d000 00:33 1069120                    /home/fabian/develop/calib_ws/src/sensor_calibration/external/install/lib/libg2o_types_slam3d.so
    7f4f0967f000-7f4f09682000 r--p 0006d000 00:33 1069120                    /home/fabian/develop/calib_ws/src/sensor_calibration/external/install/lib/libg2o_types_slam3d.so
    7f4f09682000-7f4f09683000 rw-p 00070000 00:33 1069120                    /home/fabian/develop/calib_ws/src/sensor_calibration/external/install/lib/libg2o_types_slam3d.so
    7f4f09683000-7f4f096e1000 r-xp 00000000 00:33 1066238                    /home/fabian/develop/calib_ws/src/sensor_calibration/external/install/lib/libg2o_core.so
    7f4f096e1000-7f4f098e0000 ---p 0005e000 00:33 1066238                    /home/fabian/develop/calib_ws/src/sensor_calibration/external/install/lib/libg2o_core.so
    7f4f098e0000-7f4f098e2000 r--p 0005d000 00:33 1066238                    /home/fabian/develop/calib_ws/src/sensor_calibration/external/install/lib/libg2o_core.so
    7f4f098e2000-7f4f098e3000 rw-p 0005f000 00:33 1066238                    /home/fabian/develop/calib_ws/src/sensor_calibration/external/install/lib/libg2o_core.so
    7f4f098e3000-7f4f09909000 r-xp 00000000 08:03 3150652                    /lib/x86_64-linux-gnu/ld-2.23.so
    7f4f09aae000-7f4f09abf000 rw-p 00000000 00:00 0 
    7f4f09b05000-7f4f09b08000 rw-p 00000000 00:00 0 
    7f4f09b08000-7f4f09b09000 r--p 00025000 08:03 3150652                    /lib/x86_64-linux-gnu/ld-2.23.so
    7f4f09b09000-7f4f09b0a000 rw-p 00026000 08:03 3150652                    /lib/x86_64-linux-gnu/ld-2.23.so
    7f4f09b0a000-7f4f09b0b000 rw-p 00000000 00:00 0 
    7ffcd4e5f000-7ffcd4e81000 rw-p 00000000 00:00 0                          [stack]Aborted (core dumped)
    

    gdb returns the following backtrace:

    (gdb) bt
    #0  0x00007f81aef43425 in g2o::EdgeSE3::setMeasurement(Eigen::Transform<double, 3, 1, 0> const&) () from /home/fabian/develop/calib_ws/src/sensor_calibration/external/install/lib/libg2o_types_slam3d.so
    #1  0x00000000004d7d29 in main (argc=7, argv=0x7fffcf22ae38) at /home/fabian/develop/calib_ws/src/sensor_calibration/src/calibrate_sensors.cpp:40
    
    
    opened by Rookfighter 16
  • cs.h no such file or directory

    cs.h no such file or directory

    I went through the issue mentioned here https://github.com/RainerKuemmerle/g2o/issues/23 But I am still facing the error even after making the suggested changes. I am downloading the g2o package from github as I have mentioned the link to download the package in my Makefile. I tried making the suggested changes to the files that are downloaded but I get the error again and again.

    Any help on it will be appreciated.

    Thanks

    opened by ghost 15
  • C++11 support

    C++11 support

    C++11 completely changes the way that random numbers are generated, and deprecates things such as tr1.

    I was thinking of setting up a separate branch to look at the C++11 issues and to see if it works okay on various platforms. (In particular, the Mavericks clang build on a Mac is currently broken as a result.)

    Any concerns?

    opened by sjulier 15
  • compilation error in ceres/jet.h

    compilation error in ceres/jet.h

    Hello,

    I am trying to build g2o. I got the following error.

    /home/anindya/g2o/EXTERNAL/ceres/jet.h:980:8: error: ‘ScalarBinaryOpTraits’ is not a class template struct ScalarBinaryOpTraits<ceres::Jet<T, N>, T, BinaryOp> { ^~~~~~~~~~~~~~~~~~~~ /home/anindya/g2o/EXTERNAL/ceres/jet.h:984:58: error: type/value mismatch at argument 3 in template parameter list for ‘template<class BinaryOp, class T, int N> struct Eigen::ScalarBinaryOpTraits’ struct ScalarBinaryOpTraits<T, ceres::Jet<T, N>, BinaryOp> { ^ /home/anindya/g2o/EXTERNAL/ceres/jet.h:984:58: note: expected a constant of type ‘int’, got ‘BinaryOp’

    Please let me know if this is a bug or if I am missing something. I have all the dependencies installed in my PC though.

    thank you for your response.

    regards, Anindya

    opened by ahar 14
  • Ubuntu 16.04.1 :: error while trying to run g2o_viewer

    Ubuntu 16.04.1 :: error while trying to run g2o_viewer

    When I try to run g2o_viewer it shows an error (Its specific to Ubuntu 16.04) I have used g2o in Ubuntu 14.04 and it works fine:

    *** Error in `./g2o_viewer': realloc(): invalid pointer: 0x00007f73ad5e3820 *** ======= Backtrace: ========= /lib/x86_64-linux-gnu/libc.so.6(+0x777e5)[0x7f73ade497e5] /lib/x86_64-linux-gnu/libc.so.6(+0x851d0)[0x7f73ade571d0] /lib/x86_64-linux-gnu/libc.so.6(realloc+0x22f)[0x7f73ade55d3f] /usr/lib/x86_64-linux-gnu/libQt5Core.so.5(_ZN9QListData7reallocEi+0x1f)[0x7f73a950e9cf] /usr/lib/x86_64-linux-gnu/libQt5Core.so.5(_ZN9QListData6appendEi+0x81)[0x7f73a950eaa1] /usr/lib/x86_64-linux-gnu/libQt5Core.so.5(+0x1d6d78)[0x7f73a95dad78] /usr/lib/x86_64-linux-gnu/libQt5Core.so.5(Z21qRegisterResourceDataiPKhS0_S0+0x2e6)[0x7f73a95d6b16] /usr/lib/x86_64-linux-gnu/libQt5Core.so.5(+0x7bcc3)[0x7f73a947fcc3] /lib64/ld-linux-x86-64.so.2(+0x104ea)[0x7f73afce14ea] /lib64/ld-linux-x86-64.so.2(+0x105fb)[0x7f73afce15fb] /lib64/ld-linux-x86-64.so.2(+0xcfa)[0x7f73afcd1cfa] ======= Memory map: ======== 00400000-00402000 r-xp 00000000 08:12 919717 /home/anweshan/g2o/bin/g2o_viewer 00601000-00602000 r--p 00001000 08:12 919717 /home/anweshan/g2o/bin/g2o_viewer 00602000-00603000 rw-p 00002000 08:12 919717 /home/anweshan/g2o/bin/g2o_viewer 01af5000-01b27000 rw-p 00000000 00:00 0 [heap] 7f73a0000000-7f73a0021000 rw-p 00000000 00:00 0 7f73a0021000-7f73a4000000 ---p 00000000 00:00 0 7f73a40b7000-7f73a596d000 r-xp 00000000 08:12 22683986 /usr/lib/x86_64-linux-gnu/libicudata.so.55.1 7f73a596d000-7f73a5b6c000 ---p 018b6000 08:12 22683986 /usr/lib/x86_64-linux-gnu/libicudata.so.55.1 7f73a5b6c000-7f73a5b6d000 r--p 018b5000 08:12 22683986 /usr/lib/x86_64-linux-gnu/libicudata.so.55.1 7f73a5b6d000-7f73a5b6e000 rw-p 018b6000 08:12 22683986 /usr/lib/x86_64-linux-gnu/libicudata.so.55.1 7f73a5b6e000-7f73a5b91000 r-xp 00000000 08:12 22683866 /usr/lib/x86_64-linux-gnu/libgraphite2.so.3.0.1 7f73a5b91000-7f73a5d90000 ---p 00023000 08:12 22683866 /usr/lib/x86_64-linux-gnu/libgraphite2.so.3.0.1 7f73a5d90000-7f73a5d92000 r--p 00022000 08:12 22683866 /usr/lib/x86_64-linux-gnu/libgraphite2.so.3.0.1 7f73a5d92000-7f73a5d93000 rw-p 00024000 08:12 22683866 /usr/lib/x86_64-linux-gnu/libgraphite2.so.3.0.1 7f73a5d93000-7f73a5d98000 r-xp 00000000 08:12 22683319 /usr/lib/x86_64-linux-gnu/libXdmcp.so.6.0.0 7f73a5d98000-7f73a5f97000 ---p 00005000 08:12 22683319 /usr/lib/x86_64-linux-gnu/libXdmcp.so.6.0.0 7f73a5f97000-7f73a5f98000 r--p 00004000 08:12 22683319 /usr/lib/x86_64-linux-gnu/libXdmcp.so.6.0.0 7f73a5f98000-7f73a5f99000 rw-p 00005000 08:12 22683319 /usr/lib/x86_64-linux-gnu/libXdmcp.so.6.0.0 7f73a5f99000-7f73a5ffd000 r-xp 00000000 08:12 22684257 /usr/lib/x86_64-linux-gnu/libpcre16.so.3.13.2 7f73a5ffd000-7f73a61fd000 ---p 00064000 08:12 22684257 /usr/lib/x86_64-linux-gnu/libpcre16.so.3.13.2 7f73a61fd000-7f73a61fe000 r--p 00064000 08:12 22684257 /usr/lib/x86_64-linux-gnu/libpcre16.so.3.13.2 7f73a61fe000-7f73a61ff000 rw-p 00065000 08:12 22684257 /usr/lib/x86_64-linux-gnu/libpcre16.so.3.13.2 7f73a61ff000-7f73a637e000 r-xp 00000000 08:12 22684000 /usr/lib/x86_64-linux-gnu/libicuuc.so.55.1 7f73a637e000-7f73a657e000 ---p 0017f000 08:12 22684000 /usr/lib/x86_64-linux-gnu/libicuuc.so.55.1 7f73a657e000-7f73a658e000 r--p 0017f000 08:12 22684000 /usr/lib/x86_64-linux-gnu/libicuuc.so.55.1 7f73a658e000-7f73a658f000 rw-p 0018f000 08:12 22684000 /usr/lib/x86_64-linux-gnu/libicuuc.so.55.1 7f73a658f000-7f73a6593000 rw-p 00000000 00:00 0 7f73a6593000-7f73a67e5000 r-xp 00000000 08:12 22683988 /usr/lib/x86_64-linux-gnu/libicui18n.so.55.1 7f73a67e5000-7f73a69e5000 ---p 00252000 08:12 22683988 /usr/lib/x86_64-linux-gnu/libicui18n.so.55.1 7f73a69e5000-7f73a69f4000 r--p 00252000 08:12 22683988 /usr/lib/x86_64-linux-gnu/libicui18n.so.55.1 7f73a69f4000-7f73a69f5000 rw-p 00261000 08:12 22683988 /usr/lib/x86_64-linux-gnu/libicui18n.so.55.1 7f73a69f5000-7f73a6a51000 r-xp 00000000 08:12 22676963 /usr/lib/x86_64-linux-gnu/libharfbuzz.so.0.10000.1 7f73a6a51000-7f73a6c51000 ---p 0005c000 08:12 22676963 /usr/lib/x86_64-linux-gnu/libharfbuzz.so.0.10000.1 7f73a6c51000-7f73a6c52000 r--p 0005c000 08:12 22676963 /usr/lib/x86_64-linux-gnu/libharfbuzz.so.0.10000.1 7f73a6c52000-7f73a6c53000 rw-p 0005d000 08:12 22676963 /usr/lib/x86_64-linux-gnu/libharfbuzz.so.0.10000.1 7f73a6c53000-7f73a6c57000 r-xp 00000000 08:12 5509656 /lib/x86_64-linux-gnu/libuuid.so.1.3.0 7f73a6c57000-7f73a6e56000 ---p 00004000 08:12 5509656 /lib/x86_64-linux-gnu/libuuid.so.1.3.0 7f73a6e56000-7f73a6e57000 r--p 00003000 08:12 5509656 /lib/x86_64-linux-gnu/libuuid.so.1.3.0 7f73a6e57000-7f73a6e58000 rw-p 00004000 08:12 5509656 /lib/x86_64-linux-gnu/libuuid.so.1.3.0 7f73a6e58000-7f73a6e5f000 r-xp 00000000 08:12 22683691 /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4 7f73a6e5f000-7f73a705e000 ---p 00007000 08:12 22683691 /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4 7f73a705e000-7f73a705f000 r--p 00006000 08:12 22683691 /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4 7f73a705f000-7f73a7060000 rw-p 00007000 08:12 22683691 /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4 7f73a7060000-7f73a70ce000 r-xp 00000000 08:12 5509601 /lib/x86_64-linux-gnu/libpcre.so.3.13.2 7f73a70ce000-7f73a72ce000 ---p 0006e000 08:12 5509601 /lib/x86_64-linux-gnu/libpcre.so.3.13.2 7f73a72ce000-7f73a72cf000 r--p 0006e000 08:12 5509601 /lib/x86_64-linux-gnu/libpcre.so.3.13.2 7f73a72cf000-7f73a72d0000 rw-p 0006f000 08:12 5509601 /lib/x86_64-linux-gnu/libpcre.so.3.13.2 7f73a72d0000-7f73a72d2000 r-xp 00000000 08:12 22683308 /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0 7f73a72d2000-7f73a74d2000 ---p 00002000 08:12 22683308 /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0 7f73a74d2000-7f73a74d3000 r--p 00002000 08:12 22683308 /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0 7f73a74d3000-7f73a74d4000 rw-p 00003000 08:12 22683308 /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0 7f73a74d4000-7f73a7536000 r-xp 00000000 08:12 22683345 /usr/lib/x86_64-linux-gnu/libXt.so.6.0.0 7f73a7536000-7f73a7736000 ---p 00062000 08:12 22683345 /usr/lib/x86_64-linux-gnu/libXt.so.6.0.0 7f73a7736000-7f73a7737000 r--p 00062000 08:12 22683345 /usr/lib/x86_64-linux-gnu/libXt.so.6.0.0 7f73a7737000-7f73a773c000 rw-p 00063000 08:12 22683345 /usr/lib/x86_64-linux-gnu/libXt.so.6.0.0 7f73a773c000-7f73a773d000 rw-p 00000000 00:00 0 7f73a773d000-7f73a774b000 r-xp 00000000 08:12 22678565 /usr/lib/x86_64-linux-gnu/libdrm.so.2.4.0 7f73a774b000-7f73a794a000 ---p 0000e000 08:12 22678565 /usr/lib/x86_64-linux-gnu/libdrm.so.2.4.0 7f73a794a000-7f73a794b000 r--p 0000d000 08:12 22678565 /usr/lib/x86_64-linux-gnu/libdrm.so.2.4.0 7f73a794b000-7f73a794c000 rw-p 0000e000 08:12 22678565 /usr/lib/x86_64-linux-gnu/libdrm.so.2.4.0 7f73a794c000-7f73a7951000 r-xp 00000000 08:12 22683357 /usr/lib/x86_64-linux-gnu/libXxf86vm.so.1.0.0 7f73a7951000-7f73a7b50000 ---p 00005000 08:12 22683357 /usr/lib/x86_64-linux-gnu/libXxf86vm.so.1.0.0 7f73a7b50000-7f73a7b51000 r--p 00004000 08:12 22683357 /usr/lib/x86_64-linux-gnu/libXxf86vm.so.1.0.0 7f73a7b51000-7f73a7b52000 rw-p 00005000 08:12 22683357 /usr/lib/x86_64-linux-gnu/libXxf86vm.so.1.0.0 7f73a7b52000-7f73a7b73000 r-xp 00000000 08:12 22684686 /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0 7f73a7b73000-7f73a7d72000 ---p 00021000 08:12 22684686 /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0 7f73a7d72000-7f73a7d73000 r--p 00020000 08:12 22684686 /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0 7f73a7d73000-7f73a7d74000 rw-p 00021000 08:12 22684686 /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0 7f73a7d74000-7f73a7d78000 r-xp 00000000 08:12 22684654 /usr/lib/x86_64-linux-gnu/libxcb-dri2.so.0.0.0 7f73a7d78000-7f73a7f77000 ---p 00004000 08:12 22684654 /usr/lib/x86_64-linux-gnu/libxcb-dri2.so.0.0.0 7f73a7f77000-7f73a7f78000 r--p 00003000 08:12 22684654 /usr/lib/x86_64-linux-gnu/libxcb-dri2.so.0.0.0 7f73a7f78000-7f73a7f79000 rw-p 00004000 08:12 22684654 /usr/lib/x86_64-linux-gnu/libxcb-dri2.so.0.0.0 7f73a7f79000-7f73a7f90000 r-xp 00000000 08:12 22684658 /usr/lib/x86_64-linux-gnu/libxcb-glx.so.0.0.0 7f73a7f90000-7f73a818f000 ---p 00017000 08:12 22684658 /usr/lib/x86_64-linux-gnu/libxcb-glx.so.0.0.0 7f73a818f000-7f73a8191000 r--p 00016000 08:12 22684658 /usr/lib/x86_64-linux-gnu/libxcb-glx.so.0.0.0 7f73a8191000-7f73a8192000 rw-p 00018000 08:12 22684658 /usr/lib/x86_64-linux-gnu/libxcb-glx.so.0.0.0 7f73a8192000-7f73a8193000 r-xp 00000000 08:12 22683302 /usr/lib/x86_64-linux-gnu/libX11-xcb.so.1.0.0 7f73a8193000-7f73a8392000 ---p 00001000 08:12 22683302 /usr/lib/x86_64-linux-gnu/libX11-xcb.so.1.0.0 7f73a8392000-7f73a8393000 r--p 00000000 08:12 22683302 /usr/lib/x86_64-linux-gnu/libX11-xcb.so.1.0.0 7f73a8393000-7f73a8394000 rw-p 00001000 08:12 22683302 /usr/lib/x86_64-linux-gnu/libX11-xcb.so.1.0.0 7f73a8394000-7f73a8399000 r-xp 00000000 08:12 22683323 /usr/lib/x86_64-linux-gnu/libXfixes.so.3.1.0 7f73a8399000-7f73a8598000 ---p 00005000 08:12 22683323 /usr/lib/x86_64-linux-gnu/libXfixes.so.3.1.0 7f73a8598000-7f73a8599000 r--p 00004000 08:12 22683323 /usr/lib/x86_64-linux-gnu/libXfixes.so.3.1.0 7f73a8599000-7f73a859a000 rw-p 00005000 08:12 22683323 /usr/lib/x86_64-linux-gnu/libXfixes.so.3.1.0 7f73a859a000-7f73a859c000 r-xp 00000000 08:12 22683317 /usr/lib/x86_64-linux-gnu/libXdamage.so.1.1.0 7f73a859c000-7f73a879b000 ---p 00002000 08:12 22683317 /usr/lib/x86_64-linux-gnu/libXdamage.so.1.1.0 7f73a879b000-7f73a879c000 r--p 00001000 08:12 22683317 /usr/lib/x86_64-linux-gnu/libXdamage.so.1.1.0 7f73a879c000-7f73a879d000 rw-p 00002000 08:12 22683317 /usr/lib/x86_64-linux-gnu/libXdamage.so.1.1.0 7f73a879d000-7f73a87c6000 r-xp 00000000 08:12 22677642 /usr/lib/x86_64-linux-gnu/libglapi.so.0.0.0 7f73a87c6000-7f73a89c5000 ---p 00029000 08:12 22677642 /usr/lib/x86_64-linux-gnu/libglapi.so.0.0.0 7f73a89c5000-7f73a89c9000 r--p 00028000 08:12 22677642 /usr/lib/x86_64-linux-gnu/libglapi.so.0.0.0 7f73a89c9000-7f73a89ca000 rw-p 0002c000 08:12 22677642 /usr/lib/x86_64-linux-gnu/libglapi.so.0.0.0 7f73a89ca000-7f73a89cb000 rw-p 00000000 00:00 0 7f73a89cb000-7f73a89cc000 r-xp 00000000 08:12 22684698 /usr/lib/x86_64-linux-gnu/libxshmfence.so.1.0.0 7f73a89cc000-7f73a8bcc000 ---p 00001000 08:12 22684698 /usr/lib/x86_64-linux-gnu/libxshmfence.so.1.0.0 7f73a8bcc000-7f73a8bcd000 r--p 00001000 08:12 22684698 /usr/lib/x86_64-linux-gnu/libxshmfence.so.1.0.0 7f73a8bcd000-7f73a8bce000 rw-p 00002000 08:12 22684698 /usr/lib/x86_64-linux-gnu/libxshmfence.so.1.0.0 7f73a8bce000-7f73a8bd3000 r-xp 00000000 08:12 22684678 /usr/lib/x86_64-linux-gnu/libxcb-sync.so.1.0.0 7f73a8bd3000-7f73a8dd3000 ---p 00005000 08:12 22684678 /usr/lib/x86_64-linux-gnu/libxcb-sync.so.1.0.0 7f73a8dd3000-7f73a8dd4000 r--p 00005000 08:12 22684678 /usr/lib/x86_64-linux-gnu/libxcb-sync.so.1.0.0 7f73a8dd4000-7f73a8dd5000 rw-p 00006000 08:12 22684678 /usr/lib/x86_64-linux-gnu/libxcb-sync.so.1.0.0 7f73a8dd5000-7f73a8dd7000 r-xp 00000000 08:12 22684666 /usr/lib/x86_64-linux-gnu/libxcb-present.so.0.0.0 7f73a8dd7000-7f73a8fd6000 ---p 00002000 08:12 22684666 /usr/lib/x86_64-linux-gnu/libxcb-present.so.0.0.0 7f73a8fd6000-7f73a8fd7000 r--p 00001000 08:12 22684666 /usr/lib/x86_64-linux-gnu/libxcb-present.so.0.0.0 7f73a8fd7000-7f73a8fd8000 rw-p 00002000 08:12 22684666 /usr/lib/x86_64-linux-gnu/libxcb-present.so.0.0.0 7f73a8fd8000-7f73a8fda000 r-xp 00000000 08:12 22684656 /usr/lib/x86_64-linux-gnu/libxcb-dri3.so.0.0.0 7f73a8fda000-7f73a91d9000 ---p 00002000 08:12 22684656 /usr/lib/x86_64-linux-gnu/libxcb-dri3.so.0.0.0 7f73a91d9000-7f73a91da000 r--p 00001000 08:12 22684656 /usr/lib/x86_64-linux-gnu/libxcb-dri3.so.0.0.0 7f73a91da000-7f73a91db000 rw-p 00002000 08:12 22684656 /usr/lib/x86_64-linux-gnu/libxcb-dri3.so.0.0.0 7f73a91db000-7f73a9201000 r-xp 00000000 08:12 5509503 /lib/x86_64-linux-gnu/libexpat.so.1.6.0 7f73a9201000-7f73a9401000 ---p 00026000 08:12 5509503 /lib/x86_64-linux-gnu/libexpat.so.1.6.0 7f73a9401000-7f73a9403000 r--p 00026000 08:12 5509503 /lib/x86_64-linux-gnu/libexpat.so.1.6.0 7f73a9403000-7f73a9404000 rw-p 00028000 08:12 5509503 /lib/x86_64-linux-gnu/libexpat.so.1.6.0 7f73a9404000-7f73a98c9000 r-xp 00000000 08:12 22676346 /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.5.1 7f73a98c9000-7f73a98d5000 r--p 004c4000 08:12 22676346 /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.5.1 7f73a98d5000-7f73a98d6000 rw-p 004d0000 08:12 22676346 /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.5.1 7f73a98d6000-7f73a98da000 rw-p 00000000 00:00 0 7f73a98da000-7f73a9e01000 r-xp 00000000 08:12 22678197 /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5.5.1 7f73a9e01000-7f73a9e02000 ---p 00527000 08:12 22678197 /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5.5.1 7f73a9e02000-7f73a9e17000 r--p 00527000 08:12 22678197 /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5.5.1 7f73a9e17000-7f73a9e1d000 rw-p 0053c000 08:12 22678197 /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5.5.1 7f73a9e1d000-7f73a9e22000 rw-p 00000000 00:00 0 7f73a9e22000-7f73aa47b000 r-xp 00000000 08:12 22678202 /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.5.1 7f73aa47b000-7f73aa4a9000 r--p 00658000 08:12 22678202 /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.5.1 7f73aa4a9000-7f73aa4ae000 rw-p 00686000 08:12 22678202 /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.5.1 7f73aa4ae000-7f73aa4af000 rw-p 00000000 00:00 0 7f73aa4af000-7f73aa51c000 r-xp 00000000 08:12 22683166 /usr/lib/x86_64-linux-gnu/libGLU.so.1.3.1 7f73aa51c000-7f73aa71c000 ---p 0006d000 08:12 22683166 /usr/lib/x86_64-linux-gnu/libGLU.so.1.3.1 7f73aa71c000-7f73aa71d000 r--p 0006d000 08:12 22683166 /usr/lib/x86_64-linux-gnu/libGLU.so.1.3.1 7f73aa71d000-7f73aa71e000 rw-p 0006e000 08:12 22683166 /usr/lib/x86_64-linux-gnu/libGLU.so.1.3.1 7f73aa71e000-7f73aa853000 r-xp 00000000 08:12 22683304 /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0 7f73aa853000-7f73aaa53000 ---p 00135000 08:12 22683304 /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0 7f73aaa53000-7f73aaa54000 r--p 00135000 08:12 22683304 /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0 7f73aaa54000-7f73aaa58000 rw-p 00136000 08:12 22683304 /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0 7f73aaa58000-7f73aaa69000 r-xp 00000000 08:12 22683321 /usr/lib/x86_64-linux-gnu/libXext.so.6.4.0 7f73aaa69000-7f73aac68000 ---p 00011000 08:12 22683321 /usr/lib/x86_64-linux-gnu/libXext.so.6.4.0 7f73aac68000-7f73aac69000 r--p 00010000 08:12 22683321 /usr/lib/x86_64-linux-gnu/libXext.so.6.4.0 7f73aac69000-7f73aac6a000 rw-p 00011000 08:12 22683321 /usr/lib/x86_64-linux-gnu/libXext.so.6.4.0 7f73aac6a000-7f73aac73000 r-xp 00000000 08:12 22683341 /usr/lib/x86_64-linux-gnu/libXrender.so.1.3.0 7f73aac73000-7f73aae72000 ---p 00009000 08:12 22683341 /usr/lib/x86_64-linux-gnu/libXrender.so.1.3.0 7f73aae72000-7f73aae73000 r--p 00008000 08:12 22683341 /usr/lib/x86_64-linux-gnu/libXrender.so.1.3.0 7f73aae73000-7f73aae74000 rw-p 00009000 08:12 22683341 /usr/lib/x86_64-linux-gnu/libXrender.so.1.3.0 7f73aae74000-7f73aae83000 r-xp 00000000 08:12 22683329 /usr/lib/x86_64-linux-gnu/libXi.so.6.1.0 7f73aae83000-7f73ab082000 ---p 0000f000 08:12 22683329 /usr/lib/x86_64-linux-gnu/libXi.so.6.1.0 7f73ab082000-7f73ab083000 r--p 0000e000 08:12 22683329 /usr/lib/x86_64-linux-gnu/libXi.so.6.1.0 7f73ab083000-7f73ab084000 rw-p 0000f000 08:12 22683329 /usr/lib/x86_64-linux-gnu/libXi.so.6.1.0 7f73ab084000-7f73ab09a000 r-xp 00000000 08:12 22683174 /usr/lib/x86_64-linux-gnu/libICE.so.6.3.0 7f73ab09a000-7f73ab299000 ---p 00016000 08:12 22683174 /usr/lib/x86_64-linux-gnu/libICE.so.6.3.0 7f73ab299000-7f73ab29a000 r--p 00015000 08:12 22683174 /usr/lib/x86_64-linux-gnu/libICE.so.6.3.0 7f73ab29a000-7f73ab29b000 rw-p 00016000 08:12 22683174 /usr/lib/x86_64-linux-gnu/libICE.so.6.3.0 7f73ab29b000-7f73ab29e000 rw-p 00000000 00:00 0 7f73ab29e000-7f73ab2a5000 r-xp 00000000 08:12 22683294 /usr/lib/x86_64-linux-gnu/libSM.so.6.0.1 7f73ab2a5000-7f73ab4a4000 ---p 00007000 08:12 22683294 /usr/lib/x86_64-linux-gnu/libSM.so.6.0.1 7f73ab4a4000-7f73ab4a5000 r--p 00006000 08:12 22683294 /usr/lib/x86_64-linux-gnu/libSM.so.6.0.1 7f73ab4a5000-7f73ab4a6000 rw-p 00007000 08:12 22683294 /usr/lib/x86_64-linux-gnu/libSM.so.6.0.1 7f73ab4a6000-7f73ab4f8000 r-xp 00000000 08:12 22683846 /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.4800.1 7f73ab4f8000-7f73ab6f7000 ---p 00052000 08:12 22683846 /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.4800.1 7f73ab6f7000-7f73ab6f8000 r--p 00051000 08:12 22683846 /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.4800.1 7f73ab6f8000-7f73ab6f9000 rw-p 00052000 08:12 22683846 /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.4800.1 7f73ab6f9000-7f73ab79d000 r-xp 00000000 08:12 22683739 /usr/lib/x86_64-linux-gnu/libfreetype.so.6.12.1 7f73ab79d000-7f73ab99c000 ---p 000a4000 08:12 22683739 /usr/lib/x86_64-linux-gnu/libfreetype.so.6.12.1 7f73ab99c000-7f73ab9a2000 r--p 000a3000 08:12 22683739 /usr/lib/x86_64-linux-gnu/libfreetype.so.6.12.1 7f73ab9a2000-7f73ab9a3000 rw-p 000a9000 08:12 22683739 /usr/lib/x86_64-linux-gnu/libfreetype.so.6.12.1 7f73ab9a3000-7f73ab9bc000 r-xp 00000000 08:12 5509663 /lib/x86_64-linux-gnu/libz.so.1.2.8 7f73ab9bc000-7f73abbbb000 ---p 00019000 08:12 5509663 /lib/x86_64-linux-gnu/libz.so.1.2.8 7f73abbbb000-7f73abbbc000 r--p 00018000 08:12 5509663 /lib/x86_64-linux-gnu/libz.so.1.2.8 7f73abbbc000-7f73abbbd000 rw-p 00019000 08:12 5509663 /lib/x86_64-linux-gnu/libz.so.1.2.8 7f73abbbd000-7f73abbe1000 r-xp 00000000 08:12 5509613 /lib/x86_64-linux-gnu/libpng12.so.0.54.0 7f73abbe1000-7f73abde0000 ---p 00024000 08:12 5509613 /lib/x86_64-linux-gnu/libpng12.so.0.54.0 7f73abde0000-7f73abde1000 r--p 00023000 08:12 5509613 /lib/x86_64-linux-gnu/libpng12.so.0.54.0 7f73abde1000-7f73abde2000 rw-p 00024000 08:12 5509613 /lib/x86_64-linux-gnu/libpng12.so.0.54.0 7f73abde2000-7f73abef1000 r-xp 00000000 08:12 5509514 /lib/x86_64-linux-gnu/libglib-2.0.so.0.4800.1 7f73abef1000-7f73ac0f0000 ---p 0010f000 08:12 5509514 /lib/x86_64-linux-gnu/libglib-2.0.so.0.4800.1Aborted (core dumped)

    opened by anweshangit 14
  • How to put in constraints like GPS (or any other global positioning) for slam

    How to put in constraints like GPS (or any other global positioning) for slam

    I am currently working on an outdoor slam solution with pose graphs and the results are good in general but unfortunately the graph drifts too much for building a complete consistent map.

    The graph is build up by connecting the poses either with odometry or scan matching measurements (if available). The robot has an gps but now i am not sure how to put constraints with this new measurement source.

    I thought about connecting each pose with the fixed one (the first) and add the computed distance of the gps readings? Therefore i would not need to transform the gps fix to the map frame.

    Is there any example or advise how someone can feed global positions (with uncertainty) into such an pose graph?

    thanks

    opened by tinokl 14
  • Segmentation fault optimizing with EdgeSE3PointXYZ

    Segmentation fault optimizing with EdgeSE3PointXYZ

    Hello everyone.

    I receive the following message from gdb when I try to call g2o::SparseOptimizer::optimize () in a graph that has 2 vertex SE3, which one is fixed, and one vertex PointXYZ ( representing Landmark ), 2 EdgeSE3 connecting the 2 vertex SE3 and a EdgeSE3PointXYZ connecting a vertex SE3 to a vertex PointXYZ. The solver is "lm_var_cholmod"

    0x00007ffff7c3d042 in double __vector(2) Eigen::internal::pload<double __vector(2)>
    (Eigen::internal::unpacket_traits<double__vector(2)>::type const*) () from /usr/local/lib/libg2o_core.so
    
    

    If I use the solver "lm_fix6_3_cholmod" it throws another error:

    graph_optimization_node: /usr/include/Eigen/src/Core/PlainObjectBase.h:281: void
    Eigen::PlainObjectBase<Derived>::resize(Eigen::Index, Eigen::Index) [with Derived = 
    Eigen::Matrix<double, 6, 6, 0>; Eigen::Index = long int]: Assertion `(!(RowsAtCompileTime!=Dynamic) ||
    (rows==RowsAtCompileTime)) && (!(ColsAtCompileTime!=Dynamic) || (cols==ColsAtCompileTime)) &&
    (!(RowsAtCompileTime==Dynamic && MaxRowsAtCompileTime!=Dynamic) || (rows<=MaxRowsAtCompileTime)) &&
    (!(ColsAtCompileTime==Dynamic && MaxColsAtCompileTime!=Dynamic) || (cols<=MaxColsAtCompileTime)) && rows>=0 &&
    cols>=0 && "Invalid sizes when resizing a matrix or array."' failed.
    

    It works fine with only VertexSE3 and EdgeSE3. It is launched in Ubuntu 20.04, with the last g2o version and Eigen versrion 3.3.7. Has anyone any idea how to solve this? Maybe with some compilation flag.

    Thank you in advance for your attention.

    opened by polifab 13
  • Are there any multiple edge tutorial? a multiple edge use error?

    Are there any multiple edge tutorial? a multiple edge use error?

    Hi, I have a new optimization problem. I think I need a multiple edge struct which link three vertex to optimize. Specifically, 1st and 2nd vertices are g2o::VertexSE3. 3rd vertex is a real number, so I think g2o::BaseVertex<1, double> is good. Meanwhile, I have some prior terms and I think I should use g2o::BaseUnaryEdge<1, double, MyRealNumberVertexType>.

    In conclusion, I inherit 3 class. Respectively,
    class MyRealNumberVertexType : public g2o::BaseVertex<1, double> To represent a real number variable.

    class MyPriorEdge : public g2o::BaseUnaryEdge<1, double, MyRealNumberVertexType > As a weight to link MyRealNumberVertexType

    class MyMultiEdge: public g2o::BaseMultiEdge<6, Eigen::Isometry3d> To link three vertices, two g2o::VertexSE3 and one MyRealNumberVertexType. By the way, this edge's measurement is a rigid transformation in 3 dimension world.

    When I try optimize() after initializeOptimization(). I get a assert crash

    Assertion failed: (!(RowsAtCompileTime!=Dynamic) || (nbRows==RowsAtCompileTime)) && (!(ColsAtCompileTime!=Dynamic) || (nbCols==ColsAtCompileTime)) && (!(RowsAtCompileTime==Dynamic && MaxRowsAtCompileTime!=Dynamic) || (nbRows<=MaxRowsAtCompileTime)) && (!(ColsAtCompileTime==Dynamic && MaxColsAtCompileTime!=Dynamic) || (nbCols<=MaxColsAtCompileTime)) && nbRows>=0 && nbCols>=0 && "Invalid sizes when resizing a matrix or array.", file eigen\eigen3\eigen\src\core\plainobjectbase.h, line 241

    After debugging, I find the problem comes from

    //in g2o/core/sparse_block_matrix.hpp line 101
    _block=new typename SparseBlockMatrix<MatrixType>::SparseMatrixBlock(rb,cb);
    

    The assert is triggered because rb=1, cb=1, but MatrixType is Eigen::Matrix<double,6,6,0,6,6> when program is running. That is it try create a SparseMatrixBlock which col=1 and row =1, while MatrixType is 6x6 matrix.

    My question is why the template MatrixType is not change to Eigen::Matrix<double,1,1,0,1,1>? Not only do I have g2o::VertexSE3 vertex, but I also have real number vertex<1, double>.

    Where is my wrong?

    Any help would be appreciated.

    opened by rangerlcy 11
  • Configuring with `FetchContent`

    Configuring with `FetchContent`

    I'm trying to configure a simple test project with g2o using FetchContent like so:

    cmake_minimum_required(VERSION 3.24)
    project(testlib)
    
    add_library(testlib SHARED library.cpp)
    target_compile_features(testlib PUBLIC cxx_std_14)
    
    include(FetchContent)
    FetchContent_Declare(
            Eigen3
            GIT_REPOSITORY https://gitlab.com/libeigen/eigen.git
            GIT_TAG 3.4.0
            OVERRIDE_FIND_PACKAGE
    )
    FetchContent_Declare(
            g2o
            GIT_REPOSITORY https://github.com/RainerKuemmerle/g2o.git
            GIT_TAG origin/master
    )
    FetchContent_MakeAvailable(g2o)
    
    target_link_libraries(testlib g2o)
    

    This doesn't work: configuration finishes without errors (although there are warnings "BLA_VENDOR has been set to All but blas libraries could not be found or check of symbols failed") and I see g2o's CMake output, but during build I get /usr/bin/ld: cannot find -lg2o: No such file or directory. Same happens if I do target_link_libraries(testlib g2o_core) instead.

    I also tried to use find_package for g2o:

    FetchContent_Declare(
            g2o
            GIT_REPOSITORY https://github.com/RainerKuemmerle/g2o.git
            GIT_TAG origin/master
            OVERRIDE_FIND_PACKAGE
    )
    
    find_package(g2o REQUIRED)
    
    target_link_libraries(testlib g2o)
    

    But this gives the same result (also tried with target_link_libraries(testlib g2o_core) instead).

    Is it possible to configure g2o with FetchProject?

    opened by TimPushkin 10
  • failed to add vertex?

    failed to add vertex?

    Hello,

    I tried using a simple example to optimize poses. I have a class encapsulates several g2o items to do this, and all of pointers of them are initialized in the constructor, see

    class Pose{
    
    private:
    	g2o::BlockSolver_6_3 * mog2oBS63;  // Solver type for pose matrix type.
    	g2o::LinearSolverCSparse<g2o::BlockSolver_6_3::PoseMatrixType> * mog2oLSCSparse; // Linear solver.
    	g2o::OptimizationAlgorithmLevenberg * mog2oOALeven;  // Levenberg optimizer.
    	g2o::SparseOptimizer mog2oSOpt;
    };
    
    Pose::Pose(){
    	// Allocating memory for g2o things.
    	mog2oLSCSparse = new g2o::LinearSolverCSparse<g2o::BlockSolver_6_3::PoseMatrixType>();  // Linear solver initialization.
    	mog2oLSCSparse->setBlockOrdering(false);
    	mog2oBS63 = new g2o::BlockSolver_6_3(mog2oLSCSparse);  // Block solver ```
    initialization.
    	mog2oOALeven = new g2o::OptimizationAlgorithmLevenberg(mog2oBS63); // Optimizer initialization.
    	mog2oSOpt.setAlgorithm(mog2oOALeven);  // Set algorithm for optimizer.
    	mog2oSOpt.setVerbose(false);
    }
    

    In main(), an object of Pose is declared and then a member function Run() of Pose is called to get everything working. In Run(), I tried to add vertices into mog2oSOpt but failed to do that and don't know why. Here is a part of the code in Run()

    Pose::Run(){
    	g2o::VertexSE3 * pg2oVSE3 = new g2o::VertexSE3();
    	pg2oVSE3->setId(0);
    	pg2oVSE3->setEstimate(Eigen::Isometry3d::Identity());
    	pg2oVSE3->setFixed(true);
    	if (mog2oSOpt.addVertex(pg2oVSE3))
    	{
    		std::cout << "- vertex added: " << mog2oSOpt.vertices().size() << std::endl;
    	}
    	else
    		std::cerr << "- vertex adding failed!" << std::endl;
    }
    
    

    The output is simply bizarre, see

    • vertex added: 6888592
    opened by aopaw 10
  • Seg fault and infinite loop in computeEntry() while computing marginal covariance

    Seg fault and infinite loop in computeEntry() while computing marginal covariance

    Hallo, I am using the g2o for 3d pose graph optimization under the ros kinetic environment. For some usecases, we need the information about the uncertainty of 3d pose. So I tried to compute the marginal covariance. However sometimes the segmentation fault and infinite loop happens.

    Following is the gdb backtrace for the case of infinite loop:

    Program received signal SIGINT, Interrupt. 0x00007ffff7136df6 in ?? () from /opt/ros/kinetic/lib/libg2o_core.so (gdb) bt #0 0x00007ffff7136df6 in ?? () from /opt/ros/kinetic/lib/libg2o_core.so #1 0x00007ffff7137229 in g2o::MarginalCovarianceCholesky::computeEntry(int, int) () from /opt/ros/kinetic/lib/libg2o_core.so #2 0x00007ffff713718a in g2o::MarginalCovarianceCholesky::computeEntry(int, int) () from /opt/ros/kinetic/lib/libg2o_core.so #3 0x00007ffff713718a in g2o::MarginalCovarianceCholesky::computeEntry(int, int) () from /opt/ros/kinetic/lib/libg2o_core.so #4 0x00007ffff713718a in g2o::MarginalCovarianceCholesky::computeEntry(int, int) () from /opt/ros/kinetic/lib/libg2o_core.so #5 0x00007ffff713718a in g2o::MarginalCovarianceCholesky::computeEntry(int, int) () from /opt/ros/kinetic/lib/libg2o_core.so #6 0x00007ffff713718a in g2o::MarginalCovarianceCholesky::computeEntry(int, int) () from /opt/ros/kinetic/lib/libg2o_core.so #7 0x00007ffff713718a in g2o::MarginalCovarianceCholesky::computeEntry(int, int) () from /opt/ros/kinetic/lib/libg2o_core.so #8 0x00007ffff713718a in g2o::MarginalCovarianceCholesky::computeEntry(int, int) () from /opt/ros/kinetic/lib/libg2o_core.so #9 0x00007ffff713718a in g2o::MarginalCovarianceCholesky::computeEntry(int, int) () from /opt/ros/kinetic/lib/libg2o_core.so #10 0x00007ffff713718a in g2o::MarginalCovarianceCholesky::computeEntry(int, int) () from /opt/ros/kinetic/lib/libg2o_core.so #11 0x00007ffff713718a in g2o::MarginalCovarianceCholesky::computeEntry(int, int) () from /opt/ros/kinetic/lib/libg2o_core.so #12 0x00007ffff713718a in g2o::MarginalCovarianceCholesky::computeEntry(int, int) () from /opt/ros/kinetic/lib/libg2o_core.so #13 0x00007ffff713718a in g2o::MarginalCovarianceCholesky::computeEntry(int, int) () from /opt/ros/kinetic/lib/libg2o_core.so #14 0x00007ffff713718a in g2o::MarginalCovarianceCholesky::computeEntry(int, int) () from /opt/ros/kinetic/lib/libg2o_core.so #15 0x00007ffff713718a in g2o::MarginalCovarianceCholesky::computeEntry(int, int) () from /opt/ros/kinetic/lib/libg2o_core.so #16 0x00007ffff713718a in g2o::MarginalCovarianceCholesky::computeEntry(int, int) () from /opt/ros/kinetic/lib/libg2o_core.so #17 0x00007ffff713718a in g2o::MarginalCovarianceCholesky::computeEntry(int, int) () from /opt/ros/kinetic/lib/libg2o_core.so

    opened by Willyzw 10
  • csparse_extension libraby not found

    csparse_extension libraby not found

    Code: [ 50%] Linking CXX executable bundle_adjustment_g2o ld: library not found for -lg2o_csparse_extension clang: error: linker command failed with exit code 1 (use -v to see invocation) make[2]: *** [bundle_adjustment_g2o] Error 1 make[1]: *** [CMakeFiles/bundle_adjustment_g2o.dir/all] Error 2 make: *** [all] Error 2

    I've searched so much, and im not finding anything with the library named: -lg2o_csparse_extension. I looked up in my /PATH/g2o/solvers/csparse and there is a file named csparse_extension.h.

    Where can i find the library?

    opened by bgn-dev 1
  • /usr/lib/x86_64-linux-gnu/libEGL.so error while building on Ubunto 20.04

    /usr/lib/x86_64-linux-gnu/libEGL.so error while building on Ubunto 20.04

    Hi I'm having the following error after build/cmake .. CMake Error at /usr/lib/x86_64-linux-gnu/cmake/Qt5Gui/Qt5GuiConfig.cmake:27 (message): The imported target "Qt5::Gui" references the file

     "/usr/lib/x86_64-linux-gnu/libEGL.so"
    

    but this file does not exist. Possible reasons include:

    • The file was deleted, renamed, or moved to another location.

    • An install or uninstall procedure did not complete successfully.

    • The installation package was faulty and contained

      "/usr/lib/x86_64-linux-gnu/cmake/Qt5Gui/Qt5GuiConfigExtras.cmake"

    but not all the files it references.

    opened by MF-Ahmed 0
  • When I did this

    When I did this "cmake .." ,message show ".... not found"

    -- Looking for BLAS -- mkl.h not found -- Looking for MKL BLAS: not found -- Looking for Goto BLAS: not found -- Looking for Open BLAS: not found -- Looking for Eigen BLAS: not found -- Looking for Eigen BLAS: not found -- Looking for Atlas BLAS: not found -- Looking for PhiPACK BLAS: not found -- Looking for CXML BLAS: not found -- Looking for DXML BLAS: not found -- Looking for SunPerf BLAS: not found -- Looking for SCSL BLAS: not found -- Looking for SGIMATH BLAS: not found -- Looking for IBM ESSL BLAS: not found ........

    opened by caixl177 8
  • BaseBinaryEdge implicitly is non copyable.

    BaseBinaryEdge implicitly is non copyable.

    BaseBinaryEdge has no explicit deleted copy constructor or copy assignment operator but

    typename BaseFixedSizedEdge<D, E, 
    VertexXi, VertexXj>::template JacobianType<
          D, VertexXi::Dimension>& _jacobianOplusXi =
          std::get<0>(this->_jacobianOplus);
    

    reference made it is not possible to copy. it invoke some problems with std containers

    opened by Lishen1 3
  • Detailed Explanation of Variables and Edges

    Detailed Explanation of Variables and Edges

    I'm a dummy for factor graph optimization and g2o. Is there any detailed explanation of the variables and edges? For instance, I want to learn the differences between VertexPointXYZ and VertexSBAPointXYZ. Also, the difference between SBA and BA examples. Thank you.

    opened by goktugyildirim 2
Releases(20201223_git)
  • 20201223_git(Dec 23, 2020)

    • Add support for dynamically sized vertices
    • Switch to Eigen's Sparse Cholesky modules as the standard solver
      • Eigen's Sparse Module is included in the Eigen header and available under LGPL2
      • Still, cholmod should be preferred if performance is important
    • Drop own copy of CSparse (see above)
    • Own examples use Eigen or Cholmod (no longer CSparse)
    • Add tests
    Source code(tar.gz)
    Source code(zip)
  • 20200410_git(Apr 10, 2020)

  • 20170730_git(Jul 30, 2017)

ZSL-KG is a general-purpose zero-shot learning framework with a novel transformer graph convolutional network (TrGCN) to learn class representation from common sense knowledge graphs.

ZSL-KG is a general-purpose zero-shot learning framework with a novel transformer graph convolutional network (TrGCN) to learn class representa

Bats Research 94 Nov 21, 2022
Genetic Algorithm, Particle Swarm Optimization, Simulated Annealing, Ant Colony Optimization Algorithm,Immune Algorithm, Artificial Fish Swarm Algorithm, Differential Evolution and TSP(Traveling salesman)

scikit-opt Swarm Intelligence in Python (Genetic Algorithm, Particle Swarm Optimization, Simulated Annealing, Ant Colony Algorithm, Immune Algorithm,A

郭飞 3.7k Jan 3, 2023
library for nonlinear optimization, wrapping many algorithms for global and local, constrained or unconstrained, optimization

NLopt is a library for nonlinear local and global optimization, for functions with and without gradient information. It is designed as a simple, unifi

Steven G. Johnson 1.4k Dec 25, 2022
Racing line optimization algorithm in python that uses Particle Swarm Optimization.

Racing Line Optimization with PSO This repository contains a racing line optimization algorithm in python that uses Particle Swarm Optimization. Requi

Parsa Dahesh 6 Dec 14, 2022
(CVPR2021) ClassSR: A General Framework to Accelerate Super-Resolution Networks by Data Characteristic

ClassSR (CVPR2021) ClassSR: A General Framework to Accelerate Super-Resolution Networks by Data Characteristic Paper Authors: Xiangtao Kong, Hengyuan

Xiangtao Kong 308 Jan 5, 2023
Vector Neurons: A General Framework for SO(3)-Equivariant Networks

Vector Neurons: A General Framework for SO(3)-Equivariant Networks Created by Congyue Deng, Or Litany, Yueqi Duan, Adrien Poulenard, Andrea Tagliasacc

Congyue Deng 332 Dec 29, 2022
Implementation of paper "DeepTag: A General Framework for Fiducial Marker Design and Detection"

Implementation of paper DeepTag: A General Framework for Fiducial Marker Design and Detection. Project page: https://herohuyongtao.github.io/research/

Yongtao Hu 46 Dec 12, 2022
General Virtual Sketching Framework for Vector Line Art (SIGGRAPH 2021)

General Virtual Sketching Framework for Vector Line Art - SIGGRAPH 2021 Paper | Project Page Outline Dependencies Testing with Trained Weights Trainin

Haoran MO 118 Dec 27, 2022
sssegmentation is a general framework for our research on strongly supervised semantic segmentation.

sssegmentation is a general framework for our research on strongly supervised semantic segmentation.

null 445 Jan 2, 2023
General purpose GPU compute framework for cross vendor graphics cards (AMD, Qualcomm, NVIDIA & friends)

General purpose GPU compute framework for cross vendor graphics cards (AMD, Qualcomm, NVIDIA & friends). Blazing fast, mobile-enabled, asynchronous and optimized for advanced GPU data processing usecases. Backed by the Linux Foundation.

The Kompute Project 1k Jan 6, 2023
(Py)TOD: Tensor-based Outlier Detection, A General GPU-Accelerated Framework

(Py)TOD: Tensor-based Outlier Detection, A General GPU-Accelerated Framework Background: Outlier detection (OD) is a key data mining task for identify

Yue Zhao 127 Jan 5, 2023
A general framework for deep learning experiments under PyTorch based on pytorch-lightning

torchx Torchx is a general framework for deep learning experiments under PyTorch based on pytorch-lightning. TODO list gan-like training wrapper text

Yingtian Liu 6 Mar 17, 2022
A general python framework for single object tracking in LiDAR point clouds, based on PyTorch Lightning.

Open3DSOT A general python framework for single object tracking in LiDAR point clouds, based on PyTorch Lightning. The official code release of BAT an

Kangel Zenn 172 Dec 23, 2022
Easy Parallel Library (EPL) is a general and efficient deep learning framework for distributed model training.

English | 简体中文 Easy Parallel Library Overview Easy Parallel Library (EPL) is a general and efficient library for distributed model training. Usability

Alibaba 185 Dec 21, 2022
Differentiable Factor Graph Optimization for Learning Smoothers @ IROS 2021

Differentiable Factor Graph Optimization for Learning Smoothers Overview Status Setup Datasets Training Evaluation Acknowledgements Overview Code rele

Brent Yi 60 Nov 14, 2022
Official PyTorch code of DeepPanoContext: Panoramic 3D Scene Understanding with Holistic Scene Context Graph and Relation-based Optimization (ICCV 2021 Oral).

DeepPanoContext (DPC) [Project Page (with interactive results)][Paper] DeepPanoContext: Panoramic 3D Scene Understanding with Holistic Scene Context G

Cheng Zhang 66 Nov 16, 2022
Use graph-based analysis to re-classify stocks and to improve Markowitz portfolio optimization

Dynamic Stock Industrial Classification Use graph-based analysis to re-classify stocks and experiment different re-classification methodologies to imp

Sheng Yang 10 Dec 5, 2022
🎯 A comprehensive gradient-free optimization framework written in Python

Solid is a Python framework for gradient-free optimization. It contains basic versions of many of the most common optimization algorithms that do not

Devin Soni 565 Dec 26, 2022