bytedance / schurvins Goto Github PK
View Code? Open in Web Editor NEWSchurVINS: Schur Complement-Based Lightweight Visual Inertial Navigation System(CVPR2024)
License: GNU General Public License v3.0
SchurVINS: Schur Complement-Based Lightweight Visual Inertial Navigation System(CVPR2024)
License: GNU General Public License v3.0
Thanks for your excellent work and this work truly helps, but I wonder if you have test this on KITTI, cause I didn't see the experiments on it in your article. I know the KITTI have some problems on IMU data, but I am curious whether it is because of IMU data or because this job is not suitable for outdoor environments. Thanks for your response, and again, thanks for your excellent work!
Does it normal that i spend more than 1 hour on building?
i think this is an amazing work, but i am new to VIO field, my math is so poor , could u tell me how to intergartion rtk gnss to this project ? some example or demo will be amazing , very appreciate!
I try to test SchurVins on dataset, the partial results of Vinsfusion and SchurVins are shown below:
The result appears to be a stable and smoother run by schurvin, but the scale of the odometry seems to be much larger than the ground truth. I only modified the Topic, intrinsic and external parameters of the sensor, and the parameters of the algorithm were not adjusted.
Hello:
When I try to run the euroc_vio_mono.launch in your package, the error occurs:
"terminate called after throwing an instance of 'std::__cxx11::basic_string<char, std::char_traits, std::allocator >'
*** Aborted at 1712720511 (unix time) try "date -d @1712720511" if you are using GNU date ***
PC: @ 0x7f8fbe5f300b gsignal
*** SIGABRT (@0x3e8001f5058) received by PID 2052184 (TID 0x7f8fae882a40) from PID 2052184; stack trace: ***
@ 0x7f8fbdc44631 (unknown)
@ 0x7f8fbeafc420 (unknown)
@ 0x7f8fbe5f300b gsignal
@ 0x7f8fbe5d2859 abort
@ 0x7f8fbe86bee6 (unknown)
@ 0x7f8fbe87df8c (unknown)
@ 0x7f8fbe87dff7 std::terminate()
@ 0x7f8fbe87e258 __cxa_throw
@ 0x7f8fbdd813f1 DBoW2::TemplatedVocabulary<>::load()
@ 0x7f8fbdd6f009 svo::loadVoc()
@ 0x7f8fbdd97e28 svo::LoopClosing::LoopClosing()
@ 0x7f8fbeaa0910 svo::factory::getLoopClosingModule()
@ 0x7f8fbea7a8f5 svo::SvoInterface::SvoInterface()
@ 0x7f8fbeaa5e11 svo_ros::SvoNodeBase::SvoNodeBase()
@ 0x55c0cff89541 main
@ 0x7f8fbe5d4083 __libc_start_main
@ 0x55c0cff895de _start
[svo-1] process has died [pid 2052184, exit code -6, cmd /home/robot/typical_packages/schurvins_ws/devel/lib/svo_ros/svo_node --v=0 __name:=svo __log:=/home/robot/.ros/log/b9fda87a-f6e3-11ee-b752-c3a6db2e312a/svo-1.log].
log file: /home/robot/.ros/log/b9fda87a-f6e3-11ee-b752-c3a6db2e312a/svo-1*.log
all processes on machine have died, roslaunch will exit
shutting down processing monitor...
... shutting down processing monitor complete
"
how to solve the problem, I sincerely wait for your reply.
Is it possible to work with mono+imu mode?
here is my output log
[ INFO] [1711966062.538299702]: DepthFilter: RESET.
[ INFO] [1711966062.576112987]: DepthFilter: RESET.
[ INFO] [1711966064.576300780]: Init: Triangulated 80 points
F0401 18:07:44.578207 25497 schur_vins.cpp:158] Check failed: _dt >= 0 && _dt < 0.015 dt: 1.595
*** Check failure stack trace: ***
@ 0x7f21ffd8e0cd google::LogMessage::Fail()
@ 0x7f21ffd8ff33 google::LogMessage::SendToLog()
@ 0x7f21ffd8dc28 google::LogMessage::Flush()
@ 0x7f21ffd90999 google::LogMessageFatal::~LogMessageFatal()
@ 0x7f22010d1785 schur_vins::SchurVINS::Prediction()
@ 0x7f22010d1f84 schur_vins::SchurVINS::Forward()
@ 0x7f2201077ccf svo::FrameHandlerBase::schurvinsForward()
@ 0x7f2201077ddc svo::FrameHandlerBase::sparseImageAlignment()
@ 0x7f220106804c svo::FrameHandlerMono::processFrame()
@ 0x7f22010668ce svo::FrameHandlerMono::processFrameBundle()
@ 0x7f2201085837 svo::FrameHandlerBase::addFrameBundle()
@ 0x7f22010874a4 svo::FrameHandlerBase::addImageBundle()
@ 0x7f2203c2ffac svo::SvoInterface::processImageBundle()
@ 0x7f2203c32395 svo::SvoInterface::monoCallback()
@ 0x7f21c393b5db image_transport::RawSubscriber::internalCallback()
@ 0x7f220179b71e boost::detail::function::void_function_obj_invoker1<>::invoke()
@ 0x7f21c393f791 ros::SubscriptionCallbackHelperT<>::call()
@ 0x7f2203fd2e92 ros::SubscriptionQueue::call()
@ 0x7f2203f7d559 ros::CallbackQueue::callOneCB()
@ 0x7f2203f7f2fb ros::CallbackQueue::callAvailable()
@ 0x7f2203c33765 svo::SvoInterface::monoLoop()
@ 0x7f22039236df (unknown)
@ 0x7f2201f926db start_thread
@ 0x7f220337e61f clone
Thanks a lot for your great effort. I found that SchurVins was indeed efficient when tested on the EuRoC dataset. However, when I modified the config file and tried to run it on the TUM-VI dataset, the system didn't work. Could you please provide me the calib and config YAML files for the TUM-VI dataset?
Thanks for your excellent work. I encountered the following problems during the running. The process can be started normally, but it gets stuck in the initialization or cannot find enough matched features.
my system is Ubuntu 20.04
roslaunch svo_ros euroc_vio_stereo.launch
rviz -d svo_ros/rviz_config.rviz
rosbag play --skip 30 MH_01_easy.bag.
I'm particularly interested in the sliding window mechanism mentioned in your paper (Section 3.3, Schur Complement-Based State Update), but despite considerable time spent searching, I haven't been able to locate the relevant code. Could you please elaborate on the implementation approach and indicate where the corresponding code might be found?
我正在尝试使用 EuRoc MH_01_easy 数据集进行单目测试
roslaunch svo_ros euroc_vio_mono.launch
rosbag play ~/dataset/euroc/MH_01_easy.bag
运行后出现如下错误
[ INFO] [1713845557.314806893]: DepthFilter: RESET.
[ INFO] [1713845557.924445191]: Init: Triangulated 270 points
[ WARN] [1713845557.930268830]: Not enough matched features: 1
[ WARN] [1713845558.108838740]: update seed with ref frame
[ INFO] [1713845558.126628123]: DepthFilter: RESET.
[ INFO] [1713845558.132423986]: DepthFilter: RESET.
[ INFO] [1713845558.634061873]: Init: Triangulated 253 points
F0423 04:12:38.638149 24000 schur_vins.cpp:158] Check failed: _dt >= 0 && _dt < 0.015 dt: 0.145
*** Check failure stack trace: ***
@ 0xffffa4f0d478 google::LogMessage::Fail()
@ 0xffffa4f12114 google::LogMessage::SendToLog()
@ 0xffffa4f0d16c google::LogMessage::Flush()
@ 0xffffa4f0d9ec google::LogMessageFatal::~LogMessageFatal()
@ 0xffffa52b1360 schur_vins::SchurVINS::Prediction()
@ 0xffffa52b1f38 schur_vins::SchurVINS::Forward()
@ 0xffffa5250a48 svo::FrameHandlerBase::schurvinsForward()
@ 0xffffa5250b6c svo::FrameHandlerBase::sparseImageAlignment()
@ 0xffffa523e180 svo::FrameHandlerMono::processFrame()
@ 0xffffa523dbfc svo::FrameHandlerMono::processFrameBundle()
@ 0xffffa52642cc svo::FrameHandlerBase::addFrameBundle()
@ 0xffffa5265b60 svo::FrameHandlerBase::addImageBundle()
@ 0xffffa5bce144 svo::SvoInterface::processImageBundle()
@ 0xffffa5bd0248 svo::SvoInterface::monoCallback()
@ 0xffff946cfc88 image_transport::RawSubscriber::internalCallback()
@ 0xffffa55962bc boost::detail::function::void_function_obj_invoker1<>::invoke()
@ 0xffff946d3b30 ros::SubscriptionCallbackHelperT<>::call()
@ 0xffffa5dede6c ros::SubscriptionQueue::call()
@ 0xffffa5d99a6c ros::CallbackQueue::callOneCB()
@ 0xffffa5d9b194 ros::CallbackQueue::callAvailable()
@ 0xffffa5bd14e8 svo::SvoInterface::monoLoop()
@ 0xffffa5a78f9c (unknown)
@ 0xffffa5c4c624 start_thread
@ 0xffffa58e662c (unknown)
当我尝试注释 schur_vins.cpp:158
中的 CHECK(_dt >= 0 && _dt < 0.015) << "dt: " << _dt;
并继续运行代码时,单目并不能正常初始化
[ INFO] [1713846196.049524194]: Found parameter: cam0_topic, value: /cam0/image_raw
[ INFO] [1713846201.779568090]: DepthFilter: RESET.
[ INFO] [1713846202.466484290]: Init: Triangulated 273 points
[ WARN] [1713846202.471739380]: Not enough matched features: 0
[ INFO] [1713846202.526014361]: DepthFilter: RESET.
[ INFO] [1713846202.540202016]: DepthFilter: RESET.
[ INFO] [1713846203.150429742]: Init: Triangulated 184 points
[ WARN] [1713846203.205118006]: update seed with ref frame
[ INFO] [1713846203.207485165]: DepthFilter: RESET.
[ INFO] [1713846203.280929192]: DepthFilter: RESET.
[ INFO] [1713846204.748265458]: Init: Triangulated 273 points
[ WARN] [1713846204.755045394]: Not enough matched features: 0
[ INFO] [1713846204.803306205]: DepthFilter: RESET.
[ INFO] [1713846204.929605295]: DepthFilter: RESET.
[ INFO] [1713846205.971445961]: Init: Triangulated 212 points
[ WARN] [1713846205.976854076]: Not enough matched features: 0
[ INFO] [1713846206.025532875]: DepthFilter: RESET.
[ INFO] [1713846206.039397071]: DepthFilter: RESET.
[ INFO] [1713846206.595847774]: Init: Triangulated 270 points
[ WARN] [1713846206.651199885]: update seed with ref frame
[ INFO] [1713846206.672586552]: DepthFilter: RESET.
[ INFO] [1713846206.679501562]: DepthFilter: RESET.
[ INFO] [1713846207.672123487]: Init: Triangulated 358 points
[ WARN] [1713846207.678051447]: Not enough matched features: 0
[ INFO] [1713846207.724733300]: DepthFilter: RESET.
[ INFO] [1713846207.778182832]: DepthFilter: RESET.
[ INFO] [1713846208.238005096]: Init: Triangulated 462 points
[ INFO] [1713846208.291663814]: DepthFilter: RESET.
[ INFO] [1713846208.338507812]: DepthFilter: RESET.
[ INFO] [1713846208.884368398]: Init: Triangulated 427 points
[ WARN] [1713846208.890133989]: Not enough matched features: 0
在运行双目测试时 roslaunch svo_ros euroc_vio_stereo.launch
不会出现上述错误
请问我应如何解决该问题
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.