第二章:开发环境搭建——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 安装步骤

  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'
  1. 添加密钥:
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
  1. 安装完整桌面版:
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 本章知识体系图

下面这张图帮你理清开发环境搭建的完整流程:

开发环境搭建知识体系 Ubuntu 20.04 系统 系统安装 → 换源 → 基础配置(驱动、网络、权限) ROS Noetic 安装 添加源 → 安装 desktop-full → 配置环境变量 → 验证 roscore 仿真与可视化工具 Gazebo(仿真环境) + Rviz(数据可视化) 工作空间创建与配置 mkdir → catkin_init_workspace → catkin_make → source

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 节点。记住:环境搭得好,后面少烦恼。有问题随时翻回这一章。

可可精品资料库