第二章:开发环境搭建——Ubuntu系统安装与配置、ROS Noetic安装、Gazebo与Rviz安装、工作空间创建与配置
说实话,很多朋友在仿真里跑得飞起,一到真机就翻车。原因往往不是算法不行,而是环境没搭对。我见过太多人卡在第一步——系统装好了,ROS死活起不来,或者Gazebo和Rviz版本对不上。嗯,这一章咱们就把地基打牢。
核心要点:开发环境是仿真迁移到真机的“操作系统级底座”。Ubuntu 20.04 + ROS Noetic 是目前最稳定的组合,没有之一。
2.1 Ubuntu 20.04 系统安装与配置
我个人习惯用 Ubuntu 20.04 LTS。为什么?因为 ROS Noetic 官方只支持它。你想想看,用 Ubuntu 22.04 装 Noetic 得折腾多少第三方源?没必要。
2.1.1 系统安装要点
- 镜像下载:去 Ubuntu 官网下载 20.04.6 LTS 桌面版。别下服务器版,没图形界面后面调试麻烦。
- 磁盘分区:我建议至少给 Ubuntu 留 80GB 空间。如果你要做真机建图、存 bag 文件,200GB 都不嫌多。
- 安装选项:“正常安装”即可,别选“最小安装”,不然缺一堆驱动和工具。
我的小技巧:安装时勾选“为图形或无线硬件安装第三方软件”。NVIDIA 显卡驱动、Wi-Fi 固件一次搞定,省得后面折腾。
2.1.2 系统基础配置
装完系统第一件事,换源。我曾经用默认源装 ROS,下载速度 20KB/s,等了两个小时……后来学乖了:
# 备份原源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
# 替换为清华源(用 sed 一键替换)
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
注意:换源后如果提示 GPG 错误,执行 sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 对应KEY 即可。
2.2 ROS Noetic 安装
ROS 版本选 Noetic,因为它是 ROS1 的最后一个长期支持版,2025 年才停止维护。说白了,现在学 ROS1,Noetic 是唯一选择。
2.2.1 安装步骤
- 添加 ROS 源:
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
- 添加密钥:
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
- 安装完整桌面版:
sudo apt update
sudo apt install ros-noetic-desktop-full -y
为什么选 desktop-full?因为它包含了 ROS、Gazebo、Rviz、导航库、SLAM 工具包等。我刚开始学 ROS 时只装了基础版,结果后面每用到一个包就要手动编译,烦死了。一步到位最省心。
2.2.2 环境变量配置
安装完 ROS,每次打开终端都要 source 一下,太麻烦。我习惯直接写进 .bashrc:
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
验证一下:
roscore
# 如果看到 "started core service [/rosout]",说明 ROS 安装成功
避坑指南:我曾经在虚拟机里装 ROS,roscore 启动后经常报“网络配置错误”。后来发现是虚拟机网络模式没设对。建议用“桥接模式”,别用 NAT。
2.3 Gazebo 与 Rviz 安装
Gazebo 是仿真环境,Rviz 是可视化工具。这两个是仿真迁移到真机的“眼睛”和“手”。
2.3.1 Gazebo 安装
如果你装了 ros-noetic-desktop-full,Gazebo 已经自带了。验证一下:
gazebo --version
# 应该显示 Gazebo 9.x 或 11.x
如果没装,单独安装也很简单:
sudo apt install ros-noetic-gazebo-ros-pkgs ros-noetic-gazebo-ros-control -y
注意:Gazebo 启动时如果报错“VMware: vmw_ioctl failed”,是因为虚拟机 3D 加速问题。在虚拟机设置里启用“加速 3D 图形”即可。真机一般没这个问题。
2.3.2 Rviz 安装
同样,desktop-full 已包含 Rviz。启动测试:
rviz
# 如果看到 Rviz 界面,说明安装成功
我个人习惯把 Rviz 配置保存下来。比如做激光雷达可视化时,调好 Fixed Frame、添加 LaserScan 显示,然后 File -> Save Config As。下次直接加载,不用重新配置。
2.4 工作空间创建与配置
工作空间是 ROS 项目的“容器”。说白了,你的所有代码、包、配置文件都放在这里。
2.4.1 创建工作空间
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace
初始化后,你会看到 src 目录下多了一个 CMakeLists.txt。这是 catkin 编译系统的入口文件。
2.4.2 编译工作空间
cd ~/catkin_ws
catkin_make
第一次编译会生成 build 和 devel 目录。编译成功后,source 一下:
source devel/setup.bash
同样,我建议把这个 source 命令也写进 .bashrc:
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
我的经验:如果你有多个工作空间,比如一个用于仿真、一个用于真机,可以在 .bashrc 里用别名切换:
alias sim_ws="source ~/sim_ws/devel/setup.bash"
alias real_ws="source ~/real_ws/devel/setup.bash"
这样在终端里输入 sim_ws 就切换到仿真工作空间,方便得很。
2.4.3 工作空间结构说明
| 目录 | 作用 |
|---|---|
| src | 存放 ROS 包源码,每个包一个文件夹 |
| build | 编译中间文件,一般不用手动管 |
| devel | 编译产物,包含可执行文件、库、环境脚本 |
2.5 本章知识体系图
下面这张图帮你理清开发环境搭建的完整流程:
2.6 常见问题与避坑
- 问题:roscore 启动后报“Unable to contact my own server”。
解决:检查/etc/hosts文件,确保 127.0.0.1 映射到你的主机名。 - 问题:Gazebo 启动黑屏或卡死。
解决:关闭硬件加速,或者用export SVGA_VGPU10=0临时禁用。 - 问题:catkin_make 编译报错找不到某个包。
解决:先sudo apt install ros-noetic-包名,再重新编译。
重要提醒:如果你是在虚拟机里做开发,建议给虚拟机分配至少 4GB 内存和 2 个 CPU 核心。Gazebo 和 Rviz 同时运行时,资源占用很高。我曾经用 2GB 内存跑,Gazebo 直接崩溃……
好了,环境搭好了,下一章咱们就开始写第一个 ROS 节点。记住:环境搭得好,后面少烦恼。有问题随时翻回这一章。