环境搭建(上):Ubuntu系统安装、基础开发工具链配置

做SITL仿真联调,第一步就是把环境搭好。这一步要是没弄利索,后面全是坑。我自己带团队的时候,见过太多人卡在环境问题上,一卡就是半天。

说白了,环境搭建就两件事:装系统、配工具。咱们这一章先把Ubuntu搞定,再把Git、CMake、Python3这几个吃饭的家伙装上。

本章核心目标:在一台干净的机器上,搭建一个能跑SITL仿真的Ubuntu开发环境。完成后你会有:一个稳定的Ubuntu系统 + 版本控制工具 + 构建系统 + Python运行环境。

2.1 Ubuntu系统安装——选对版本很重要

Ubuntu版本那么多,选哪个?我个人习惯用Ubuntu 20.04 LTS。为什么?

  • 稳定:LTS版本有5年支持,不会突然出幺蛾子
  • 兼容性好:PX4、ArduPilot这些主流飞控固件,官方测试最多的就是20.04
  • 社区资源多:遇到问题,网上随便一搜就有答案

你可能会问:22.04都出了,为啥不用新的?我在项目里踩过这个坑。22.04的Python默认是3.10,有些老版本的仿真工具链还没完全适配。你想想看,为了追新版本,结果工具跑不起来,多耽误事。

Ubuntu版本 推荐度 理由
20.04 LTS 强烈推荐 官方首选,生态最成熟
22.04 LTS 可用 需要手动处理Python版本兼容
18.04 LTS 不推荐 部分新工具已停止支持

2.2 安装方式选择

安装Ubuntu有三种主流方式。我按推荐顺序排一下:

  1. 双系统(最推荐)—— 性能最好,没有虚拟化损耗
  2. 虚拟机(VMware/VirtualBox)—— 适合尝鲜,但仿真性能会打折扣
  3. WSL2(Windows子系统)—— 轻量,但图形界面和USB设备支持有限

我的建议:如果你手头有台闲置机器,或者硬盘空间够用,直接上双系统。做SITL仿真时,Gazebo、QGroundControl这些图形工具对性能要求不低。虚拟机跑起来,帧率能掉一半。

2.3 安装后的基础配置

系统装好之后,别急着装工具。先把这几件事做了:

  • 换源:把apt源换成国内镜像,不然下载能急死人
  • 更新系统:sudo apt update && sudo apt upgrade -y
  • 安装SSH:方便远程连接,sudo apt install openssh-server
# 换源示例(清华源)
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 update,否则新源不生效。我曾经有一次忘了这步,折腾了半天才发现包没装上。

2.4 基础开发工具链安装

好,系统准备好了。现在开始装工具。这三个东西是SITL开发的基石:

2.4.1 Git——版本控制不能少

做仿真开发,代码改来改去是常态。没有Git,你都不敢改代码。

sudo apt install git -y
# 配置基本信息
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
# 验证安装
git --version

配置完可以加个--global,这样所有仓库都共用这套配置。我个人习惯把用户名和邮箱设成和GitHub一致,省得后面推送时还要改。

2.4.2 CMake——构建系统的管家

CMake负责管理整个项目的编译过程。PX4、ArduPilot这些大型项目,底层都是用CMake组织的。

sudo apt install cmake -y
# 验证版本
cmake --version

嗯,这里要注意:Ubuntu 20.04自带的CMake版本是3.16,够用。但如果你需要最新特性,可以手动编译安装。不过我个人建议先用系统自带的,等遇到具体需求再升级。

2.4.3 Python3——仿真脚本的灵魂

SITL里大量的工具脚本、测试脚本都是用Python写的。Ubuntu 20.04自带Python 3.8,够用。

# 检查是否已安装
python3 --version
# 安装pip和虚拟环境工具
sudo apt install python3-pip python3-venv -y
# 升级pip
pip3 install --upgrade pip

避坑指南:千万不要用 sudo pip install 直接装全局包。我曾经这么干过,结果把系统Python环境搞乱了,重装了系统。一定要用虚拟环境(venv)隔离项目依赖。

2.5 验证工具链

装完了,怎么知道对不对?写个简单的验证脚本:

# 创建一个测试目录
mkdir ~/sitl_test && cd ~/sitl_test

# 初始化Git仓库
git init

# 创建一个CMake项目
cat > CMakeLists.txt << EOF
cmake_minimum_required(VERSION 3.10)
project(HelloSITL)
add_executable(hello hello.cpp)
EOF

# 创建一个简单的C++文件
cat > hello.cpp << EOF
#include <iostream>
int main() {
    std::cout << "SITL环境搭建成功!" << std::endl;
    return 0;
}
EOF

# 编译
mkdir build && cd build
cmake ..
make
./hello

如果看到输出SITL环境搭建成功!,说明你的工具链已经跑通了。

2.6 本章知识体系总览

下面这张图把本章的核心逻辑串起来了。你可以把它当成一张地图,随时回来对照:

环境搭建(上)知识体系 搭建SITL仿真开发环境 Ubuntu系统安装 基础开发工具链 版本选择(20.04 LTS) 安装方式(双系统/虚拟机/WSL2) Git CMake Python3 基础配置:换源 → 系统更新 → SSH → 工具安装 验证:Git + CMake + Python3 联调测试 💡 提示:环境搭建是SITL仿真的地基,每一步都要确认无误再往下走 后续章节将基于此环境安装PX4、ArduPilot飞控固件和Gazebo仿真器

2.7 常见问题与避坑

最后,分享几个我实际遇到过的问题:

  • Git推送失败:多半是SSH密钥没配好。运行ssh-keygen -t rsa -b 4096生成密钥,然后把公钥加到GitHub上
  • CMake找不到包:检查CMAKE_PREFIX_PATH环境变量有没有设置对
  • Python模块冲突:永远用虚拟环境。创建命令:python3 -m venv myenv

重要提醒:如果你用的是虚拟机,记得给虚拟机分配至少4GB内存和2个CPU核心。不然跑Gazebo的时候,画面会卡成PPT。我刚开始用虚拟机时只给了2GB,结果Gazebo启动要5分钟,直接劝退。