OpenVINS 下载编译
mkdir -p ~/workspace/catkin_ws_ov/src/
cd ~/workspace/catkin_ws_ov/src/
git clone https://github.com/rpng/open_vins/
cd ..
catkin build
如果提示: catkin command not found 那么安装:
sudo apt-get install python-catkin-tools
接着catkin build
提示找不到 Eigen/Eigen,具体提示如下:
In file included from /home/damon/workspace/catkin_ws_ov/src/open_vins/ov_core/src/sim/BsplineSE3.cpp:21:0:
/home/damon/workspace/catkin_ws_ov/src/open_vins/ov_core/src/sim/BsplineSE3.h:26:23: fatal error: Eigen/Eigen: No such file or directory
可能是我的Eigen版本太老了,于是去Eigen官网下载最新版本,解压到OpenVINS路径下,我这里的路径是"/home/damon/workspace/catkin_ws_ov/src/open_vins/Eigen"
然后依次修改ov_core ,ov_eval,ov_msckf等包的CMakelists.txt
具体是将${Eigen_INCLUDE_DIRS}替换成"/home/damon/workspace/catkin_ws_ov/src/open_vins/Eigen"
弄完之后catkin build
看到这里,你就编译成功了!
现在,跑跑数据集
修改launch文件
vim ~/workspace/catkin_ws_ov/src/open_vins/ov_msckf/launch/pgeneva_eth.launch
修改两处,一个是.bag文件路径,另一个是Ground truth文件的路径
<param name="path_bag" type="string" value="/media/damon/Data/EuRoC/MH_01_easy.bag" />
<param name="path_gt" type="string" value="/media/damon/Data/EuRoC/MH_01_easy/mav0/state_groundtruth_estimate0/data.csv" />
~/workspace/catkin_ws_ov
source devel/setup.bash
roscore
rosrun rviz rviz
roslaunch ov_msckf pgeneva_eth.launch
也可以在launch文件下加一行
<node type="rviz" name="rviz" pkg="rviz" args="-d $(find ov_msckf)/launch/display.rviz" />
这样就不用rosrun rviz了
这是双目msckf在MH_01_easy的结果,蓝线Ground truth,绿线是msckf
用Realsense D435i跑起来
在open_vins/ov_msckf/launch 文件夹下创建一个.launch文件,我这里创建一个d35i.launch,具体内容如下(参考官网做更改):
这里的相机内外参需要自己标定,有很多种标定方法.google去吧~
<node name="run_serial_msckf" pkg="ov_msckf" type="run_serial_msckf" output="screen">
<!-- bag topics -->
<!-- 数据topic,包含两个相机和一个imu数据topic -->
<param name="topic_imu" type="string" value="/camera/imu" />
<param name="topic_camera0" type="string" value="/camera/infra1/image_rect_raw" />
<param name="topic_camera1" type="string" value="/camera/infra2/image_rect_raw" />
<!-- bag parameters -->
<!-- 修改数据集的路径,bag_start是开始时间,bag_durr是持续时间,-1是到最后 -->
<param name="path_bag" type="string" value="/home/damon/d435i1.bag" />
<param name="bag_start" type="int" value="0" />
<param name="bag_durr" type="int" value="-1" />
<!-- world/filter parameters -->
<!-- 修改 max_cameras可以转换成单目或者双目 -->
<param name="max_clones" type="int" value="11" />
<param name="max_slam" type="int" value="0" />
<param name="max_cameras" type="int" value="2" />
<param name="feat_representation" type="string" value="GLOBAL_3D" />
<param name="init_window_time" type="double" value="0.5" />
<param name="init_imu_thresh" type="double" value="2.0" />
<rosparam param="gravity">[0.0,0.0,9.81]</rosparam>
<!-- tracker/extractor parameters -->
<param name="use_klt" type="bool" value="true" />
<param name="fast_threshold" type="int" value="10" />
<param name="grid_x" type="int" value="5" />
<param name="grid_y" type="int" value="3" />
<param name="min_px_dist" type="int" value="10" />
<param name="num_pts" type="int" value="400" />
<!-- sensor noise values / update -->
<param name="up_msckf_sigma_px" type="double" value="1" />
<param name="up_msckf_chi2_multipler" type="double" value="1" />
<param name="gyroscope_noise_density" type="double" value="1.6968e-04" />
<param name="gyroscope_random_walk" type="double" value="1.9393e-05" />
<param name="accelerometer_noise_density" type="double" value="2.0000e-3" />
<param name="accelerometer_random_walk" type="double" value="3.0000e-3" />
<!-- camera intrinsics -->
<param name="cam0_is_fisheye" type="bool" value="false" />
<param name="cam1_is_fisheye" type="bool" value="false" />
<rosparam param="cam0_k">[458.654,457.296,367.215,248.375]</rosparam>
<rosparam param="cam0_d">[-0.28340811,0.07395907,0.00019359,1.76187114e-05]</rosparam>
<rosparam param="cam1_k">[457.587,456.134,379.999,255.238]</rosparam>
<rosparam param="cam1_d">[-0.28368365,0.07451284,-0.00010473,-3.55590700e-05]</rosparam>
<!-- camera extrinsics -->
<rosparam param="T_C0toI">
[
0.0148655429818, -0.999880929698, 0.00414029679422, -0.0216401454975,
0.999557249008, 0.0149672133247, 0.025715529948, -0.064676986768,
-0.0257744366974, 0.00375618835797, 0.999660727178, 0.00981073058949,
0.0, 0.0, 0.0, 1.0
]
</rosparam>
<rosparam param="T_C1toI">
[
0.0125552670891, -0.999755099723, 0.0182237714554, -0.0198435579556,
0.999598781151, 0.0130119051815, 0.0251588363115, 0.0453689425024,
-0.0253898008918, 0.0179005838253, 0.999517347078, 0.00786212447038,
0.0, 0.0, 0.0, 1.0
]
</rosparam>
</node>
<node type="rviz" name="rviz" pkg="rviz" args="-d $(find ov_msckf)/launch/display.rviz" />
</launch>
录制.bag文件
rosbag record -O ~/d435i1.bag /camera/imu /camera/infra1/image_rect_raw /camera/infra2/image_rect_raw
roslaunch ov_msckf euroc.launch
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)