欢迎光临
我们一直在努力

Ubuntu安装Vins-Fusion(3) —— Ubuntu22.04,ROS2 Humble安装vins-fusion

目录

    • 前言
  • 1、准备
    • 1.1 安装ROS2及依赖
    • 1.2 安装 Ceres Solver
  • 2、安装 VINS-Fusion
  • 3、测试(EuRoC MAV 数据集)
    • 3.1 数据集
    • 3.2 测试数据集
  • 参考

前言

VINS-Fusion 是一种基于优化的多传感器状态估计器,可为自主应用(无人机、汽车和 AR/VR)实现精确的自定位。它常用于无人机的自主导航和飞行控制,通过融合视觉和惯性数据实现高精度定位和导航。VINS-Fusion 是 VINS-Mono 的扩展,它支持多种视觉惯性传感器类型(单目摄像头 + IMU、双目摄像头 + IMU,只有双目摄像头)。

我的配置如下: 虚拟机 Ubuntu 22.04 (运行内存 4G、硬盘内存 50G) 、ROS2 humble 、ceres-solver 2.1

Ubuntu 安装 Vins-Fusion 系列: Ubuntu安装Vins-Fusion(1) —— Ubuntu18.04安装vins-fusion-CSDN博客 Ubuntu安装Vins-Fusion(2) —— Ubuntu20.04安装vins-fusion-CSDN博客 Ubuntu安装Vins-Fusion(3) —— Ubuntu22.04,ROS2 Humble安装vins-fusion-CSDN博客

1、准备

1.1 安装ROS2及依赖

安装 VINS-Fusion 之前必须要安装好ROS2,ROS2安装教程可以参考这篇文章👇

Ubuntu安装ROS(2) —— 安装ROS2 humble(最新、超详细图文教程,包含配置rosdep)_ros2安装-CSDN博客

sudo apt install terminator libopencv-dev -y
sudo apt install python3-pip python3-vcstool python3-rosinstall-generator python3-osrf-pycommon python3-colcon-common-extensions -y
sudo apt install ros-dev-tools -y

1.2 安装 Ceres Solver

Ceres Solver 是一个开源的 C++ 库,用于解决非线性最小二乘问题。它的自动微分、鲁棒优化算法以及高效的并行计算能力,使其成为解决复杂非线性优化问题的理想选择。它被广泛应用于计算机视觉、机器人和图像处理领域中的优化问题。

Ceres Solver 官方文档

GitHub 仓库

  • 安装依赖:

# CMake
sudo apt-get install cmake
# google-glog + gflags
sudo apt-get install libgoogle-glog-dev libgflags-dev
# Use ATLAS for BLAS & LAPACK
sudo apt-get install libatlas-base-dev
# Eigen3
sudo apt-get install libeigen3-dev
# SuiteSparse (可以安装,也可以不安装)
sudo apt-get install libsuitesparse-dev

  • 下载 Ceres Solver 源码:

wget ceres-solver.org/ceres-solver-2.1.0.tar.gz

在这里插入图片描述

  • 编译 Ceres Solver :

tar zxf ceres-solver-2.1.0.tar.gz # 解压
mkdir ceres-bin
cd ceres-bin
cmake ../ceres-solver-2.1.0

在这里插入图片描述

make -j3 # 编译 大概几分钟
# make -j 是 make 命令中用于指定并行编译任务数量的参数。通常设置为CPU 核心数或核心数的 1-2 倍(过多会资源过载)

在这里插入图片描述

make test
# 这一步必须每个 test 都通过

在这里插入图片描述

  • 安装 Ceres Solver :

# 可选择 make isntall 安装 Ceres,也可使用 CMake 导出.
# 更多信息请参阅 EXPORT_BUILD_DIR 选项的文档,有关 EXPORT_BUILD_DIR 选项的更多信息。
sudo make install

在这里插入图片描述

  • 测试:

./bin/simple_bundle_adjuster ../ceres-solver-2.1.0/data/problem-16-22106-pre.txt

测试结果:

