Code Monkey home page Code Monkey logo

isam's Introduction

Incremental Smoothing and Mapping (iSAM) library
Michael Kaess, Hordur Johannsson, David Rosen, John Leonard, 2012

isamlib/  - Source code for the iSAM library
include/  - Header files for the iSAM library
isam/     - Source code for main iSAM executable
examples/ - Example code for iSAM
doc/      - Documentation (after calling "make doc")
misc/     - Code referenced from publications
data/     - Example data files for 2D and 3D
lib/      - iSAM library (after calling "make")
bin/      - Executables (after calling "make")

Type "make doc" to generate the full source documentation including
installation instructions and examples. Then point your browser to:
doc/html/index.html

The latest documentation is also available online at:
http://people.csail.mit.edu/kaess/isam/

--------------

Overview:

The iSAM library provides a range of existing functionality for
least-squares optimization, focused on the SLAM problem (e.g. 2D/3D
pose graph, landmarks, visual SLAM). In addition to standard batch
optimization, efficient incremental optimization is provided for sets
of variables (nodes) and constraints (factors) that grow over
time. The library performs (incremental) QR matrix factorization to
solve the normal equations. Nonlinear constraints are dealt with using
Gauss-Newton, Powell's Dog leg or, for batch only, the
Levenberg-Marquardt algorithm. The default quadratic cost function can
be replaced by a general cost function, allowing the use of robust
estimators.

Beyond the provided functionality, the library can easily be extended
by the user to other sparse least-squares problems. In particular,
the user can define new nodes, containing variables to be estimated as
well as an exponential map for dealing with over-parameterized
representations. Similarly, the user can define new factors,
containing the error function for a given constraint and optionally a
symbolic Jacobian for cases in which the provided numerical
differentiation is not sufficiently fast.

isam's People

Contributors

mauricefallon avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

isam's Issues

slam_monocular.h about eigen is wrong?

hello,
friends,I have got a problem:
[build] /usr/local/include/isam/slam_monocular.h:57:29: required from here
[build] /usr/include/eigen3/Eigen/src/Core/util/StaticAssert.h:32:40: error: static assertion failed: FLOATING_POINT_ARGUMENT_PASSED__INTEGER_WAS_EXPECTED
And the code:
Eigen::Vector3d vector() const { Eigen::Vector3d tmp(u, v); return tmp; }
Is that OK?
Thanks a lot.

XLC/ppc64le Compatibility

Hi, I am interested in compiling iSAM on a ppc64le (IBM POWER8) system with the xlc/xlC compilers.

With the following, I am able to make it most of the way through the compilation process:

cd isam
mkdir build
cd build
cmake -D CMAKE_C_COMPILER="xlc" -D CMAKE_CXX_COMPILER="xlC" ..
make

But then:

[u0017592@sys-83764 build]$ cmake -D CMAKE_C_COMPILER="xlc" -D CMAKE_CXX_COMPILER="xlC" ..
-- The C compiler identification is Clang 3.8.0
-- The CXX compiler identification is Clang 3.8.0
-- Check for working C compiler: /usr/bin/xlc
-- Check for working C compiler: /usr/bin/xlc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/xlC
-- Check for working CXX compiler: /usr/bin/xlC -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Build configuration: Release
-- Looking for include file pthread.h
-- Looking for include file pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - found
-- Found Threads: TRUE
-- Found SDL: /usr/lib64/libSDL.so (found version "1.2.15")
-- Found Eigen3: /usr/include/eigen3 (Required is at least version "2.91.0")
-- Found CHOLMOD: /usr/include/suitesparse
-- Looking for XOpenDisplay in /usr/lib64/libX11.so;/usr/lib64/libXext.so
-- Looking for XOpenDisplay in /usr/lib64/libX11.so;/usr/lib64/libXext.so - found
-- Looking for gethostbyname
-- Looking for gethostbyname - found
-- Looking for connect
-- Looking for connect - found
-- Looking for remove
-- Looking for remove - found
-- Looking for shmat
-- Looking for shmat - found
-- Found X11: /usr/lib64/libX11.so
-- Found OpenGL: /usr/lib64/libGL.so
-- Configuring done
-- Generating done
-- Build files have been written to: /home/u0017592/projects/isam/build
[u0017592@sys-83764 build]$ make
Scanning dependencies of target isamlib
[  5%] Building CXX object isamlib/CMakeFiles/isamlib.dir/Anchor.cpp.o
    1500-036: (I) The NOSTRICT option (default at OPT(3)) has the potential to alter the semantics of a program.  Please refer to documentation on the STRICT/NOSTRICT option for more information.
[ 10%] Building CXX object isamlib/CMakeFiles/isamlib.dir/Cholesky.cpp.o
In file included from /home/u0017592/projects/isam/isamlib/Cholesky.cpp:36:
/usr/include/suitesparse/cs.h:422:14: warning: 'cs_ci_house' has C-linkage specified, but returns user-defined
    type 'cs_complex_t' (aka 'complex<double>') which is incompatible with C [-Wreturn-type-c-linkage]
