ori-drs / isam Goto Github PK
View Code? Open in Web Editor NEWiSAM is an optimization library for sparse nonlinear problems as encountered in simultaneous localization and mapping (SLAM).
License: GNU Lesser General Public License v2.1
iSAM is an optimization library for sparse nonlinear problems as encountered in simultaneous localization and mapping (SLAM).
License: GNU Lesser General Public License v2.1
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.
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.
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.
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 function
isam::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
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.