Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Can not run Euroc datasets #11

Open
lihanlun opened this issue May 15, 2023 · 12 comments
Open

Can not run Euroc datasets #11

lihanlun opened this issue May 15, 2023 · 12 comments

Comments

@lihanlun
Copy link

I have used VIODE datasets to test the dynaVINS, and got results as better as the paper write. However, when I use the Euroc datasets to test the dynaVINS, I find that, the dynaVINS cannot get a correct results, the results is not convergence. Have you tried other datasets except other open datasets except the paper used.

@ForLoveandPeace
Copy link

Hi, I have tried it and it worked well. Maybe you need to check the config of euroc.

@lihanlun
Copy link
Author

I have checked it, and can not find the problem. My euroc config file as flows, could you help me check it?

Extrinsic parameter between IMU and Camera.

estimate_extrinsic: 0 # 0 Have an accurate extrinsic parameters. We will trust the following imu^R_cam, imu^T_cam, don't change it.
# 1 Have an initial guess about extrinsic parameters. We will optimize around your initial guess.

body_T_cam0: !!opencv-matrix
rows: 4
cols: 4
dt: d
data: [0.0148655429818, -0.999880929698, 0.00414029679422, -0.0216401454975,
0.999557249008, 0.0149672133247, 0.025715529948, -0.064676986768,
-0.0257744366974, 0.00375618835797, 0.999660727178, 0.00981073058949,
0.0, 0.0, 0.0, 1.0]

body_T_cam1: !!opencv-matrix
rows: 4
cols: 4
dt: d
data: [0.0125552670891, -0.999755099723, 0.0182237714554, -0.0198435579556,
0.999598781151, 0.0130119051815, 0.0251588363115, 0.0453689425024,
-0.0253898008918, 0.0179005838253, 0.999517347078, 0.00786212447038,
0.0, 0.0, 0.0, 1.0]

#Multiple thread support
multiple_thread: 1

#feature traker paprameters
max_cnt: 150 # max feature number in feature tracking
min_dist: 15 # min distance between two features
freq: 10 # frequence (Hz) of publish tracking result. At least 10Hz for good estimation. If set 0, the frequence will be same as raw image
F_threshold: 2.0 # ransac threshold (pixel)
max_depth: 10.0 # max estimated depth (m)
show_track: 1
show_image_feat_weight: 1

publish tracking image as topic

flow_back: 1 # perform forward and backward optical flow to improve feature tracking accuracy

#dynaVINS parameters
dyna_on: true # do not change it to false
regularization_lambda: 2.0
momentum_on: true
momentum_lambda: 0.2
alternating_converge: 0.9
margin_feature_thresh: 0.1

#optimization parameters
max_solver_time: 0.3 # max solver itration time (ms), to guarantee real time
max_num_iterations: 10 # max solver itrations, to guarantee real time
keyframe_parallax: 10.0 # keyframe selection threshold (pixel)

#imu parameters The more accurate parameters you provide, the better performance
acc_n: 0.2 # accelerometer measurement noise standard deviation.
gyr_n: 0.05 # gyroscope measurement noise standard deviation.
acc_w: 0.02 # accelerometer bias random work noise standard deviation.
gyr_w: 4.0e-5 # gyroscope bias random work noise standard deviation.
g_norm: 9.81007 # gravity magnitude

#unsynchronization parameters
estimate_td: 0 # online estimate time offset between camera and imu
td: 0.0 # initial value of time offset. unit: s. readed image clock + td = real image clock (IMU clock)

@lihanlun
Copy link
Author

cam0 config file as fellows:
model_type: PINHOLE
camera_name: camera
image_width: 752
image_height: 480
distortion_parameters:
k1: -2.9545645106987750e-01
k2: 8.6623215640186171e-02
p1: 2.0132892276082517e-06
p2: 1.3924531371276508e-05
projection_parameters:
fx: 4.6115862106007575e+02
fy: 4.5975286598073296e+02
cx: 3.6265929181685937e+02
cy: 2.4852105668448124e+02

@lihanlun
Copy link
Author

cam1 config file as fellows:
model_type: PINHOLE
camera_name: camera
image_width: 752
image_height: 480
distortion_parameters:
k1: -2.9294124381930947e-01
k2: 8.4798002331543665e-02
p1: -2.9984646536002372e-04
p2: 3.0028216325237329e-04
projection_parameters:
fx: 4.6009781682258682e+02
fy: 4.5890983492218902e+02
cx: 3.7314916359808268e+02
cy: 2.5440734973672119e+02

@lihanlun
Copy link
Author

Or, Could you share your euroc config files?

@ForLoveandPeace
Copy link

I have used evo to evaluate dynaVINS on Machine Hall dataset. As result, VINS-Fusion's performance is better than dynaVINS's.
Actually, your config file is almost same with mine. Could you show more information about the error?

@lihanlun
Copy link
Author

Thank you for your share information. When I use euroc MH01, at the beginning it is OK, then show the wrong traj ( traj as straight line). Now I find that, I should change some code:
while(costDiff<DYN_ALT_CONV && iteration<5)
{
optimizeVIO(true,costDiff);
optimizeVIO(false,costDiff);
std::cout<<"COSTDIFF:"<<costDiff<<std::endl;
iteration++;
}
To

while(costDiff<DYN_ALT_CONV && iteration<5)
{
optimizeVIO(false,costDiff);
optimizeVIO(true,costDiff);
std::cout<<"COSTDIFF:"<<costDiff<<std::endl;
iteration++;
}

It can get a correct traj, but worse than vins-fusion.

@lihanlun
Copy link
Author

I think the code should fix feature_weight first then fix others and optimize feature_weight. A very big problem is that the results get worse.

@zhipengak
Copy link

I have the same problem, DynaVins can't get the reasonable result with Euroc dataset.
Also I try it with my dataset I acquired from my chassis, bad trajectory I got.
But both Euroc dataset and my dataset I can run well in VINS-fusions!

@ForLoveandPeace
Copy link

I have the same problem, DynaVins can't get the reasonable result with Euroc dataset.
Also I try it with my dataset I acquired from my chassis, bad trajectory I got.
But both Euroc dataset and my dataset I can run well in VINS-fusions!

Hi, could you show more details? Thanks!

@zhipengak
Copy link

Problem solved!
I replace the yaml "cam0_pinhole.yaml" and "cam1_pinhole.yaml" with "cam0_mei.yaml" and "cam0_mei.yaml", it work and output the right trajectory! I dont know why "cam0_pinhole.yaml" and "cam1_pinhole.yaml" are not work, but glad this code can work with "cam0_mei.yaml" and "cam0_mei.yaml"!
Thank you for share this code very much!
图片

@lihanlun
Copy link
Author

lihanlun commented Aug 9, 2023

Problem solved! I replace the yaml "cam0_pinhole.yaml" and "cam1_pinhole.yaml" with "cam0_mei.yaml" and "cam0_mei.yaml", it work and output the right trajectory! I dont know why "cam0_pinhole.yaml" and "cam1_pinhole.yaml" are not work, but glad this code can work with "cam0_mei.yaml" and "cam0_mei.yaml"! Thank you for share this code very much! 图片

I have tried this method,but the result is still wrose than vins-fusion. Have you evaluated the results on Euroc datasets.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants