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。