ethz-asl / okvis Goto Github PK
View Code? Open in Web Editor NEWOKVIS: Open Keyframe-based Visual-Inertial SLAM.
License: Other
OKVIS: Open Keyframe-based Visual-Inertial SLAM.
License: Other
hello,I want to compare okvis with visual only slam,hope you recommend a visual only slam system,thanks!
Hi, How can I get ground truth when I use MH_01_easy ?
when I use catkin_make, I encountered an error.
The imported target "vtkRenderingPythonTkWidgets" references the file
"/usr/lib/x86_64-linux-gnu/libvtkRenderingPythonTkWidgets.so"
but this file does not exist. Possible reasons include:
-- The imported target "vtk" references the file
"/usr/bin/vtk"
but this file does not exist. Possible reasons include:
-- looking for PCL_COMMON
-- looking for PCL_KDTREE
-- looking for PCL_OCTREE
-- looking for PCL_SEARCH
-- looking for PCL_IO
-- looking for PCL_SAMPLE_CONSENSUS
-- looking for PCL_FILTERS
-- looking for PCL_GEOMETRY
-- looking for PCL_FEATURES
-- looking for PCL_SEGMENTATION
-- looking for PCL_SURFACE
-- looking for PCL_REGISTRATION
-- looking for PCL_RECOGNITION
-- looking for PCL_KEYPOINTS
-- looking for PCL_VISUALIZATION
-- looking for PCL_PEOPLE
-- looking for PCL_OUTOFCORE
-- looking for PCL_TRACKING
-- looking for PCL_APPS
-- Could NOT find PCL_APPS (missing: PCL_APPS_LIBRARY)
-- looking for PCL_MODELER
-- looking for PCL_IN_HAND_SCANNER
-- looking for PCL_POINT_CLOUD_EDITOR
-- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy
-- Configuring incomplete, errors occurred!
See also "/home/cc/catkin_ws/build/CMakeFiles/CMakeOutput.log".
See also "/home/cc/catkin_ws/build/CMakeFiles/CMakeError.log".
Makefile:1718: recipe for target 'cmake_check_build_system' failed
make: *** [cmake_check_build_system] Error 1
Invoking "make cmake_check_build_system" failed
Hello,
I'm getting unit-test error due to NaN in line 405 in MargilinazationError.cpp :
OKVIS_ASSERT_TRUE_DBG(Exception,H_.allFinite(),"WTF2 " <<jacobiansMinimalEigen.at(i).transpose().eval() * jacobiansMinimalEigen.at(i));).
Other than this failure everything works fine - the main application okvis_app_synchronous is building and executing fine and I can run it with no issues on the "Machine room" sequence (Euroc dataset).
Note: However I couldn't reproduce the results reported on "Vicon Room" ( IJRR 2014) by "Keyframe-based visual–inertial odometry using nonlinear optimization" ICRA 2015. (that what led me to check all the unit-tests)
Thank you,
Yonatan.
../okvis/build/Debug/okvis_ceres$ ./okvis_ceres_test
[==========] Running 6 tests from 1 test case.
[----------] Global test environment set-up.
[----------] 6 tests from okvisTestSuite
[ RUN ] okvisTestSuite.Estimator
case 0, 0
Frame 0 successfully added.
Frame 1 successfully added.
Frame 2 successfully added.
Frame 3 successfully added.
Frame 4 successfully added.
Frame 5 successfully added.
Frame 6 successfully added.
== TRY MARGINALIZATION ==
C++ exception with description "[Exception] ../okvis/okvis_ceres/src/MarginalizationError.cpp:406: addResidualBlock() debug assert(H_.allFinite()) failed: WTF2 -nan -nan -nan -nan -nan -nan -nan -nan -nan
-nan -nan -nan -nan -nan -nan -nan -nan -nan
-nan -nan -nan -nan -nan -nan -nan -nan -nan
-nan -nan -nan -nan -nan -nan -nan -nan -nan
-nan -nan -nan -nan -nan -nan -nan -nan -nan
-nan -nan -nan -nan -nan -nan -nan -nan -nan
-nan -nan -nan -nan -nan -nan -nan -nan -nan
-nan -nan -nan -nan -nan -nan -nan -nan -nan
-nan -nan -nan -nan -nan -nan -nan -nan -nan" thrown in the test body.
[ FAILED ] okvisTestSuite.Estimator (31486 ms) ####
[ RUN ] okvisTestSuite.HomogeneousPointError
run the solver...
[ OK ] okvisTestSuite.HomogeneousPointError (30 ms)
[ RUN ] okvisTestSuite.ReprojectionError
set up a random geometry... [ OK ]
set up a random camera geometry... [ OK ]
setting local parameterization for pose... [ OK ]
create N=100 visible points and add respective reprojection error terms... [ OK ]
run the solver...
initial T_WS : -0.921129 -0.329734 -0.206871 9.72266
-0.324387 0.944003 -0.0602677 0.255295
0.215159 0.0115921 -0.97651 -5.08655
0 0 0 1
optimized T_WS : -0.921631 -0.327145 -0.208737 9.57852
-0.32134 0.944923 -0.0621359 -0.533125
0.217568 0.00980934 -0.975996 -5.25324
0 0 0 1
correct T_WS : -0.921668 -0.327274 -0.208374 9.57751
-0.321491 0.944879 -0.0620309 -0.533782
0.217189 0.00981854 -0.97608 -5.24732
0 0 0 1
[ OK ] okvisTestSuite.ReprojectionError (63 ms)
[ RUN ] okvisTestSuite.ImuError
setting local parameterization for pose... [ OK ]
run the solver...
initial T_WS_1 : 0.893578 0.157643 0.420319 1.33777
-0.118954 0.985993 -0.116913 0.745465
-0.432862 0.0544722 0.899813 1.48603
0 0 0 1
optimized T_WS_1 : 0.894709 0.163335 0.415712 0.750127
-0.127574 0.985416 -0.112606 0.340934
-0.428042 0.0477157 0.902498 1.08165
0 0 0 1
correct T_WS_1 : 0.894659 0.163041 0.415937 0.755374
-0.127035 0.985437 -0.113031 0.338961
-0.428308 0.048286 0.902342 1.08361
0 0 0 1
[ OK ] okvisTestSuite.ImuError (342 ms)
[ RUN ] okvisTestSuite.Map
set up a random geometry... [ OK ]
set up a random camera geometry... [ OK ]
create N=1000 visible points and add respective reprojection error terms... [ OK ]
run the solver...
0: f: 2.821557e+03 d: 0.00e+00 g: 9.21e+02 h: 0.00e+00 rho: 0.00e+00 mu: 1.00e+04 li: 0 it: 6.48e-02 tt: 6.82e-02
1: f: 3.750040e+02 d: 2.45e+03 g: 5.24e+03 h: 1.04e+00 rho: 5.47e+00 mu: 3.00e+04 li: 1 it: 8.25e-02 tt: 1.51e-01
2: f: 2.151846e+02 d: 1.60e+02 g: 1.85e+03 h: 3.83e-02 rho: 1.54e+00 mu: 9.00e+04 li: 1 it: 8.28e-02 tt: 2.34e-01
3: f: 2.060867e+02 d: 9.10e+00 g: 5.91e+02 h: 6.85e-03 rho: 1.33e+00 mu: 2.70e+05 li: 1 it: 8.27e-02 tt: 3.16e-01
4: f: 2.052144e+02 d: 8.72e-01 g: 1.81e+02 h: 2.09e-03 rho: 1.31e+00 mu: 8.10e+05 li: 1 it: 8.27e-02 tt: 3.99e-01
5: f: 2.051307e+02 d: 8.37e-02 g: 5.50e+01 h: 6.49e-04 rho: 1.31e+00 mu: 2.43e+06 li: 1 it: 8.37e-02 tt: 4.83e-01
6: f: 2.051227e+02 d: 8.03e-03 g: 1.67e+01 h: 2.02e-04 rho: 1.31e+00 mu: 7.29e+06 li: 1 it: 8.29e-02 tt: 5.66e-01
7: f: 2.051219e+02 d: 7.76e-04 g: 5.06e+00 h: 6.29e-05 rho: 1.31e+00 mu: 2.19e+07 li: 1 it: 8.29e-02 tt: 6.49e-01
initial T_WS : 0.184127 0.962902 -0.197272 -1.66493
0.360614 0.120528 0.924895 0.0456472
0.91436 -0.241437 -0.325044 -10.3653
0 0 0 1
optimized T_WS : 0.179932 0.965323 -0.189147 -2.03859
0.36265 0.113643 0.92497 -0.195345
0.91439 -0.235026 -0.329626 -9.45202
0 0 0 1
correct T_WS : 0.180046 0.96529 -0.189206 -2.03937
0.362569 0.113682 0.924997 -0.196862
0.9144 -0.235143 -0.329516 -9.45329
0 0 0 1
0: f: 9.855764e+02 d: 0.00e+00 g: 7.12e-01 h: 0.00e+00 rho: 0.00e+00 mu: 1.00e+04 li: 0 it: 6.34e-02 tt: 6.72e-02
1: f: 2.161295e+02 d: 7.69e+02 g: 1.32e+00 h: 5.33e-03 rho: 2.29e+00 mu: 3.00e+04 li: 1 it: 8.22e-02 tt: 1.49e-01
2: f: 2.061190e+02 d: 1.00e+01 g: 1.18e+00 h: 2.95e-04 rho: 1.31e+00 mu: 9.00e+04 li: 1 it: 8.25e-02 tt: 2.32e-01
3: f: 2.052141e+02 d: 9.05e-01 g: 4.48e-01 h: 8.78e-05 rho: 1.30e+00 mu: 2.70e+05 li: 1 it: 8.27e-02 tt: 3.15e-01
4: f: 2.051304e+02 d: 8.36e-02 g: 1.33e+00 h: 2.66e-05 rho: 1.30e+00 mu: 8.10e+05 li: 1 it: 8.23e-02 tt: 3.97e-01
5: f: 2.051227e+02 d: 7.76e-03 g: 4.80e-01 h: 8.09e-06 rho: 1.30e+00 mu: 2.43e+06 li: 1 it: 8.17e-02 tt: 4.79e-01
6: f: 2.051220e+02 d: 7.22e-04 g: 1.13e+00 h: 2.46e-06 rho: 1.31e+00 mu: 7.29e+06 li: 1 it: 8.15e-02 tt: 5.60e-01
[ OK ] okvisTestSuite.Map (2839 ms)
[ RUN ] okvisTestSuite.Marginalization
set up a random geometry... [ OK ]
set up a random camera geometry... [ OK ]
create N=100 visible points and add respective reprojection error terms... [ OK ]
run the solver...
initial T_WS2 : -0.390865 -0.91501 0.0999065 5.44691
-0.686973 0.362238 0.629962 0.919158
-0.612612 0.177597 -0.770173 9.2853
0 0 0 1
optimized T_WS2 : -0.386668 -0.917122 0.0968258 4.28422
-0.684886 0.355883 0.635829 0.995449
-0.617592 0.17954 -0.765732 8.73809
0 0 0 1
correct T_WS : -0.38569 -0.917413 0.0979645 4.28803
-0.684458 0.355709 0.636386 0.991536
-0.618676 0.178396 -0.765124 8.72535
0 0 0 1
[ OK ] okvisTestSuite.Marginalization (158 ms)
[----------] 6 tests from okvisTestSuite (34918 ms total)
[----------] Global test environment tear-down
[==========] 6 tests from 1 test case ran. (34919 ms total)
[ PASSED ] 5 tests.
[ FAILED ] 1 test, listed below:
[ FAILED ] okvisTestSuite.Estimator
../okvis/build/Release/okvis_multisensor_processing$ ./okvis_multisensor_processing_test
[==========] Running 11 tests from 2 test cases.
[----------] Global test environment set-up.
[----------] 6 tests from FrameSynchronizerTest
[ RUN ] FrameSynchronizerTest.ConstructDestruct
[ OK ] FrameSynchronizerTest.ConstructDestruct (379 ms)
[ RUN ] FrameSynchronizerTest.CorrectOrder
[ OK ] FrameSynchronizerTest.CorrectOrder (372 ms)
[ RUN ] FrameSynchronizerTest.OneMissing
E1121 10:27:37.920555 21633 FrameSynchronizer.cpp:104] Dropping frame with id 14
[ OK ] FrameSynchronizerTest.OneMissing (376 ms)
[ RUN ] FrameSynchronizerTest.TwoMissing
E1121 10:27:38.296674 21633 FrameSynchronizer.cpp:104] Dropping frame with id 24
E1121 10:27:38.296736 21633 FrameSynchronizer.cpp:104] Dropping frame with id 26
[ OK ] FrameSynchronizerTest.TwoMissing (373 ms)
[ RUN ] FrameSynchronizerTest.OneDouble
E1121 10:27:38.669687 21633 FrameSynchronizer.cpp:104] Dropping frame with id 34
[ OK ] FrameSynchronizerTest.OneDouble (373 ms)
[ RUN ] FrameSynchronizerTest.OneOutOfOrder
[ OK ] FrameSynchronizerTest.OneOutOfOrder (394 ms)
[----------] 6 tests from FrameSynchronizerTest (2267 ms total)
[----------] 5 tests from OkvisVioInterfaces
[ RUN ] OkvisVioInterfaces.testConstructionDestruction
Hi,
I'm getting an error when trying with my own data where the frames aren't processed. It looks like it's to do with the time stamps:
"Frame is newer than oldest IMU measurement. Dropping it."
Thanks,
Mike
in the Camera-IMU calibration,i get “T_cam_imu”, then put it in T_SC in the config file directly?
T_cam_imu and T_SC both mean transformation from Sensor to Camera?
hi @sleutenegger , seems the imu propagation model is not the same with the paper?
in function ImuError::propagation
// Fd = I + Fc*dt
Eigen::Matrix<double,15,15> F_delta = Eigen::Matrix<double,15,15>::Identity();
// transform
// delta pos / delta alpha
F_delta.block<3,3>(0,3) = -okvis::kinematics::crossMx(acc_integral*dt + 0.25*(C + C_1)*acc_S_true*dt*dt);
// delta pos / delta vel
F_delta.block<3,3>(0,6) = Eigen::Matrix3d::Identity()*dt;
// delta pos / delta bias gyr
F_delta.block<3,3>(0,9) = dt*dv_db_g + 0.25*dt*dt*(C*acc_S_x*cross + C_1*acc_S_x*cross_1);
// delta pos / delta bias acc
F_delta.block<3,3>(0,12) = -C_integral*dt + 0.25*(C + C_1)*dt*dt;
you set the all the columns of the first three rows of F_delta
, but in your ijrr15 paper, there are many zeros blocks in the first three rows in equation 15:
I also read your RSS2013
paper, but same thing here. So could you please explain this? thanks for your time very much!
Is it possible to use just stereo without IMU data?
Thanks a lot for the great software!!!
Hi , using the Kalibr toolkit, I can get the timeshift, t_imu=t_cam+shift, imageDelay==shift ? or imageDelay==-shift ?
I have started evaluating okvis for my platform, and have found that it works well. Now I would like to extend it to make it even better. In addition to an IMU and several cameras, I have an odometry source on my robot that gives me noisy measurements of the velocity (angular and linear) of the sensor at a very high rate. What would be the best way of incorporating these measurements into OKVIS?
Hi,
By default, OKVIS runs on stereo images. Is there a way to run it on single camera images?
I have been learning allan variance for a while .
typically the loglog plot give me 2 parameters: "bias stability" and "angle(velocity) random walk". or even "rate random walk".
But I can't find correspondence between these parameters to okvis parameters such as : " noise density", "drift noise density".
Can any one tell me?
I got a problem when i compiling OKVIS using qt at debug pattern.It shows that virtual memory exhausted cannot allocate memory when compiling half the time,but that is OK when it is Release pattern. My terminal shows that swap space have about 3.8G free space when i using command "free -h". Could you please give some advice?
I have assembled a camera-imu device. First i use kalibr calibration method to calibrate my own device.
The calibration yaml look like these:
imu0:
T_i_b:
I'm confuse to generate my own config file when compare my yaml to your config_fpga_p2_euroc.yaml.
Just like above, i get four params finally but the config yaml has eight params.
(a_max: 176.0 # acceleration saturation [m/s^2]
g_max: 7.8 # gyro saturation [rad/s]
sigma_g_c: 12.0e-4 # gyro noise density [rad/s/sqrt(Hz)]
sigma_a_c: 8.0e-3 # accelerometer noise density [m/s^2/sqrt(Hz)]
sigma_bg: 0.03 # gyro bias prior [rad/s]
sigma_ba: 0.1 # accelerometer bias prior [m/s^2]
sigma_gw_c: 4.0e-6 # gyro drift noise density [rad/s^s/sqrt(Hz)]
sigma_aw_c: 4.0e-5 # accelerometer drift noise density [m/s^2/sqrt(Hz)])
I study camera-imu for not a long time. Can you help me?
Hi,
Just a short question: do I understand correctly that OKVIS currently only supports stereo setups? Any plans to extend to monocular?
Thanks,
Lex
Hi,
I'm now trying the okvis on ubuntu 16.04. The compilation went smoothly, but I can not make it run even on the example data.
Here is my environment (everything is pretty much up-to-date):
Ubuntu 16.04, OpenCV 3.2, Nvidia-driver 367, Cuda 8.0, Eigen 3.3~beta1-2, Ceres 1.12
Here is my problem: when I tried to run okvis_app_synchronous
on example data (MH_01_easy, MH_04_difficulty), there will be a segmentation fault error immediately after the viewer windows show up. When I tried to run it in debugging mode, the program breaks at the following line inside Eigen source:
template<int StoreMode, int LoadMode, typename PacketType>
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void assignPacket(Index row, Index col)
{
m_functor.template assignPacket<StoreMode>(&m_dst.coeffRef(row,col), m_src.template packet<LoadMode,PacketType>(row,col));
}
Although this might not be useful...
I also tried some 'printf' debugging (print some text before and after a line to see where the program actually breaks). It seems that if (matchedFrames_.PopBlocking(&frame_pairs) == false)
at line 729 inside ThreadedKFVio.cpp is suspicious. Maybe the pthread
is not compatible with the memory of newer Eigen? I'm not confidence about this.
Does someone has the same issue? The problem seems to be related with Eigen. Which version of Eigen3 should I use?
Thanks!
F0516 16:45:42.349895 5751 parameter_block.h:164] Check failed: new_parameterization->GlobalSize() == size_ Invalid parameterization for parameter block. The parameter block has size 7 while the parameterization has a global size of 6. Did you accidentally use the wrong parameter block or parameterization?
Is T_SC in config.yaml for a cam0 equivalent to the kalibr output for:
T_ci: (imu to cam0): [m]
[[ 0.0356961 -0.99798199 0.05251415 -0.01277718]
[ 0.0821689 -0.04943879 -0.99539142 0.01413488]
[ 0.99597895 0.03984663 0.08023831 0.01084148]
[ 0. 0. 0. 1. ]]
or
T_ic: (cam0 to imu): [m]
[[ 0.0356961 0.0821689 0.99597895 -0.01150323]
[-0.99798199 -0.04943879 0.03984663 -0.01248458]
[ 0.05251415 -0.99539142 0.08023831 0.01387081]
[ 0. 0. 0. 1. ]]
The imu is set to the identity matrix.
Thanks
Mike
For the same input (i.e. config file and dataset) to okvis_app_synchronous, I discover that the resulting position (i.e. the body frame position when progress=100%) have quite a large different for each single run.
Why is it so and how to fix it?
Thanks!
Hi, I have one problem during compiling, thanks in advance:
[100%] Linking CXX executable okvis_app_synchronous lib/libceres.a(loss_function.cc.o): In function
std::__cxx11::basic_string<char, std::char_traits, std::allocator >* google::MakeCheckOpString<double, double>(double const&, double const&, char const*)':
loss_function.cc:(.text._ZN6google17MakeCheckOpStringIddEEPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_RKT0_PKc[_ZN6google17MakeCheckOpStringIddEEPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_RKT0_PKc]+0x54): undefined reference to google::base::CheckOpMessageBuilder::NewString[abi:cxx11]()' lib/libceres.a(problem_impl.cc.o): In function
std::__cxx11::basic_string<char, std::char_traits, std::allocator >* google::MakeCheckOpString<int, int>(int const&, int const&, char const*)':
problem_impl.cc:(.text._ZN6google17MakeCheckOpStringIiiEEPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_RKT0_PKc[_ZN6google17MakeCheckOpStringIiiEEPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_RKT0_PKc]+0x50): undefined reference to google::base::CheckOpMessageBuilder::NewString[abi:cxx11]()' lib/libceres.a(problem_impl.cc.o): In function
std::__cxx11::basic_string<char, std::char_traits, std::allocator >* google::MakeCheckOpString<unsigned long, unsigned long>(unsigned long const&, unsigned long const&, char const*)':
problem_impl.cc:(.text._ZN6google17MakeCheckOpStringImmEEPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_RKT0_PKc[_ZN6google17MakeCheckOpStringImmEEPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_RKT0_PKc]+0x51): undefined reference to google::base::CheckOpMessageBuilder::NewString[abi:cxx11]()' lib/libceres.a(problem_impl.cc.o): In function
std::__cxx11::basic_string<char, std::char_traits, std::allocator >* google::MakeCheckOpString<ceres::internal::ParameterBlock*, ceres::internal::ParameterBlock*>(ceres::internal::ParameterBlock* const&, ceres::internal::ParameterBlock* const&, char const*)':
problem_impl.cc:(.text._ZN6google17MakeCheckOpStringIPN5ceres8internal14ParameterBlockES4_EEPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_RKT0_PKc[_ZN6google17MakeCheckOpStringIPN5ceres8internal14ParameterBlockES4_EEPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_RKT0_PKc]+0x51): undefined reference to google::base::CheckOpMessageBuilder::NewString[abi:cxx11]()' lib/libceres.a(solver_impl.cc.o): In function
std::__cxx11::basic_string<char, std::char_traits, std::allocator >* google::MakeCheckOpString<int, unsigned long>(int const&, unsigned long const&, char const*)':
solver_impl.cc:(.text._ZN6google17MakeCheckOpStringIimEEPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_RKT0_PKc[_ZN6google17MakeCheckOpStringIimEEPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_RKT0_PKc]+0x51): undefined reference to google::base::CheckOpMessageBuilder::NewString[abi:cxx11]()' lib/libceres.a(solver_impl.cc.o):solver_impl.cc:(.text._ZN6google17MakeCheckOpStringImiEEPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_RKT0_PKc[_ZN6google17MakeCheckOpStringImiEEPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_RKT0_PKc]+0x50): more undefined references to
google::base::CheckOpMessageBuilder::NewStringabi:cxx11' follow
collect2: error: ld returned 1 exit status
CMakeFiles/okvis_app_synchronous.dir/build.make:142: recipe for target 'okvis_app_synchronous' failed
make[2]: *** [okvis_app_synchronous] Error 1
CMakeFiles/Makefile2:116: recipe for target 'CMakeFiles/okvis_app_synchronous.dir/all' failed
make[1]: *** [CMakeFiles/okvis_app_synchronous.dir/all] Error 2
Makefile:127: recipe for target 'all' failed
make: *** [all] Error 2`
I am new to SLAM and not very sure what is the problem.
The following is my gcc
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
First thanks very much for the excellent library! I'm always looking for a SLAM library which provides non-ROS option.
The compilation goes pretty smooth except for two minor issues.
The system environment before compilation: Ubuntu 15.10, gcc 4.9.3, opencv 3.0, Eigen 3.2.7, gflags, glog, Ceres 1.11, Nvidia 352.63, cuda 7.5
Other dependencies are installed by following the guide.
line 188: const_cast<cv::DescriptorExtractor*>(extractor_.get())->compute(image_, keypoints_, descriptors_);
line 120: const_cast<cv::FeatureDetector*>(detector_.get())->detect(image_, keypoints_);
This might not be the desired solution, but it works.
The above are just for compilation, actually I haven't run or use the library.
Now I am running Okvis using EuRoc MAV Dataset and trying to compare the pose with the ground truth given in the dataset. I add some code in the publishFullStateAsCallback to save position data and velocity data which are the same with the data displayed on the poseViewer. However, when i compare the result with the ground truth, I found the pose is different. How can I make a comparison ?
HI,
When I make -j8 to build the whole project, it failed in cloning ceres-solver repository. But I can download ceres-solver-1.11.0 via its website. Is there any alternative so that I can build the project without using git clone "https://ceres-solver.googlesource.com/ceres-solver"?
Here is my CMake Error:
CMake Error at /home/richard/okvis/okvis-master/build/ceres/tmp/ceres_external-gitclone.cmake:40 (message):
Failed to clone repository:
'https://ceres-solver.googlesource.com/ceres-solver'
I have gotten okvis to successfully run on the MAV datasets, and have started feeding my own data into the algorithm. In general it just drifts like crazy, which is not surprising considering the many things that could be wrong (calibration of IMU to camera, time synchronization, etc.). While I was looking through the configs and code I was wondering: how do you estimate the acceleration due to gravity? Is there any assumption about the starting direction of gravity w.r.t the IMU? Are you assuming that gravity is subtracted from the IMU measurements before they are fed into the algorithm, or are you estimating that value online?
since the author said the sensor synchronisation is very important for okvis. And there is no "vi-sensor" selling any more. I want to know whoever without "vi-sensor" running okvis with their own hardware setup have got good result?
I tried the code with 16.04 but it just crashed with the following info:
PARAMETERS
NODES
/
okvis_node (okvis_ros/okvis_node)
ROS_MASTER_URI=http://localhost:11311
core service [/rosout] found
process[okvis_node-1]: started with pid [6795]
I0510 16:46:19.477212 6795 VioParametersReader.cpp:85] Opened configuration file: /home/00/catkin_ws/src/okvis_ros/okvis/config/config_fpga_p2_euroc.yaml
I0510 16:46:19.477421 6795 VioParametersReader.cpp:173] imageDelay=0
I0510 16:46:19.477526 6795 VioParametersReader.cpp:275] Custom World frame provided T_Wc_W=
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
I0510 16:46:19.477552 6795 VioParametersReader.cpp:554] Found calibration in configuration file for camera 0
I0510 16:46:19.477562 6795 VioParametersReader.cpp:554] Found calibration in configuration file for camera 1
I0510 16:46:19.485872 6795 VioParametersReader.cpp:363] Radial tangential pinhole camera 0 with T_SC=
0.0148655 -0.999881 0.0041403 -0.0216401
0.999557 0.0149672 0.0257155 -0.064677
-0.0257744 0.00375619 0.999661 0.00981073
0 0 0 1
I0510 16:46:19.809892 6795 VioParametersReader.cpp:363] Radial tangential pinhole camera 1 with T_SC=
0.0125553 -0.999755 0.0182238 -0.0198436
0.999599 0.0130119 0.0251588 0.0453689
-0.0253898 0.0179006 0.999517 0.00786212
0 0 0 1
I0510 16:46:19.809929 6795 VioParametersReader.cpp:412] IMU with transformation T_BS=
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
init done
W0510 16:47:33.659103 6827 Frontend.cpp:282] - Skipping propagation as only one IMU measurement has been given to frontend. Normal when starting up.
*** stack smashing detected **: /home/00/catkin_ws/devel/lib/okvis_ros/okvis_node terminated
[okvis_node-1] process has died [pid 6795, exit code -6, cmd /home/00/catkin_ws/devel/lib/okvis_ros/okvis_node /camera0:=/cam0/image_raw /camera1:=/cam1/image_raw /calibration0:=/cam0/calibration /calibration1:=/cam1/calibration /imu:=/imu0 __name:=okvis_node __log:=/home/00/.ros/log/0a279138-3555-11e7-ba23-9c5c8ec1f302/okvis_node-1.log].
log file: /home/00/.ros/log/0a279138-3555-11e7-ba23-9c5c8ec1f302/okvis_node-1.log
all processes on machine have died, roslaunch will exit
shutting down processing monitor...
... shutting down processing monitor complete
done
Any suggestions?
Hi,
I was able to run this library without any problem. I was wondering if this library has implemented any loop closure or re-localization algorithm?
Thank You
I want to know how can the map visualization?
eigen ,opengv installed, still error
[ 30%] Building CXX object CMakeFiles/opengv.dir/src/absolute_pose/modules/gpnp4/spolynomials.o
[ 31%] Building CXX object CMakeFiles/opengv.dir/src/absolute_pose/modules/gpnp5/code.o
[ 33%] Building CXX object CMakeFiles/opengv.dir/src/absolute_pose/modules/gpnp5/init.o
[ 34%] Building CXX object CMakeFiles/opengv.dir/src/absolute_pose/modules/gpnp5/reductors.o
[ 36%] Building CXX object CMakeFiles/opengv.dir/src/absolute_pose/modules/gpnp5/spolynomials.o
[ 37%] Building CXX object CMakeFiles/opengv.dir/src/absolute_pose/modules/upnp2.o
[ 38%] Building CXX object CMakeFiles/opengv.dir/src/absolute_pose/modules/upnp4.o
[ 40%] Building CXX object CMakeFiles/opengv.dir/src/relative_pose/modules/main.o
[ 41%] Building CXX object CMakeFiles/opengv.dir/src/relative_pose/modules/fivept_nister/modules.o
In file included from /usr/include/eigen3/Eigen/Core:392:0,
from /usr/include/eigen3/unsupported/Eigen/NonLinearOptimization:15,
from /home/rosfun/code/MYNT-EYE-OKVIS-Sample/build/opengv/src/opengv/src/relative_pose/modules/main.cpp:34:
/usr/include/eigen3/Eigen/src/Core/GeneralProduct.h: In instantiation of ‘struct Eigen::internal::product_type<Eigen::CwiseUnaryOp<Eigen::internal::scalar_multiple_op, const Eigen::Map<Eigen::Matrix<double, -1, 1, 0, 20, 1>, 0, Eigen::Stride<0, 0> > >, Eigen::Transpose<const Eigen::Matrix<double, 2, 1> > >’:
/usr/include/eigen3/Eigen/src/Core/Product.h:107:7: required from ‘class Eigen::Product<Eigen::CwiseUnaryOp<Eigen::internal::scalar_multiple_op, const Eigen::Map<Eigen::Matrix<double, -1, 1, 0, 20, 1>, 0, Eigen::Stride<0, 0> > >, Eigen::Transpose<const Eigen::Matrix<double, 2, 1> >, 0>’
/usr/include/eigen3/Eigen/src/Householder/Householder.h:166:34: required from ‘void Eigen::MatrixBase::applyHouseholderOnTheRight(const EssentialPart&, const Scalar&, Eigen::MatrixBase::Scalar*) [with EssentialPart = Eigen::Matrix<double, 2, 1>; Derived = Eigen::Block<Eigen::Matrix<double, 20, 20, 0, 20, 20>, -1, -1, false>; Eigen::MatrixBase::Scalar = double]’
/usr/include/eigen3/Eigen/src/Eigenvalues/RealSchur.h:497:7: required from ‘void Eigen::RealSchur<_MatrixType>::performFrancisQRStep(Eigen::RealSchur<_MatrixType>::Index, Eigen::RealSchur<_MatrixType>::Index, Eigen::RealSchur<_MatrixType>::Index, bool, const Vector3s&, Eigen::RealSchur<_MatrixType>::Scalar*) [with _MatrixType = Eigen::Matrix<double, 20, 20, 0, 20, 20>; Eigen::RealSchur<_MatrixType>::Index = long int; Eigen::RealSchur<_MatrixType>::Vector3s = Eigen::Matrix<double, 3, 1>; typename MatrixType::Scalar = double; Eigen::RealSchur<_MatrixType>::Scalar = double]’
/usr/include/eigen3/Eigen/src/Eigenvalues/RealSchur.h:319:29: required from ‘Eigen::RealSchur& Eigen::RealSchur<_MatrixType>::computeFromHessenberg(const HessMatrixType&, const OrthMatrixType&, bool) [with HessMatrixType = Eigen::internal::HessenbergDecompositionMatrixHReturnType<Eigen::Matrix<double, 20, 20, 0, 20, 20> >; OrthMatrixType = Eigen::HouseholderSequence<Eigen::Matrix<double, 20, 20, 0, 20, 20>, Eigen::Matrix<double, 19, 1, 0, 19, 1>, 1>; _MatrixType = Eigen::Matrix<double, 20, 20, 0, 20, 20>]’
/usr/include/eigen3/Eigen/src/Eigenvalues/RealSchur.h:260:24: required from ‘Eigen::RealSchur& Eigen::RealSchur<_MatrixType>::compute(const Eigen::EigenBase&, bool) [with InputType = Eigen::Matrix<double, 20, 20, 0, 20, 20>; _MatrixType = Eigen::Matrix<double, 20, 20, 0, 20, 20>]’
/usr/include/eigen3/Eigen/src/Eigenvalues/EigenSolver.h:387:3: required from ‘Eigen::EigenSolver& Eigen::EigenSolver<_MatrixType>::compute(const Eigen::EigenBase&, bool) [with InputType = Eigen::Matrix<double, 20, 20, 0, 20, 20>; _MatrixType = Eigen::Matrix<double, 20, 20, 0, 20, 20>]’
/usr/include/eigen3/Eigen/src/Eigenvalues/EigenSolver.h:156:14: required from ‘Eigen::EigenSolver<_MatrixType>::EigenSolver(const Eigen::EigenBase&, bool) [with InputType = Eigen::Matrix<double, 20, 20, 0, 20, 20>; _MatrixType = Eigen::Matrix<double, 20, 20, 0, 20, 20>]’
/home/rosfun/code/MYNT-EYE-OKVIS-Sample/build/opengv/src/opengv/src/relative_pose/modules/main.cpp:337:63: required from here
/usr/include/eigen3/Eigen/src/Core/GeneralProduct.h:53:8: internal compiler error: Segmentation fault
enum {
^
Please submit a full bug report,
with preprocessed source if appropriate.
See file:///usr/share/doc/gcc-5/README.Bugs for instructions.
CMakeFiles/opengv.dir/build.make:734: recipe for target 'CMakeFiles/opengv.dir/src/relative_pose/modules/main.o' failed
make[5]: *** [CMakeFiles/opengv.dir/src/relative_pose/modules/main.o] Error 1
make[5]: *** Waiting for unfinished jobs....
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/opengv.dir/all' failed
make[4]: *** [CMakeFiles/opengv.dir/all] Error 2
Makefile:127: recipe for target 'all' failed
make[3]: *** [all] Error 2
CMakeFiles/opengv_external.dir/build.make:112: recipe for target 'opengv/src/opengv_external-stamp/opengv_external-build' failed
make[2]: *** [opengv/src/opengv_external-stamp/opengv_external-build] Error 2
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/opengv_external.dir/all' failed
make[1]: *** [CMakeFiles/opengv_external.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
I'm running OKVIS with a monocular camera at 60Hz and an IMU at 400Hz. They are not synchronized, there are timestamp differences of up to 10 ms. I think this is why the trajectory I get drifts always and is not repeatable. What may be the maximum tolerable difference between camera and IMU?
I found this algorithm running extremely slow with DEBUG mode,but in my other application or slam algorithm, this won't happen, why ?
BTW, why i can't use my own ceres ? when i configure the program by using my own ceres, the algorithm is killed by system. i check the memory, it shows "General Protection Error". Why ?
How can I enable online calibration in OKVIS? Paper has results related to online calibration and comparison graphs but I can't see related configuration for enabling online calibration in OKVIS.
Hi
please share about the accuracy with monocular camera and imu.
is there no drift?
I managed to compile the okvis code under visual studio 2013. And it worked with the example datasets!
But when I tried to run it with my own setup of stereo camera + imu, it just crash. And I thingk it is because of the imu nois parameters.
okvis crash inside "pthread_cond_wait" when adding imu data:
if (size >= max_queue_size) { pthread_cond_wait(&condition_full_, &mutex_); }
I dive into kalibr for a few days, I can now calibrate the stereo cameras with IMU. And I learned a little about Allan avairance .
It has puzzled me for a week , but I still cannot figure out the imu noise parameters for invensense mpu6050. The mpu6050 datasheet does not give me the noise infomation such as "gyro bias prior", "gyro drift noise density" 。
Can anyone tell me something about "gyro bias prior", "gyro drift noise density" of mpu6050? The mpu6050 datasheet can be found here.
How to save trajectory information? I want to look the effect.
Hello,
Thanks for sharing the code, I tried to compile it but I'm getting this error:
/usr/include/c++/5/fenv.h:58:11: error: ‘::fenv_t’ has not been declared
using ::fenv_t;
^
/usr/include/c++/5/fenv.h:59:11: error: ‘::fexcept_t’ has not been declared
using ::fexcept_t;
^
/usr/include/c++/5/fenv.h:62:11: error: ‘::feclearexcept’ has not been declared
using ::feclearexcept;
^
/usr/include/c++/5/fenv.h:63:11: error: ‘::fegetexceptflag’ has not been declared
using ::fegetexceptflag;
^
/usr/include/c++/5/fenv.h:64:11: error: ‘::feraiseexcept’ has not been declared
using ::feraiseexcept;
^
/usr/include/c++/5/fenv.h:65:11: error: ‘::fesetexceptflag’ has not been declared
using ::fesetexceptflag;
^
/usr/include/c++/5/fenv.h:66:11: error: ‘::fetestexcept’ has not been declared
using ::fetestexcept;
^
/usr/include/c++/5/fenv.h:68:11: error: ‘::fegetround’ has not been declared
using ::fegetround;
^
/usr/include/c++/5/fenv.h:69:11: error: ‘::fesetround’ has not been declared
using ::fesetround;
^
/usr/include/c++/5/fenv.h:71:11: error: ‘::fegetenv’ has not been declared
using ::fegetenv;
^
/usr/include/c++/5/fenv.h:72:11: error: ‘::feholdexcept’ has not been declared
using ::feholdexcept;
^
/usr/include/c++/5/fenv.h:73:11: error: ‘::fesetenv’ has not been declared
using ::fesetenv;
^
/usr/include/c++/5/fenv.h:74:11: error: ‘::feupdateenv’ has not been declared
using ::feupdateenv;
^
As mentioned in the paper, online calibration produce fairly good result.
Does the OKVIS program support online calibration?
IMUT111: 1495193336.697047959
IMUT111: 1495193336.702781849
IMUT111: 1495193336.737182027
IMUT111: 1495193336.742905318
IMUT111: 1495193336.748630095
IMUT111: 1495193336.754410368
IMUT111: 1495193336.760116905
IMUT111: 1495193336.765844359
IMUT111: 1495193336.771567376
IMUT111: 1495193336.777280431
IMUT111: 1495193336.782997496
IMUT111: 1495193336.788709174
IMUT111: 1495193336.794426245
IMUT111: 1495193336.800146002
imageT1: 1495193336.829654109
imageT2: 1495193336.829654109
IMUT111: 1495193336.834542529
IMUT111: 1495193336.840250771
IMUT111: 1495193336.845981306
IMUT111: 1495193336.851702762
IMUT111: 1495193336.860260759
F0519 19:28:56.861635 11759 parameter_block.h:164] Check failed: new_parameterization->GlobalSize() == size_ Invalid parameterization for parameter block. The parameter block has size 7 while the parameterization has a global size of 6. Did you accidentally use the wrong parameter block or parameterization?
*** Check failure stack trace: ***
@ 0x5ba83a google::LogMessage::Fail()
@ 0x5bc70f google::LogMessage::SendToLog()
@ 0x5ba41f google::LogMessage::Flush()
@ 0x5bd04e google::LogMessageFatal::~LogMessageFatal()
@ 0x6dc5ed ceres::internal::ProblemImpl::AddParameterBlock()
@ 0x8ebf23 okvis::ceres::Map::addParameterBlock()
@ 0x8f7cb6 okvis::Estimator::addStates()
@ 0x5a613d okvis::ThreadedKFVio::matchingLoop()
@ 0x7f09faa11a60 (unknown)
@ 0x7f09fe155184 start_thread
@ 0x7f09fa179bed clone
Thanks for this awesome bit of code. I have learned a lot from it.
I am having some trouble getting the code to compile without Qt5. I get the following error from the brisk_external library:
[ 1%] Performing build step for 'brisk_external'
[ 43%] Built target agast
[ 95%] Built target brisk
Linking CXX executable bin/demo
/usr/bin/ld: cannot find -lQt5::Core
/usr/bin/ld: cannot find -lQt5::Gui
/usr/bin/ld: cannot find -lQt5::Widgets
/usr/bin/ld: cannot find -lQt5::Test
/usr/bin/ld: cannot find -lQt5::Concurrent
/usr/bin/ld: cannot find -lQt5::OpenGL
collect2: error: ld returned 1 exit status
make[5]: *** [bin/demo] Error 1
make[4]: *** [CMakeFiles/demo.dir/all] Error 2
make[3]: *** [all] Error 2
make[2]: *** [brisk/src/brisk_external-stamp/brisk_external-build] Error 2
make[1]: *** [CMakeFiles/brisk_external.dir/all] Error 2
make: *** [all] Error 2
I checked my Qt version by typing in:
qmake --version
And I see I have Qt version 4.8.6
Is it possible to make BRISK compile with lesser Qt version other than version 5? Or least mention in the documentation that Qt 5 is prerequisite.
Thank you!
Edit
I found a solution to this problem.
Firstly I downloaded the necessary libraries:
sudo apt-get install libqt5concurrent5
sudo apt-get install libqt5test5
sudo apt-get install libqt5core5a
sudo apt-get install libqt5opengl5
sudo apt-get install qtdeclarative5-dev
Then I added these lines to okvis/build/brisk/bris_external-build/CMakeLists.txt:
find_package(Qt5Gui)
find_package(Qt5Core)
find_package(Qt5Widgets)
find_package(Qt5Test)
find_package(Qt5Concurrent)
find_package(Qt5OpenGL)
The main problem I still have is that these changes are wiped out when I do make clean on the entire library. This make debugging inconvenient.
Trying to run OKVIS on a dataset collected from a hand-held mobile device. Tracking fails and pose estimate drifts very rapidly.
The camera-IMU calibration has been done using Kalibr tookit (wherein the values of camera reprojection error, gyro and acceleration error squared have all converged to a value of less than 2.5). The IMU bias and random walk have been derived from analysis of Allan variance plots.
However, when we run OKVIS on such dataset, the tracking fails almost always. The error message reads:
W0531 15:28:03.059871 1646 Frontend.cpp:192] Tracking failure. Number of 3d2d-matches: 0.
The published state (pose) drifts off to a very large value. The camera runs at 30 fps and IMU at 100 Hz.
PFA, the config.yaml file.
config_fpga_p2_euroc_iPhone.yaml.txt
To our understanding, most of the mobile devices come with hideous IMUs. However, I would like to know if the tracking failure can be attributed to solely the poor quality of IMU? Or is there something else we are missing out here? (Lack of global shutter might not be much of a concern, the camera motion is quite slow and captured in well lit environment).
Hi, thanks for sharing this exciting library with the community.
I have a question: is there any way the library can be compiled without BLAS/LAPACK and Suitesparse, using maybe Eigen and Ceres instead? That would make the library licensing simpler and fully MIT.
Thanks
Hi, I use your data set to test the okvis_ros. I use ceres1.13 and eigen 3.3, the program will encounter Segmentation fault. If i use ceres 1.9 and eigen 3.2.1, the program will run for a while and then encounter segmentation fault. If i use ceres 1.9 and eigen 3.2.10, the program can run , but i get many output , as the following:
I1103 07:14:44.644121 44482 okvis_node_synchronous.cpp:151] No. IMU messages: 30400
I1103 07:14:44.645339 44482 okvis_node_synchronous.cpp:175] No. cam 0 messages: 3040
I1103 07:14:44.645854 44482 okvis_node_synchronous.cpp:175] No. cam 1 messages: 3040
W1103 07:14:44.646212 44584 Frontend.cpp:282] - Skipping propagation as only one IMU measurement has been given to frontend. Normal when starting up.
W1103 07:14:44.662530 44583 Frontend.cpp:192] Tracking failure. Number of 3d2d-matches: 0
W1103 07:14:44.667537 44583 Frontend.cpp:192] Tracking failure. Number of 3d2d-matches: 0
W1103 07:14:44.672633 44583 Frontend.cpp:192] Tracking failure. Number of 3d2d-matches: 0
W1103 07:14:44.677803 44583 Frontend.cpp:192] Tracking failure. Number of 3d2d-matches: 0
W1103 07:14:44.682888 44583 Frontend.cpp:192] Tracking failure. Number of 3d2d-matches: 0
W1103 07:14:44.688047 44583 Frontend.cpp:192] Tracking failure. Number of 3d2d-matches: 0
W1103 07:14:44.693446 44583 Frontend.cpp:192] Tracking failure. Number of 3d2d-matches: 0
W1103 07:14:44.698904 44583 Frontend.cpp:192] Tracking failure. Number of 3d2d-matches: 0
W1103 07:14:44.704661 44583 Frontend.cpp:192] Tracking failure. Number of 3d2d-matches: 0
W1103 07:14:44.710530 44583 Frontend.cpp:192] Tracking failure. Number of 3d2d-matches: 0
W1103 07:14:44.716156 44583 Frontend.cpp:192] Tracking failure. Number of 3d2d-matches: 0
W1103 07:14:44.721832 44583 Frontend.cpp:192] Tracking failure. Number of 3d2d-matches: 0
W1103 07:14:44.727435 44583 Frontend.cpp:192] Tracking failure. Number of 3d2d-matches: 0
W1103 07:14:44.733212 44583 Frontend.cpp:192] Tracking failure. Number of 3d2d-matches: 0
W1103 07:14:44.739078 44583 Frontend.cpp:192] Tracking failure. Number of 3d2d-matches: 0
W1103 07:14:44.745018 44583 Frontend.cpp:192] Tracking failure. Number of 3d2d-matches: 0
Progress: 0% W1103 07:14:44.751013 44583 Frontend.cpp:192] Tracking failure. Number of 3d2d-matches: 0
W1103 07:14:44.756906 44583 Frontend.cpp:192] Tracking failure. Number of 3d2d-matches: 0
W1103 07:14:44.762770 44583 Frontend.cpp:192] Tracking failure. Number of 3d2d-matches: 0
W1103 07:14:44.768586 44583 Frontend.cpp:192] Tracking failure. Number of 3d2d-matches: 0
W1103 07:14:44.774410 44583 Frontend.cpp:192] Tracking failure. Number of 3d2d-matches: 0
W1103 07:14:44.780310 44583 Frontend.cpp:192] Tracking failure. Number of 3d2d-matches: 0
W1103 07:14:44.786347 44583 Frontend.cpp:192] Tracking failure. Number of 3d2d-matches: 0
W1103 07:14:44.792445 44583 Frontend.cpp:192] Tracking failure. Number of 3d2d-matches: 0
..............
Progress: 99% W1103 07:15:01.062726 44583 Frontend.cpp:192] Tracking failure. Number of 3d2d-matches: 0
W1103 07:15:01.067163 44583 Frontend.cpp:192] Tracking failure. Number of 3d2d-matches: 0
W1103 07:15:01.072008 44583 Frontend.cpp:192] Tracking failure. Number of 3d2d-matches: 0
W1103 07:15:01.076216 44583 Frontend.cpp:192] Tracking failure. Number of 3d2d-matches: 0
W1103 07:15:01.081310 44583 Frontend.cpp:192] Tracking failure. Number of 3d2d-matches: 0
W1103 07:15:01.086670 44583 Frontend.cpp:192] Tracking failure. Number of 3d2d-matches: 0
W1103 07:15:01.092151 44583 Frontend.cpp:192] Tracking failure. Number of 3d2d-matches: 0
W1103 07:15:01.097836 44583 Frontend.cpp:192] Tracking failure. Number of 3d2d-matches: 0
W1103 07:15:01.103615 44583 Frontend.cpp:192] Tracking failure. Number of 3d2d-matches: 0
W1103 07:15:01.109148 44583 Frontend.cpp:192] Tracking failure. Number of 3d2d-matches: 0
W1103 07:15:01.114886 44583 Frontend.cpp:192] Tracking failure. Number of 3d2d-matches: 0
W1103 07:15:01.120573 44583 Frontend.cpp:192] Tracking failure. Number of 3d2d-matches: 0
W1103 07:15:01.126384 44583 Frontend.cpp:192] Tracking failure. Number of 3d2d-matches: 0
W1103 07:15:01.132091 44583 Frontend.cpp:192] Tracking failure. Number of 3d2d-matches: 0
W1103 07:15:01.137619 44583 Frontend.cpp:192] Tracking failure. Number of 3d2d-matches: 0
W1103 07:15:01.143508 44583 Frontend.cpp:192] Tracking failure. Number of 3d2d-matches: 0
W1103 07:15:01.149154 44583 Frontend.cpp:192] Tracking failure. Number of 3d2d-matches: 0
W1103 07:15:01.154821 44583 Frontend.cpp:192] Tracking failure. Number of 3d2d-matches: 0
W1103 07:15:01.160675 44583 Frontend.cpp:192] Tracking failure. Number of 3d2d-matches: 0
Progress: 100%
Finished. Press any key to exit.
W1103 07:15:01.166384 44583 Frontend.cpp:192] Tracking failure. Number of 3d2d-matches: 0
I think the error is the version of Eigen , ceres and suitsparse. I would like to know what version of Eigen , ceres and suitsparse. Thanks you very much ~
Hi,
Is okvis sensitive to IMU‘s accuracy and IMU-Cam synchronization? I test it using the data from my mobile phone with modified configure file. Result seems bad. Have I missed any important steps , or maybe okvis cannot work on low-level IMU?
I want to download ASL dataset when running okvis from the URL http://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets
However I get nothing but '404 not found'. The dataset seems to be removed from the server.
Whether the dataset will be available on the server later?
Or where else can I access to the dataset?
Thank you in advance.
Using the Kalibr toolkit, we can do time-calibration between the camera and imu and got a time shift T such that: imu time = cam time + T
However, I found the parameter "imageDelay" in the config file is not used in the entire program
Do I need to implement it by myself? Or do I have any misunderstanding?
Hi, thank you for this code. Will it be possible to compile it for Windows? Or am I looking at a huge nightmare?
Is it possible to switch the inclusion of IMU measurements and states ON/OFF in this implementation?
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.