cs_complex_t cs_ci_house (cs_complex_t *x, double *beta, int n) ;
            ^
/usr/include/suitesparse/cs.h:562:14: warning: 'cs_cl_house' has C-linkage specified, but returns user-defined
    type 'cs_complex_t' (aka 'complex<double>') which is incompatible with C [-Wreturn-type-c-linkage]
cs_complex_t cs_cl_house (cs_complex_t *x, double *beta, cs_long_t n) ;
            ^
2 warnings generated.
[ 15%] Building CXX object isamlib/CMakeFiles/isamlib.dir/ChowLiuTree.cpp.o
    1500-036: (I) The NOSTRICT option (default at OPT(3)) has the potential to alter the semantics of a program.  Please refer to documentation on the STRICT/NOSTRICT option for more information.
[ 20%] Building CXX object isamlib/CMakeFiles/isamlib.dir/Covariances.cpp.o
    1500-036: (I) The NOSTRICT option (default at OPT(3)) has the potential to alter the semantics of a program.  Please refer to documentation on the STRICT/NOSTRICT option for more information.
[ 25%] Building CXX object isamlib/CMakeFiles/isamlib.dir/GLCReparam.cpp.o
    1500-036: (I) The NOSTRICT option (default at OPT(3)) has the potential to alter the semantics of a program.  Please refer to documentation on the STRICT/NOSTRICT option for more information.
[ 30%] Building CXX object isamlib/CMakeFiles/isamlib.dir/Node.cpp.o
[ 35%] Building CXX object isamlib/CMakeFiles/isamlib.dir/Optimizer.cpp.o
    1500-036: (I) The NOSTRICT option (default at OPT(3)) has the potential to alter the semantics of a program.  Please refer to documentation on the STRICT/NOSTRICT option for more information.
[ 40%] Building CXX object isamlib/CMakeFiles/isamlib.dir/OrderedSparseMatrix.cpp.o
[ 45%] Building CXX object isamlib/CMakeFiles/isamlib.dir/Slam.cpp.o
    1500-036: (I) The NOSTRICT option (default at OPT(3)) has the potential to alter the semantics of a program.  Please refer to documentation on the STRICT/NOSTRICT option for more information.
[ 50%] Building CXX object isamlib/CMakeFiles/isamlib.dir/SparseMatrix.cpp.o
    1500-036: (I) The NOSTRICT option (default at OPT(3)) has the potential to alter the semantics of a program.  Please refer to documentation on the STRICT/NOSTRICT option for more information.
[ 55%] Building CXX object isamlib/CMakeFiles/isamlib.dir/SparseSystem.cpp.o
    1500-036: (I) The NOSTRICT option (default at OPT(3)) has the potential to alter the semantics of a program.  Please refer to documentation on the STRICT/NOSTRICT option for more information.
[ 60%] Building CXX object isamlib/CMakeFiles/isamlib.dir/SparseVector.cpp.o
[ 65%] Building CXX object isamlib/CMakeFiles/isamlib.dir/covariance.cpp.o
[ 70%] Building CXX object isamlib/CMakeFiles/isamlib.dir/glc.cpp.o
In file included from /home/u0017592/projects/isam/isamlib/glc.cpp:31:
/home/u0017592/projects/isam/include/isam/glc.h:111:7: warning: delete called on 'isam::GLC_Reparam' that is
    abstract but has non-virtual destructor [-Wdelete-non-virtual-dtor]
    delete _rp;
    ^
/home/u0017592/projects/isam/isamlib/glc.cpp:368:7: warning: delete called on 'isam::GLC_Reparam' that is
    abstract but has non-virtual destructor [-Wdelete-non-virtual-dtor]
    delete rptmp;
    ^
2 warnings generated.
    1500-036: (I) The NOSTRICT option (default at OPT(3)) has the potential to alter the semantics of a program.  Please refer to documentation on the STRICT/NOSTRICT option for more information.
[ 75%] Building CXX object isamlib/CMakeFiles/isamlib.dir/numericalDiff.cpp.o
[ 80%] Building CXX object isamlib/CMakeFiles/isamlib.dir/util.cpp.o
Linking CXX static library ../../lib/libisam.a
[ 80%] Built target isamlib
Scanning dependencies of target isam
[ 85%] Building CXX object isam/CMakeFiles/isam.dir/isam.cpp.o
[ 90%] Building CXX object isam/CMakeFiles/isam.dir/Loader.cpp.o
    1500-036: (I) The NOSTRICT option (default at OPT(3)) has the potential to alter the semantics of a program.  Please refer to documentation on the STRICT/NOSTRICT option for more information.
[ 95%] Building CXX object isam/CMakeFiles/isam.dir/Collections.cpp.o
/home/u0017592/projects/isam/isam/Collections.cpp:328:26: warning: base class 'Collection' is uninitialized
    when used here to access 'Collection::type' [-Wuninitialized]
: Collection(id, name, type), elements(links), col1(col1), col2(col2) {}
                        ^
