3. 基础环境搭建:Ubuntu系统安装与配置、ROS/ROS2安装、依赖库安装

做飞控算法仿真,第一步就是把“厨房”搭好。我见过不少同学,算法写得挺漂亮,结果环境配了一周还没跑起来——嗯,这种挫败感我太懂了。今天咱们就把这套流程捋顺,保证你照着做,半天之内就能把基础环境跑通。

3.1 Ubuntu系统安装与配置

我个人习惯用 Ubuntu 20.04 LTS22.04 LTS。为什么?因为ROS和ROS2对这两个版本支持最好。你想想看,如果选了个冷门版本,装个依赖库都要自己编译,那多折腾。

3.1.1 系统安装要点

  • 磁盘分区:建议至少给Ubuntu留80GB空间。我刚开始做仿真时只分了40GB,结果装了几个数据集就满了,后来还得重新分区,麻烦得很。
  • 交换分区:如果你的内存小于16GB,建议设置8GB左右的交换分区。编译大型项目时,内存不够会直接卡死。
  • 网络配置:安装时连上网络,这样系统会自动下载语言包和驱动。省心。

3.1.2 系统配置优化

装好系统后,别急着装ROS。先把系统源换成国内的,比如清华源或阿里源。为什么呢?因为默认源在国外,下载速度慢得让人抓狂。

# 备份原源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

# 替换为清华源(Ubuntu 20.04为例)
sudo sed -i 's/archive.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list
sudo sed -i 's/security.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list

# 更新
sudo apt update && sudo apt upgrade -y
我的小技巧:更新完系统后,顺手装个 vimgitcurl 这些基础工具。后面编译代码、下载依赖都会用到。

3.2 ROS/ROS2安装

这里有个选择问题:用ROS1还是ROS2?我的建议是——新项目直接用ROS2。ROS1虽然生态成熟,但官方已经宣布2025年停止维护了。你想想看,学一个即将被淘汰的东西,多不划算。

3.2.1 ROS2安装步骤(以Humble为例)

ROS2的安装其实很简单,但有几个坑要注意。我曾经在安装时忘了设置locale,结果编译时一堆乱码报错,查了半天才发现是编码问题。

# 1. 设置locale
sudo apt update && sudo apt install locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8

# 2. 添加ROS2源
sudo apt install software-properties-common
sudo add-apt-repository universe
sudo apt update && sudo apt install curl -y
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

# 3. 安装ROS2
sudo apt update
sudo apt install ros-humble-desktop -y

# 4. 设置环境变量
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc
注意:如果你用的是Ubuntu 22.04,ROS2 Humble是最佳选择。如果是20.04,建议用Galactic或Foxy。别混着用,否则依赖冲突会让你怀疑人生。

3.2.2 验证安装

装完之后,跑个小例子验证一下。我最喜欢用 talker-listener 这个经典例子,简单直观。

# 终端1:启动talker
ros2 run demo_nodes_cpp talker

# 终端2:启动listener
ros2 run demo_nodes_py listener

如果能看到“I heard: Hello World”这样的输出,说明ROS2已经跑起来了。嗯,到这里,你的仿真环境就有了“通信骨架”。

3.3 依赖库安装

飞控算法仿真离不开几个核心库。说白了,这些库就是你的“工具箱”。我整理了一个清单,你照着装就行。

库名 用途 安装命令
Eigen3 线性代数运算(矩阵、向量) sudo apt install libeigen3-dev
Gazebo 物理仿真环境 sudo apt install gazebo11
PCL 点云处理 sudo apt install libpcl-dev
OpenCV 图像处理 sudo apt install libopencv-dev
yaml-cpp 配置文件解析 sudo apt install libyaml-cpp-dev
Boost C++基础库(线程、文件系统等) sudo apt install libboost-all-dev
避坑指南:我曾经在装Eigen3时,直接从GitHub拉源码编译,结果版本不对导致编译报错。后来发现直接用apt安装就没事。所以,能用apt就别自己编译,省时间。

3.4 环境验证:跑一个简单的飞控仿真

环境搭好了,总得跑个东西验证一下吧?我习惯用 PX4-Autopilot 的仿真来测试。虽然咱们后面会详细讲,但这里先让你感受一下。

# 克隆PX4代码
git clone https://github.com/PX4/PX4-Autopilot.git --recursive
cd PX4-Autopilot

# 编译
make px4_sitl gazebo

如果编译成功,你会看到Gazebo界面弹出来,一架无人机出现在场景中。嗯,看到那个画面,你就知道——环境搭好了,可以开始搞算法了。

3.5 本章知识体系

下面这张图,是我自己总结的“环境搭建全景图”。你照着这个逻辑走,就不会乱。

飞控算法仿真环境搭建流程 Ubuntu系统 20.04/22.04 LTS ROS/ROS2 Humble/Galactic 依赖库 Eigen/Gazebo等 依赖库详解 • Eigen3:矩阵运算、四元数、姿态解算 • Gazebo:物理仿真、传感器模拟、3D场景 • PCL:点云处理、障碍物检测 • OpenCV:图像处理、视觉SLAM • yaml-cpp:参数配置、飞行参数管理 提示:按顺序安装,每装完一步验证一下,别一口气装完再查错

这张图其实就三件事:系统 → 中间件 → 依赖库。你按这个顺序走,每一步都验证一下,基本不会出大问题。

我的经验:环境搭建最忌讳“一口气装完”。我见过太多人把所有东西装完,然后编译报错,根本不知道是哪个环节出了问题。正确的做法是:装一步,验证一步。比如装完ROS2,先跑个talker-listener;装完Gazebo,先打开看看能不能加载模型。这样出了问题,你马上就知道是哪里卡住了。

好了,环境搭好了,咱们就可以开始搞真正的飞控算法了。下一章,我会带你搭建一个完整的仿真工作流,从代码编写到仿真验证,一条龙走通。


专注资料整理