Closed HtutLynn closed 10 months ago
Hi
Were you able to solve this?
This error is probably not related to your data-provider. GTSAM throws these errors when the system is ill-posed, so in this case the optimization is likely under-constrained. This means that many of the factors in the optimization are not agreeing with each other.
It could be caused by any of the factors. Some common problems:
BackendParams.yaml
.Given your discussion in #217 it seems likely the two problems are related. I would check that IMU data is properly formed, that your gravity vector is correct, and that your extrinsic calibration between the IMU and the camera is correct.
As for why your code fails to run Euroc, I'm not sure. Have you set autoInitialize
in BackendParams.yaml
to 0? This will be required if you run Euroc without access to ground truth. One note: you've commented out every call to CHECK_GT
, this is not a call to any ground truth function but rather sanity checks to make sure the incoming data is correct. You can keep most or all of those uncommented.
More generally, I'd recommend making a new iPhoneDataProvider
instead of modifying the EurocDataProvider directly. You can copy most of the code and not include any GT parts, and you can retain full Euroc functionality. You'll just need to add your new DataProvider to the options in examples/KimeraVIO.cpp
and use the dataset_type
variable to instruct the executable to use your new DataProvider by assigning it to value 2 or similar.
@marcusabate , Hi, as for the GTSAM error. I used the modified EurocDataProvider.cpp
to test Mono VIO pipeline with EUROC dataset and I am not using custom dataset from iPhone sensors. To test whether Kimera works properly without ground truth data with modified script, I just deleted ground_truth_estimates
from V1_01_easy
folder and this GTSAM error comes up. So I think it doesn't have to do with the dataset but the script that I modified. autoInitialize
param from BackendParams.yaml
is also set to 0
.
Hello everybody, I had the same issue with my custom fisheye stereo bench, on ubuntu 20.04 and with the branch 'origin/feature/prerelease'. I finally managed to make it work doing the following steps:
BackendParams.yaml
and set autoInitialize
to 1stereoVIOEuroc.bash
I set the parameter --log_euroc_gt_data=0
EurocDataProvider::parseDataset()
and changed the line is_gt_available_ = parseGtData(dataset_path_, ground_truth_name);
to is_gt_available_ = false;
I hope this will help!
@cdebeunne , Thanks, it fixed my problem.
Hi, I have a dataset which is collected with iphone 13 and trying to use with Kimera-VIO. Since I have no idea on how to create a dataprovider by myself. I tried formatting the data from iphone13 as the same format as EuroC dataset. However there is no ground truth estimate data for the custom dataset, created from iphone sensors so I tried modifying the
EurocDataProvider.cpp
as mentioned in https://github.com/MIT-SPARK/Kimera-VIO/issues/157 . However, a new error from GTSAM is causing the pipeline unable to run even on sample EUROC dataset.Here is the modified
EurocDataProvider.cpp
,Here is the Error from GTSAM,
Am I doing something wrong with the data provider? Can you please provide guidance to make this work? Thanks in advance!