/home/u0017592/projects/isam/isam/Collections.cpp:358:26: warning: base class 'Collection' is uninitialized
    when used here to access 'Collection::type' [-Wuninitialized]
: Collection(id, name, type), covs(covs), collection(collection), is_3d(is_3d) {}
                        ^
2 warnings generated.
    1500-036: (I) The NOSTRICT option (default at OPT(3)) has the potential to alter the semantics of a program.  Please refer to documentation on the STRICT/NOSTRICT option for more information.
[100%] Building CXX object isam/CMakeFiles/isam.dir/Viewer.cpp.o
    1500-036: (I) The NOSTRICT option (default at OPT(3)) has the potential to alter the semantics of a program.  Please refer to documentation on the STRICT/NOSTRICT option for more information.
Linking CXX executable ../../bin/isam
../../lib/libisam.a(Cholesky.cpp.o): In function `isam::CholeskyImplCSparse::factorize(isam::SparseSystem const&, Eigen::Matrix<double, -1, 1, 0, -1, 1>*, double)':
/home/u0017592/projects/isam/isamlib/Cholesky.cpp:(.text+0x228): undefined reference to `cs_di_spalloc'
/home/u0017592/projects/isam/isamlib/Cholesky.cpp:(.text+0x2d8): undefined reference to `cs_di_transpose'
/home/u0017592/projects/isam/isamlib/Cholesky.cpp:(.text+0x2f8): undefined reference to `cs_di_multiply'
/home/u0017592/projects/isam/isamlib/Cholesky.cpp:(.text+0x3e0): undefined reference to `cs_di_schol'
/home/u0017592/projects/isam/isamlib/Cholesky.cpp:(.text+0x3f4): undefined reference to `cs_di_chol'
/home/u0017592/projects/isam/isamlib/Cholesky.cpp:(.text+0x418): undefined reference to `cs_di_spalloc'
/home/u0017592/projects/isam/isamlib/Cholesky.cpp:(.text+0x48c): undefined reference to `cs_di_pinv'
/home/u0017592/projects/isam/isamlib/Cholesky.cpp:(.text+0x49c): undefined reference to `cs_di_spfree'
/home/u0017592/projects/isam/isamlib/Cholesky.cpp:(.text+0x508): undefined reference to `cs_di_gaxpy'
/home/u0017592/projects/isam/isamlib/Cholesky.cpp:(.text+0x654): undefined reference to `cs_di_lsolve'
/home/u0017592/projects/isam/isamlib/Cholesky.cpp:(.text+0x690): undefined reference to `cs_di_ltsolve'
/home/u0017592/projects/isam/isamlib/Cholesky.cpp:(.text+0x80c): undefined reference to `cs_di_spfree'
/home/u0017592/projects/isam/isamlib/Cholesky.cpp:(.text+0x818): undefined reference to `cs_di_spfree'
/home/u0017592/projects/isam/isamlib/Cholesky.cpp:(.text+0x824): undefined reference to `cs_di_sfree'
/home/u0017592/projects/isam/isamlib/Cholesky.cpp:(.text+0x830): undefined reference to `cs_di_nfree'
/home/u0017592/projects/isam/isamlib/Cholesky.cpp:(.text+0xa1c): undefined reference to `cs_di_gaxpy'
/home/u0017592/projects/isam/isamlib/Cholesky.cpp:(.text+0xa5c): undefined reference to `cs_di_spfree'
../../lib/libisam.a(Cholesky.cpp.o): In function `isam::CholeskyImplCSparse::~CholeskyImplCSparse()':
/home/u0017592/projects/isam/isamlib/Cholesky.cpp:(.text+0xb58): undefined reference to `cs_di_spfree'
../../lib/libisam.a(Cholesky.cpp.o): In function `isam::CholeskyImplCSparse::~CholeskyImplCSparse()':
/home/u0017592/projects/isam/isamlib/Cholesky.cpp:(.text+0xc68): undefined reference to `cs_di_spfree'
make[2]: *** [../bin/isam] Error 1
make[1]: *** [isam/CMakeFiles/isam.dir/all] Error 2
make: *** [all] Error 2

It seems that this could be related to xlc (vs. gcc) not including by default whatever is required for those missing csparse references. The ideal solution would be to identify whatever is missing in the build system configuration and include it without breaking gcc compatibility.

iSAM compiles on this system with gcc (default settings), so I don't believe the issue is related to the ppc64le architecture.

build example failed

hello, on ubuntu16..04, i built example.cpp by following command
c++ example.cpp ../lib/libisam.a -lcholmod -I../include -I/usr/include/eigen3
and get following errors:
/tmp/ccw2SNnV.o: In functionisam::Pose2d::is_angle() const':
example.cpp:(.text._ZNK4isam6Pose2d8is_angleEv[_ZNK4isam6Pose2d8is_angleEv]+0x25): undefined reference to isam::Pose2d::dim' collect2: error: ld returned 1 exit status
how to fix the problem , thanks

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.