计算机系统应用教程网站

网站首页 > 技术文章 正文

技术分享 | 带你具体部署VINS_FUSION_GPU版本

btikc 2024-10-20 04:53:35 技术文章 7 ℃ 0 评论

前期准备工作已经完成,接下来我们就准备VINS在NX的落地。1.下载源码编译首先VINS_gpu版本需要引入OpenCV CUDA版本的加速,由于我们的NX镜像已经安装好CUDA,这里就不在赘叙,需要的自行google查找资料。下面开始安装VINS源码。mkdir -p vins_gpu/srccd vins_gpu/srcgit 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前期的参数配置工作完成后,我们就可以启动VINS3.1启动 D435i需要修改一下D435i的发布频率,建议为15HZ,这样NX上不会有较大的延迟。路径还是你自己安装realsense_ros的路径。比如我自己是安装在桌面上。roslaunch realsense2_camera rs_camera.launch //启动D435i需要查看下D435i是否发布IMU数据,这里主要是XYZ三个轴的线速度。rostopic echo /camera/imu3.2启动VINSrosrun 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.接入Prometheus4.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和Prometheusroslaunch 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中,那就开启我们的飞行之旅吧。

本文由博客一文多发平台 OpenWrite 发布!

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表