大致是按照作者给的步骤走的,代码地址点这里,作者给的步骤点这里。
SVO支持用ros和没有ros情况下运行,我试了没有ros的情况,也试了在ros运行,这里选择ros下的安装。
SVO需要建立两个工作空间workspace,一个用来放cmake工程,包括Sopuhus(一个李群库,懵逼),Fast(特征检测),还有可选的库g2o(图优化),另一个工作空间放ROS-Catkin工程rpg_vikit(vision kit)和rpg_svo(svo工程文件)。保证clone到正确的目录里。
Sophus实现李群代数,用来描述刚体运动变换的,安装步骤如下,一般不会出错。
cd workspace
git clone https://github.com/strasdat/Sophus.git
cd Sophus
git checkout a621ff
mkdir build
cd build
cmake ..
make
make后不需要install,cmake ..会将包地址写到~/.cmake/packages/目录下,cmake可以找到这里
用来检测角点的,基本不会错,步骤如下:
cd workspace
git clone https://github.com/uzh-rpg/fast.git
cd fast
mkdir build
cd build
cmake ..
make
在需要运行bundle adjustment时要安装,在做visual odometry时不是必要安装的。作者在MAV上没有运行g2o。g2o的安装依赖包括:cmake, libeigen3-dev, libsuitesparse-dev, libqt4-dev, qt4-qmake, libqglviewer-qt4-dev。可以用apt-get install分别安装。安装步骤:
cd workspace
git clone https://github.com/RainerKuemmerle/g2o.git
cd g2o
mkdir build
cd build
cmake ..
make
sudo make install
如果不想在系统安装的话,可以将cmake指令用cmake .. -CMAKE_INSTALL_PREFIX:PATH=$HOME/installdir代替。
vikit库包含相机模型、一些svo用到的数学和插值函数,vikit是一个catkin工程,所以需要下载到catkin工作空间的目录。
cd catkin_ws/src
git clone https://github.com/uzh-rpg/rpg_vikit.git
有时候cmake-modules会丢失 (required for including Eigen in ROS Indigo),不懂这个干嘛的,按照步骤装。
sudo apt-get install ros-indigo-cmake-modules
indigo换成自己的ros版本。
现在可以编译build svo了,把它clone到catkin工作空间。
cd catkin_ws/src
git clone https://github.com/uzh-rpg/rpg_svo.git
以下三句很重要,我没有运行这几句,roslaunch一直出错
source devel/setup.bash
echo “source ~/catkin_ws/devel/setup.bash” >> ~/.bashrc
source ~/.bashrc
如果安装了g2o的话,把svo/CmakeLists.txt里的HAVE_G20设置为TRUE。
d如果把g2o安装在$HOME/installdir的话,需要设置环境变量G2O_ROOT告诉find_package.
export G2O_ROOT=$HOME/installdir
d最后编译build svo
catkin_make
下载数据,数据地址点这里,比较大,有1.7g左右,下载完成后放在catkin_ws/src目录下(究竟放哪里比较好不清楚,这里反正是可以运行的)。
d打开四个terminal运行
roscore
roslaunch svo_ros test_rig3.launch
rosrun rviz rviz -d /home/your_pc_name/catkin_ws/rpg_svo/svo_ros/rviz_config.rviz
cd ~/catkin_ws/src
rosbag play airground_rig_s3_2013-03-18_21-38-48.bag
现在应该就可以看到运行的效果了,包括跟踪的特征点和Rviz里面移动的相机,如果想看到跟踪到的特征数、fps和跟踪质量tracking quality的话,运行GUI。
若是需要用自己的摄像头运行程序,需要对相机进行标定,并修改/catkin_ws/src/rpg_svo/svo_ros/param目录下camera_atan.yaml, camera_pinhole.yaml的相机参数。或者将camera文件起一个不一样的名字,然后修改launchFile,目录为svo_ros/launch/live.launch,更改为新的标定yaml文件。最后运行roslaunch svo_ros live.launch。这个还没试,以后试过了更新。
s :start/restart
q :quit
r :reset