小觅发布的 VINS-FUSION 做了些许修改,可以很好的适配 自家的小觅相机,这给下一步的工作提供了不少便利
源代码
小觅的官方代码地址:https://gitee.com/mynt/MYNT-EYE-VINS-FUSION-Samples.git
自己fork的代码地址:https://gitee.com/tsuibeyond/MYNT-EYE-VINS-FUSION-Samples.git
自己fork 的代码将持续的改进与维护
数据集 Euroc
适当修改了一下 launch 文件,直接运行
roslaunch vins euroc-stereo-imu.launch
准备一个 Euroc 数据包 : V2_01_easy.bag ,(113.974481秒,比较精小),然后播放
rosbag play V2_01_easy.bag
测试过程中,发现 rosTestNode.cpp 中的以下函数实际中并没有用到,故删除
void feature_callback(const sensor_msgs::PointCloudConstPtr &feature_msg)
小觅相机
插上相机后,直接运行命令
roslaunch vins mynteye-d-stereo-imu.launch
mynteye-d-stereo-imu.launch 的内容修改为
<?xml version="1.0"?>
<launch>
<arg name="config_file" default="$(find vins)/../config/mynteye-d/mynt_stereo_imu_config.yaml" />
<node name="vins_estimator" pkg="vins" type="vins_d_node" output="screen" >
<param name="config_file" value="$(arg config_file)" />
</node>
<node name="rvizvisualisation" pkg="rviz" type="rviz" output="log" args="-d $(find vins)/../config/vins_rviz_config.rviz" />
<include file="$(find mynteye_wrapper_d)/launch/slam/fswf.launch"/>
</launch>
其中 fswf.launch 是自定义的,主要设置了 stream_1280x480,其他的没有什么变化
在测试的过程中,偶然发现了一个问题:
VINS系列的视觉里程计方案使用的是光流法对特征进行追踪,可以对角点特征进行快速的跟踪
但是,在使用相机对准有大方块图案的的时候,发现在方块的边上也会被提取出角点,但是追踪的时候,角点会在边上滑动,造成视觉里程计的漂移。
另一方面,倘若使相机面对室内其他场景,角点处于直线上的概率会小很多,则视觉里程计不会发生漂移
改进方法:使用ORB-SLAM的方法,使用特征点描述子提高特征点追踪的可靠性
2021.09.29
昨天晚上在调试的时候,发现VINS-FUSION在小觅相机上很不稳定,稍有不甚就会跑飞,但是跑Euroc的数据集就很正常。昨天晚上反复检查了相机与IMU的标定参数,今天上午再次测试,发现还是容易飞掉。
把相机静止放在桌面上,一切正常,但是只要拍打桌面,产生震动,系统就开始慢慢飞起来
索性在配置文件里将IMU关掉,居然一切正常了,推断IMU没有良好的校准,反而给系统引入噪声,影响系统的精度。