步骤
1.下载并安装MYNT-EYE-S-SDK;
2.安装依赖项,并遵循原始OKVIS的过程构建MYNT-EYE-OKVIS-Sample;
3.将相机参数更新到~/MYNT-EYE-OKVIS-Sample/config/config_mynteye.yaml
;
4.使用mynteye camaera运行okvis。
安装 MYNTEYE OKVIS
安装依赖
- CMake
sudo apt-get install cmake
- google-glog + gflags
sudo apt-get install libgoogle-glog-dev
- BLAS & LAPACK
sudo apt-get install libatlas-base-dev
- Eigen3
sudo apt-get install libeigen3-dev
- SuiteSparse and CXSparse
sudo apt-get install libsuitesparse-dev
- Boost
sudo apt-get install libboost-dev libboost-filesystem-dev
- OpenCV 2.4–3.0: follow the instructions on http://opencv.org/ or install via
sudo apt-get install libopencv-dev
编译MYNTEYE OKVIS
git clone -b mynteye-s https://github.com/slightech/MYNT-EYE-OKVIS-Sample.git
cd MYNT-EYE-OKVIS-Sample/
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j4
获取相机标定参数
通过 MYNT-EYE-S-SDK API 的 GetIntrinsics() 和 GetExtrinsics() 函数,您可以获得当前打开设备的标定参数,按照步骤操作:
cd MYNT-EYE-S-SDK
./samples/_output/bin/tutorials/get_img_params
运行上述命令后,获取了相机的内参和畸变系数,然后按照以下格式更新到~/MYNT-EYE-OKVIS-Sample/config/config_mynteye.yaml
。应该注意,只需要在 distortion_coefficients 中填充 coeffs 的前四个参数。
distortion_coefficients: [coeffs]
focal_length: [fx, fy]
principal_point: [cx, cy]
distortion_type: radialtangential
注意:这里只获取了相机的标定参数,因为OKVIS是融合视觉和IMU的SLAM系统,所以还需要获取IMU的参数和相机相对于IMU的位姿,需要使用HEALTH WARNING: calibration
中的Kalibr工具。
运行MYNTEYE OKVIS
cd MYNT-EYE-OKVIS-Sample/build
./okvis_app_mynteye_s ../config/config_mynteye.yaml
这里,可能会报以下错误:
./okvis_app_mynteye_s: error while loading shared libraries: libmynteye.so.2: cannot open shared object file: No such file or directory
解决方法:找到 libmynteye.so.2 的路径,并建立链接。
find / -name libmynteye.so.2
输出:
/home/wb/MYNT-EYE-S-SDK/_output/lib/libmynteye.so.2
打开/etc/ld.so.conf
,添加/home/wb/MYNT-EYE-S-SDK/_output/lib
,然后保存。
cd /etc/
sudo ldconfig
运行截图
因为我还没有用kalibr标定我的小觅相机,所以直接用的Github上的config_mynteye.yaml
,实测效果非常差。
现象:
- 即时相机静止,图像也会抖动,甚至缺失
- 相机静止,轨迹漂移严重
小觅智能 SLAM 技术总监周平在深蓝学院的公开课中展示了使用小觅相机运行OKVIS的视频,效果还是不错的,所以最好用Kalibr标定小觅相机后,再运行OKVIS,才可能得到良好的效果。
HEALTH WARNING: calibration
如果您想在自己的硬件设置上运行软件/库,请注意只有通过适当的校准才能获得良好的结果(或结果)。
- 相机内参
- 相机外参(相对于IMU的位姿)
- IMU噪声参数
- 所有传感器的准确时间同步
要自己进行校准,我们建议如下:
- 按照 https://github.com/ethz-asl/kalibr/wiki/installation 中的说明安装Kalibr。如果您决定从源代码构建并运行ROS indigo,请checkout pull请求3:
git fetch origin pull/3/head:request3
git checkout request3
- 按照 https://github.com/ethz-asl/kalibr/wiki/multiple-camera-calibration 来校准相机的内参和外参。如果您收到错误消息,表明该工具无法对焦距进行初始猜测,请确保您的录制数据集包含具有整个校准目标的帧。
- 按照 https://github.com/ethz-asl/kalibr/wiki/camera-imu-calibration 获取相机相对于IMU的空间参数的估计值。