1 MSCKF-VIO
介绍:
MSCKF_vio是一种基于多状态约束卡尔曼滤波器的双目视觉里程计。
github:https://github.com/KumarRobotics/msckf_vio
运行rviz
//download
mkdir msckf/src
cd msckf/src
git clone https://github.com/KumarRobotics/msckf_vio
cd ..
catkin_make --pkg msckf_vio --cmake-args -DCMAKE_BUILD_TYPE=Release
//上一步比较重要
// open an terminal
roslaunch msckf_vio msckf_vio_euroc.launch
// open another terminal
rosrun rviz rviz -d msckf_vio/rviz/rviz_euroc_config.rviz
//open another terminal
rosbag play MH_02_easy.bag
结果:
可视化结果中没有轨迹 |
2ROVIO
介绍:
ROVIO利用扩展卡尔曼滤波进行状态估计,惯性测量用于滤波器的状态传递过程;视觉信息在滤波器更新阶段使用。ROVIO中许多非常吸引人的特性。首先,ROVIO使用速度更快的FAST来提取角点,其三维座标用向量和距离表示;其次,所有角点是通过图像块进行描述,并通过视频流获取了多层次表达;最后利用IMU估计的位姿来计算特征投影后的光度误差,并将其用于后续优化。
优点:
计算量小(EKF,稀疏的图像块)
缺点:
没有闭环,没有mapping thread;误差会残留到下一时刻;对应不同的设备需要调参数,参数对精度很重要。
https://github.com/ethz-asl/rovio
安装kindr
Kinematics and Dynamics for Robotics 机器人的运动学和动力学
https://github.com/ANYbotics/kindr
//安装kindr
git clone https://github.com/ANYbotics/kindr
cd kindr
mkdir build
cd build
cmake ..
sudo make install
安装ROVIO(同时安装lightweight_filtering)
mkdir rovio/src
cd rovio/src
git clone https://github.com/ethz-asl/rovio
cd rovio
git submodule update --init --recursive #安装lightweight_filtering
//视网络而定,可能会失败
cd ~/catkin_ws
catkin_make rovio --cmake-args -DCMAKE_BUILD_TYPE=Release -DMAKE_SCENE=ON
catkin_make
运行
修改rovio/launch/rovio_rosbag_node.launch
中的filename
参数,将其改为实际rosbag
的目录
<param name="rosbag_filename" value="你的路径/MH_01_easy.bag"/>
打开命令窗口运行roscore
roscore
打开新窗口,进入catkin_ws工作空间运行
roslaunch rovio rovio_rosbag_node.launch
报错
what(): Error opening file: /home/kuan/2data/EuRoc/rovio/2019-11-14-08-39-55_25_4_6_1_0.bag
[rovio-1] process has died [pid 19676, exit code -6, cmd /home/kuan/3worksapce/7rovio/devel/lib/rovio/rovio_rosbag_loader __name:=rovio __log:=/home/kuan/.ros/log/0b54881a-0693-11ea-a79f-18cf5e960819/rovio-1.log].
log file: /home/kuan/.ros/log/0b54881a-0693-11ea-a79f-18cf5e960819/rovio-1*.log
解决方案
在euroc的数据集文件家中,需要新建文件夹rovio。