i2Nav-WHU / IC-GVINS

A Robust, Real-time, INS-Centric GNSS-Visual-Inertial Navigation System
GNU General Public License v3.0
458 stars 109 forks source link

请问一下,我用我的imu跑的数据为什么发散? #25

Closed JiangWeiHn closed 1 year ago

JiangWeiHn commented 1 year ago

我的机器人小车采用的是1千500多元的MEMS IMU,采用imu_utils标定的结果如下: Gyr: unit: " rad/s" avg-axis: gyr_n: 1.8933385090752749e-04 gyr_w: 7.2972481573027919e-07 Acc: unit: " m/s^2" avg-axis: acc_n: 1.0407961802605373e-02 acc_w: 1.8161057505407526e-04 转换一下,陀螺仪的零偏大概39°/h,加速度计的零偏大概1040mGal.我用kalibr标定的相机和imu的结果在0.4个像素之内。相机采用的是zed2i相机,分辨率为640x360,跑的结果如下图所示: B645222C-A528-49f3-AF14-A4B85883BDCC 小车跑了20秒左右,在划红线的部分应该是直角转弯的地方,开始发散了。发散到弧线了。下面的是我的yaml文件的配置。其中imu噪声模型我把程序里的单位转换删除了。直接用的imu_utils标定的结果。请教下怎么改进现在的配置,提高精度? outputpath: "/Data/workspace/JW/gvins_ws/test/" is_make_outputdir: true

时间信息, s

Time length for GNSS/INS intialization

initlength: 1

IMU原始数据频率, Hz

IMU sample rate

imudatarate: 500

考虑地球自转补偿项

Consider the Earth rotation

iswithearth: true

天线杆臂, IMU前右下方向, m

GNSS lever-arm in IMU body frame (front-right-down)

antlever: [-0.22297, 0.008, -0.06795]

IMU噪声建模参数

IMU noise parameters

imumodel: arw : 0.00000072972481573027919 gbstd: 0.00018933385090752749 vrw : 0.00018161057505407526 abstd: 0.010407961802605373 corrtime : 1.0

GNSS中断配置

GNSS outage configurations, the GNSS will not be used after the gnssoutagetime

isusegnssoutage: false gnssoutagetime: 0

固定阈值GNSS抗差

A fixed threshold (STD, m) for GNSS outlier culling

gnssthreshold: 20

是否开启可视化

Use visualization

is_use_visualization: true

跟踪

Tracking configurations

track_check_histogram: true # 直方图检查, 避免出现光照变化较大的图像 (Check histogram for drastic illumulation change) track_min_parallax: 10 # 关键帧最小像素视差 (The minmum parallax in pixels to choose a keyframe) track_max_interval: 0.5 # 最大的关键帧间隔, 超过则插入观测帧, s (The maximum lenght to choose a observation frame) track_max_features: 200 # 最大提取特征数量 (The maximum features to detect, may be more or less, see tracking.cc)

优化

Optimization configurations

reprojection_error_std: 1.5 # 像素重投影误差 (The reprojection error std for optimizition and outlier culling) optimize_windows_size: 30 # 滑动窗口大小 (The size of the sliding window, number of the keyframes ) optimize_num_iterations: 25 # 优化迭代次数 (The iterations in total) optimize_estimate_extrinsic: false # 是否估计相机和IMU的外参 (Estimate the extrinsic) optimize_estimate_td: false # 否估计相机和IMU之间的时间间隔 (Estimate the time delay)

Camera parameters

cam0:

内参 [fx, fy, cx, cy(, skew)]

# Intrinsic parameters, pinhole model
intrinsic: [260.43896, 260.43896, 319.3829, 177.6054]
# 畸变参数 [k1, k2, p1, p2(, k3)]
# Distortion parameters
distortion: [0.0, 0.0, 0.0, 0.0]
# 图像分辨率
# Resolution
resolution: [640, 360]
# 相机IMU外参 (Camera-IMU extrinsic)
# Pb = q_b_c * Pc + t_b_c
# q (x, y, z, w)
q_b_c: [0.50291563,0.49477625,0.50032398,0.50194446]

t_b_c: [0.17948435 ,-0.06008578 , -0.10578209]
# IMU和相机时间延时 (The time delay between the IMU and camera)
# t_i = t_c + td
td_b_c: 0.019530032247611233
thlsealight commented 1 year ago

请参考issue 20,具体数据集的配置请自行修改参数。

数据集配置不属于本开源项目的问题,我将直接关闭这个issue。