iter cost cost_change |gradient| |step| tr_ratio tr_radius ls_iter iter_time total_time
0 4.185660e+06 0.00e+00 1.09e+08 0.00e+00 0.00e+00 1.00e+04 0 6.03e-02 1.81e-01
1 1.062590e+05 4.08e+06 8.99e+06 5.36e+02 9.82e-01 3.00e+04 1 1.17e-01 2.98e-01
2 4.992817e+04 5.63e+04 8.32e+06 3.19e+02 6.52e-01 3.09e+04 1 1.07e-01 4.05e-01
3 1.899774e+04 3.09e+04 1.60e+06 1.24e+02 9.77e-01 9.26e+04 1 2.25e-01 6.30e-01
4 1.808729e+04 9.10e+02 3.97e+05 6.39e+01 9.51e-01 2.78e+05 1 1.32e-01 7.61e-01
5 1.803399e+04 5.33e+01 1.48e+04 1.23e+01 9.99e-01 8.33e+05 1 1.12e-01 8.73e-01
6 1.803390e+04 9.02e-02 6.35e+01 8.00e-01 1.00e+00 2.50e+06 1 1.09e-01 9.83e-01

Solver Summary (v 2.1.0-eigen-(3.4.0)-lapack-suitesparse-(5.10.1)-cxsparse-(3.2.0)-eigensparse-no_openmp)

Original Reduced
Parameter blocks 22122 22122
Parameters 66462 66462
Residual blocks 83718 83718
Residuals 167436 167436

Minimizer TRUST_REGION

Dense linear algebra library EIGEN
Trust region strategy LEVENBERG_MARQUARDT

Given Used
Linear solver DENSE_SCHUR DENSE_SCHUR
Threads 1 1
Linear solver ordering AUTOMATIC 22106,16
Schur structure 2,3,9 2,3,9

Cost:
Initial 4.185660e+06
Final 1.803390e+04
Change 4.167626e+06

Minimizer iterations 7
Successful steps 7
Unsuccessful steps 0

Time (in seconds):
Preprocessor 0.120638

Residual only evaluation 0.090660 (7)
Jacobian & residual evaluation 0.469925 (7)
Linear solver 0.259471 (7)
Minimizer 0.918544

Postprocessor 0.003667
Total 1.042849

Termination: CONVERGENCE (Function tolerance reached. |cost_change|/cost: 1.769766e-09 <= 1.000000e-06)

2、安装 VINS-Fusion

由于原版 VINS-Fusion 用的是 ROS1 ,而且 Ubuntu 22.04 只支持 ROS2 ,所以原版的用不了,不过有大佬做了 ROS2 的适配,我们只需要下载他的代码即可(可能还在细节上做了一点修改,具体可以看原仓库 vins_fusion_ros2: ROS 2 adaptation of VINS-Fusion )。

  • 下载代码:

mkdir -p ~/vins_ws/src
cd ~/vins_ws/src
git clone https://github.com/yangfuyuan/vins_fusion_ros2.git # 下载源码

  • 编译

cd ~/vins_ws
colcon build # 大概要几分钟

在这里插入图片描述

3、测试(EuRoC MAV 数据集)

3.1 数据集

  • 下载数据集

点击下载地址 ,下载 MH_01_easy.bag,浏览器默认下载到 Downloads 目录。 在这里插入图片描述

  • 转换数据集格式

由于 ROS1 和 ROS2 的 bag 包格式不一样,所以要转换格式

echo "export PATH=~/.local/bin:$PATH" >> ~/.bashrc
source ~/.bashrc
pip install rosbags # 安装工具

转换:(注意文件路径,以自己的实际路径为准)

rosbags-convert –src ~/Downloads/MH_01_easy.bag –dst ~/vins_ws/bag

可以看到转换后 ROS2 的 bag 包是有两个文件的 在这里插入图片描述

3.2 测试数据集

  • Monocualr camera(单目) + IMU

终端一:

source ~/vins_ws/install/setup.bash
rviz2 -d ~/vins_ws/src/vins_fusion_ros2/config/vins_rviz_config.rviz

终端二:

source ~/vins_ws/install/setup.bash
ros2 launch vins_fusion_ros2 vins_fusion_ros2.launch.py
# 修改启动文件里面的 config 文件名字,可以测试不同的传感器组合

终端三:

ros2 bag play ~/vins_ws/bag/bag.db3

在这里插入图片描述

参考

VINS-Fusion 论文 HKUST-Aerial-Robotics/VINS-Fusion: An optimization-based multi-sensor state estimator yangfuyuan/vins_fusion_ros2: ROS 2 adaptation of VINS-Fusion Installation — Ceres Solver (ceres-solver.org)

如有其他问题,或者发现文章有错误,请在评论区留言 Keep learning!

赞(0)
未经允许不得转载:171主机测评 » Ubuntu安装Vins-Fusion(3) —— Ubuntu22.04,ROS2 Humble安装vins-fusion
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址