3. 基础环境搭建:Ubuntu系统安装与配置、ROS/ROS2安装、依赖库安装
做飞控算法仿真,第一步就是把“厨房”搭好。我见过不少同学,算法写得挺漂亮,结果环境配了一周还没跑起来——嗯,这种挫败感我太懂了。今天咱们就把这套流程捋顺,保证你照着做,半天之内就能把基础环境跑通。
3.1 Ubuntu系统安装与配置
我个人习惯用 Ubuntu 20.04 LTS 或 22.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
vim、git、curl 这些基础工具。后面编译代码、下载依赖都会用到。
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
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 |
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 本章知识体系
下面这张图,是我自己总结的“环境搭建全景图”。你照着这个逻辑走,就不会乱。
这张图其实就三件事:系统 → 中间件 → 依赖库。你按这个顺序走,每一步都验证一下,基本不会出大问题。
好了,环境搭好了,咱们就可以开始搞真正的飞控算法了。下一章,我会带你搭建一个完整的仿真工作流,从代码编写到仿真验证,一条龙走通。