1. 环境准备:从零开始的Ubuntu20.04配置
大家好,我是老张,在无人机和视觉SLAM这块折腾了十多年。最近不少朋友从Ubuntu18.04升级到20.04,想在PX4的仿真环境里跑VINS-Fusion,结果一编译就各种报错,头都大了。我自己也踩了一遍坑,发现核心问题就出在系统版本升级带来的“连锁反应”:C++标准、OpenCV版本、依赖库全都变了。这篇文章,我就手把手带你走一遍在Ubuntu20.04下,让PX4和VINS-Fusion这对“老搭档”重新和谐共处的全过程。整个过程就像给老房子换新地基,得一步步来,急不得。
我们的目标很明确:在Ubuntu20.04系统上,基于TXDrone(或XTDrone)这套优秀的仿真框架,成功编译并运行VINS-Fusion,最终在Gazebo仿真中让无人机用上视觉惯性里程计。你别看最终效果就是无人机飞起来,背后从系统配置、代码修改到仿真调试,每一步都可能遇到“拦路虎”。我会把每个坑在哪里、怎么填都讲清楚。你需要准备的就是一台安装了Ubuntu20.04的电脑,最好有8G以上内存,以及一颗不怕报错的心。咱们不搞那些虚的理论,直接上实战。
首先,你得把基础的系统环境搭好。Ubuntu20.04默认的ROS版本是Noetic,这和18.04用的Melodic不一样。所以第一步,请确保你已经正确安装了ROS Noetic。如果还没装,去ROS官网照着教程安装就行,记得把ros-noetic-desktop-full这个包装上。安装好后,初始化rosdep并设置好环境变量,这些是基础操作,我就不赘述了。接下来,我们需要一个工作空间。我习惯在home目录下创建catkin_ws,你也一样操作就行:
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/
catkin_make
source devel/setup.bash
记得把最后这行source命令加到你的~/.bashrc文件末尾,这样每次开终端都不用再手动source了。基础ROS环境搞定后,我们就要开始处理最棘手的部分:安装和适配VINS-Fusion所需的各种依赖。这些依赖的版本兼容性是成功的关键。
1.1 安装核心依赖:Ceres Solver的“正确打开方式”
VINS-Fusion后端优化严重依赖Ceres Solver这个库。在Ubuntu18.04时代,我们常用的是Ceres 1.14.x版本,它默认用C++11编译。但到了Ubuntu20.04,软件源里默认的或者我们容易安装到的最新稳定版往往是Ceres 2.x(比如2.2.0)。这个版本有个重大变化:它要求使用C++14标准进行编译。这就是第一个版本冲突的源头。
我强烈建议你从源码编译安装Ceres,而不是直接用apt-get安装。这样我们能更好地控制版本和编译选项。首先,安装Ceres所需的所有依赖库。打开终端,一条命令搞定:
sudo apt-get install -y cmake libgoogle-glog-dev libgflags-dev libatlas-base-dev libeigen3-dev libsuitesparse-dev
这里libeigen3-dev非常重要,Eigen是Ceres的基石。安装完依赖,我们去Ceres的GitHub发布页面下载源码包。我实测用2.2.0版本是可以的,你也可以尝试更新的版本。假设我们下载了ceres-solver-2.2.0.tar.gz,把它放在~/Downloads目录下,然后执行以下步骤编译安装:
cd ~/Downloads
tar zxf ceres-solver-2.2.0.tar.gz
mkdir ceres-build && cd ceres-build
cmake ../ceres-solver-2.2.0
make -j$(nproc) # 使用你CPU的所有核心加速编译
sudo make install
编译过程可能会花几分钟,耐心等待。sudo make install会把Ceres库文件安装到系统目录(通常是/usr/local/lib和/usr/local/include)。安装完成后,你可以用pkg-

1604

被折叠的 条评论
为什么被折叠?



