技术分享 | 带你具体部署VINS_FUSION_GPU版本
前期准备工作已经完成,接下来我们就准备VINS在NX的落地。
1. 下载源码编译
首先VINS_gpu版本需要引入OpenCV CUDA版本的加速,由于我们的NX镜像已经安装好CUDA,这里就不在赘叙,需要的自行google查找资料。下面开始安装VINS源码。
mkdir -p vins_gpu/src
cd vins_gpu/src
git clone https://github.com/pjrambo/VINS-Fusion-gpu.git
下载完之后,需要更改vins_estimator/CMakeLists.txt,20行左右需要把OpenCV路径改成你自己的路径。还需要更改的有 loop_fusion/CMakeLists.txt,同样也需要更改路径。更改完之后,开始编译。
cd ..
catkin_make
如果OpenCV CUDA环境安装不对,这里就会报错。
2. 更改配置参数
注意官方提供的参数里面没有D435i的配置参数,需要自己依葫芦画瓢。
1代表打开,0表示关闭。
那我就以我配置的yaml文件为例
需要更改自己实际订阅IMU以及双目图像发布话题以及输出路径。
这里的矩阵涉及IMU和相机的相对变换。可以由之前的联合标定得到。注意左右目的顺序。
IMU的数据可以由之前的标定得到。
下面的参数意思是在线估计IMU的相机之间的时间差,虽然说Intel说D435i已经做好硬件同步,但是用Kalibr标定出来还是有0.0015左右的时间误差。
3. 启动VINS
前期的参数配置工作完成后,我们就可以启动VINS
3.1启动 D435i
需要修改一下D435i的发布频率,建议为15HZ,这样NX上不会有较大的延迟。路径还是你自己安装realsense_ros的路径。比如我自己是安装在桌面上。
roslaunch realsense2_camera rs_camera.launch //启动D435i
需要查看下D435i是否发布IMU数据,这里主要是XYZ三个轴的线速度。
rostopic echo /camera/imu
3.2启动VINS
rosrun vins vins_node +这里是你自己的D435i配置文件的路径
比如我自己是
rosrun vins vins_node
/home/amov/vins_gpu/src/VINS-Fusion-gpu-master/config/realsense/realsense1.yaml
可以显示出当前位姿信息。
roslaunch vins vins_rviz.launch //启动RVIZ
启动完之后,我们可以拿着飞机跑一圈,看看定位精度以及延时。如果没有问题我们就可以接入Prometheus。
4. 接入Prometheus
4.1在Prometheus/Modules/control/src文件夹中修改px4_pos_estimator.cpp,主要修改内容如下:
回调函数中,主要是VINS发布数据格式为YXZ,而Prometheus需要ENU,所以这里做一个变换。VINS的四元数虚部在前,这里也需要调整下。
4.2修改Amov_lab/src/P450_expriments/launch_basic 中的p450_vio_onboard.launch的启动文件。 这里主要是修改位姿数据来源,我们不再依赖T265。
4.3最后我们修改主函数里面的订阅话题
5. 启动VINS和Prometheus
roslaunch realsense2_camera rs_camera.launch
rosrun vins vins_node + (配置文件路径,即我们放D435i配置文件的路径,具体应该是在VINS 包下面)
roslaunch p230_expriments p230_vio_onboard.launch
我们查看下rqt_graph,可以看到VINS发布的位姿已经被px4_pos_estimator订阅,类似于之前的T265发布的 odom/sample,通信链路正常。
并且我们可以看到终端可以正确打印位姿数据,即代表VINS接入Prometheus成功。
至此,我们已经成功把VINS接入到Prometheus中,那就开启我们的飞行之旅吧。
阿木实验室致力于前沿IT科技的教育和智能装备,让机器人研发更高效!
公众号:阿木实验室 ( 领取免费资料包)
官方淘宝店:阿木实验室(可购买硬件配件)
硬件咨询:yanyue199506(欢迎洽谈合作)
课程咨询:jiayue199506 (免费领取机器人工程师学习计划)
- End -
技术发展的日新月异,阿木实验室将紧跟技术的脚步,不断把机器人行业最新的技术和硬件推荐给大家。看到经过我们培训的学员在技术上突飞猛进,是我们培训最大的价值。如果你在机器人行业,就请关注我们的公众号,我们将持续发布机器人行业最有价值的信息和技术。