环境搭建(上):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有三种主流方式。我按推荐顺序排一下:
- 双系统(最推荐)—— 性能最好,没有虚拟化损耗
- 虚拟机(VMware/VirtualBox)—— 适合尝鲜,但仿真性能会打折扣
- 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 本章知识体系总览
下面这张图把本章的核心逻辑串起来了。你可以把它当成一张地图,随时回来对照:
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分钟,直接劝退。