系统说明:Ubuntu 18.04
内核版本:5.4.0
参考博客VINS(D435i)测试
问题:
**(1)**下载源码部分:
步骤a:
git clone https://github.com/IntelRealSense/librealsense.git
原作者推荐2.19原因解释在于SDK2.19中包含了步骤3中Ros Wrapper中的ddynamic_reconfigure
但是目前直接git 下来版本为V2.36,需要注意这个SDK版本对应的realsense版本是需要安装ddynamic_reconfigure
的,否则编译时候会报错缺少这个东西。
若不对应,会出现https://blog.csdn.net/weixin_38504276/article/details/103010109
点击进入中的错误
步骤c
echo 'deb http://realsense-hw-public.s3.amazonaws.com/Debian/apt-repo xenial main' | sudo tee /etc/apt/sources.list.d/realsense-public.list
这一步需要注意xenial
其实是UBuntu16.04对应的,但是18.04也能用,更建议换成melodic
,参考官网linux下安装部分。
***(2)***pip问题
执行igraph时候(按照官方的github),会遇到pip的问题,百度换源
(给pip换源)安装。
(3)安装Kalib的时候,会出现suitparse问题,修改Cmakelists.txt中相应行如下:
DOWNLOAD_COMMAND rm -f SuiteSparse-${VERSION}.tar.gz && wget -O SuiteSparse-${VERSION}.tar.gz "https://github.com/jluttine/suitesparse/archive/v${VERSION}.tar.gz"
其他部分依次执行。
较全的参考博客推荐:博主古路标定
问题记录:
**(1)**IMU标定
rs_imu_calibration.launch
该代码直接把rs_camera.launch复制过来就行,前提是在运行VINS中已经修改过参数。
**(2)**运行IMU校准参数时候,复制过来就可以,修改时间参数就行,我在此处将data_save_path修改为自己的参数,但是读取不了。
**(3)**相机标定,需要下载april grid,此处任意放置一个目录就行,后期运行标定命令修改路径。
**(4)**关闭IR发射器:关闭IR,每次重新插拔相机后要再关一次
**(5)**摄像头标定,多角度多位置移动,:参考视频
此处数据集录制不好,在执行标定命令时,会出现以下错误和警告,这三个均为不影响执行的
[ WARN] [1596511223.581216]: BagImageDatasetReader: truncated 1485 / 2834 images.
(Aprilgrid: Tag detection:24719): GLib-GObject-CRITICAL **: 11:32:39.553: g_object_unref: assertion 'G_IS_OBJECT (object)' failed
[TargetViewTable]: Tried to add second view to a given cameraId & timestamp. Maybe try to reduce the approximate syncing tolerance.
我个人标定了四次,有一次数据集在上面第三条命令之后又出现了下面一条错误直接中断,下面这个错误没有花时间去解决,换其他数据集没报错,所以在录制数据集的时候可以多录制几个。其次时间可以限制短一些,本人处理器为i7 10代,时间选10-100处理时间较长,建议选择一半。
导致中止的错误:
[ERROR] [1596519258.700033]: initialization of focal length for cam with topic /infra_right failed
这个错误github上是有解决方案的。
**(6)**多相机标定命令:
kalibr_calibrate_cameras --target /home/april_6x6_80x80cm.yaml --bag /home/multicameras_calibration.bag --models pinhole-equi pinhole-equi pinhole-equi --topics /infra_left /infra_right /color --show-extraction --approx-sync 0.04 --bag-from-to 30 50
其中target命令和bag后面的路径修改成自己的。--approx-sync 0.04
开头提出的参考博客中,开始标定命令后面没有这块代码,其后就会出现原博客报错。
**(7)**多相机标定报告生成后,可以和开头博客对比下,有时候重投影误差太大可以重新标一次。
**(8)**联合标定
a.联合标定开始提到的文件是需要自己写的,路径自己定,后面在标定命令中把相应路径填进去就行。
b.该imu.yaml(原博客此处拼写错误)开头topic有误:
rostopic: /camera/imu
update_rate: 200.0 #Hz
accelerometer_noise_density: 2.3786845794688424e-02 #白噪声
accelerometer_random_walk: 5.9166889270489845e-04 #偏置
gyroscope_noise_density: 2.1732068912927271e-03 #continous
gyroscope_random_walk: 1.7797900203083191e-05
仅修改第一行为:
rostopic: /imu
因为在后面限制频率后,修改了话题
***c***报错缺少模块:
NO module named scipy.optimize
使用命令:
sudo apt-get install python-scipy
此处试过网上很多命令,都不是很好使。参考帖子:进入
***d***录制数据集
录制数据:建议录制color+imu。多相机加IMU的优化矩阵很大,本人电脑配置优化失败,如果有较好的台式机可以一试。因为最后也只用color的数据,所以没必要多目加IMU标定。
***e***优化报错
尽管录制单目,但是也有可能优化失败:如下
Exception in thread block: Exception in thread block: [aslam::Exception] /home/louis/catkin_ws/src/kalibr/aslam_nonparametric_estimation/aslam_splines/src/BSplineExpressions.cpp:447: toTransformationMatrixImplementation() assert(_bufferTmin <= _time.toScalar() < _bufferTmax) failed [15106.3 <= 15106.3 < 15106.4]: Spline Coefficient Buffer Exceeded. Set larger buffer margins!
[aslam::Exception] /home/louis/catkin_ws/src/kalibr/aslam_nonparametric_estimation/aslam_splines/src/BSplineExpressions.cpp:447: toTransformationMatrixImplementation() assert(_bufferTmin <= _time.toScalar() < _bufferTmax) failed [15118.2 <= 15118.2 < 15118.2]: Spline Coefficient Buffer Exceeded. Set larger buffer margins!
Exception in thread block: [aslam::Exception] /home/louis/catkin_ws/src/kalibr/aslam_nonparametric_estimation/aslam_splines/src/BSplineExpressions.cpp:447: toTransformationMatrixImplementation() assert(_bufferTmin <= _time.toScalar() < _bufferTmax) failed [15094.8 <= 15094.8 < 15094.9]: Spline Coefficient Buffer Exceeded. Set larger buffer margins!
[ERROR] [1454555378.858709]: Optimization failed!
该错误解决方法见github:
github
与此相关的还有问题55,可在上面github的问题中搜索。
修改的文件
/kalib_ws/src/Kalibr/aslam_offline_calibration/kalibr/python/kalibr_imu_camera_calibration/IccCalibrator.py
与问题171中提到的不太一样,但是timeOffsetPadding
的确在此处修改,将值改为0.1(原来为0.02)。
然鹅,再一次优化失败,我又修改了数据集的时间长度,将其修改为后20s,才优化成功。
此处记录标定成功中遇到的问题,但是跑VINS效果不好,后续继续。