一、安装依赖
1.部署VINS-Fusion的电脑上应该具备Ubuntu16.04以上的系统并安装了ROS
2.如在实机上执行需要安装你所使用的相机及飞控的相关驱动(由于我们使用的是模拟器,因此这部分不用管)
3.安装OpenCV(可以先不安装,用ROS里面自带的也能运行)
4.安装Glog
1- 解压3rd_party文件夹
2- 进入glog文件夹打开终端
3- ./autogen.sh && ./configure && make && sudo make install
4- sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3
libgflags-dev libgoogle-glog-dev libgtest-dev
5.安装Ceres及dynamic
1- 回到3rd_party文件夹后找到名为“ceresXXXXXX”的文件夹
2- mkdir build
3- cd build
4- cmake ..
5- sudo make -j4
6- sudo make install
7- sudo apt-get install ros-noetic-ddynamic-reconfigure
二、编译功能包
1.之前给大家发的官方框架(23年)里面有仿真飞机的模拟器的相关文件,由于我们需要在模拟器中运行,所以要在官方框架下 放置我所提供的功能包(VINS-Fusion)
2.编译(由于是多线程在编译,因此会有互斥现象出现,多编译几次即可)
1- catkin_make
2- source devel/setup.bash
三、启动
1、需要启动你的飞控获得IMU数据、启动相机获得图像信息,由于我们是在模拟器上执行,因此只需要启动模拟器即可,启动模 拟器的方法查看模拟器处的Readme
2、启动
roslaunch vins fast_drone_250.launch
3、打开Rviz查看可视化效果
roslaunch vins rviz.launch
四、标定及回环检测
1、来到这一步相信你已经打开了VINS-Fusion,假如你有通过键盘控制去移动飞机,相信你会发现它出来的定位飘得乱七八糟, 这是因为你尚未将相机的内参以及相对IMU的外参投喂进去
2、如何进行内参的标定呢?通过相关话题(/airsim_node/drone_1/bottom_center/Scene/camera_info)我们可以获得相机的内参
- 进入VINS-Fusion的功能包
- cd /config
- 把其中的K矩阵中的fx,fy,cx,cy填入 left.yaml 和 right.yaml
另外可以根据给出的相机信息(前视双目相机:位于机体中心向前 260mm 的位置,双目基线 95mm。相机输出 RGB 图像大小均 为 640*480,FOV 为 90°,无畸变。)来确定内参。(作者尚未考证是否正确)
3、进行外参标定
- 在home目录创建 vins_output 文件夹(需要修改fast_drone_250.yaml内的vins_out_path为你实际创建的文件夹的绝对路径)
- 修改 fast-drone-250.yaml 的 body_T_cam0 和 body_T_cam1 的 data 矩阵的第四列为你的无人机上的相机相对于飞控的实际外参,单位为米,顺序为x/y/z,第四项是1,不用改
- 启动VINS-Fusion并控制飞机移动,这个过程中它会对外参进行优化,在移动一段距离后关掉VINS-Fusion
- 把 vins_output/extrinsic_parameter.txt 里的内容替换到 fast-drone-250.yaml的body_T_cam0 和 body_T_cam1
- 复上述操作直到走几圈后VINS的里程计数据偏差收敛到满意值
3、里程计是存在误差的,其实是需要GPS或回环检测来进行误差修正的。简单地说,回环检测就是无人机看到与之前相同的画面 的时候对自身的定位进行校正
五、实机启动
实机上去查看VINS-Fusion的运行效果的话需要额外的安装飞控的驱动以及深度相机的驱动,这里的安装步骤以及教程后续会另写一篇为大家介绍。
首先给机载电脑上电,电池电压不能小于22v,电池使用的是6S电池(电池上有标写),电池电压小于22v就需要充电了。电池的电量可以通过使用验电器来查看,验电器的使用方法如图所示。
上电之后按下“DEL”键进入BIOS界面,按ESC退出后即可进入系统。
机载电脑上有一个名为“WK23”的文件夹,这里面包含了已经安装好的相机驱动文件以及VINS-Fusion的源码,我把所有的启动代码都存放在这个名为“eightflight.sh”的脚本文件下了,大家运行该文件即可在实机看到VINS-Fusion运行效果
source devel/setup.bash
sh shfiles/eightflight.sh //包含了需要启动VINS-Fusion的所有必须项,启动后需要快速输入机载电脑密码