3. ROS环境搭建与工具链:Ubuntu系统安装,ROS Noetic安装,catkin工作空间创建,rviz与rqt工具介绍

说实话,每次带新人入门SLAM,我最怕的就是环境搭建这一步。不是技术难,而是坑太多。我自己当年刚接触ROS时,光装系统就折腾了两天——装完发现版本不对,又重来。嗯,今天咱们就把这事一次性捋清楚。

3.1 Ubuntu系统安装:选对版本,少走弯路

ROS Noetic官方只支持Ubuntu 20.04 LTS。别问我为什么不用18.04或者22.04,我试过,要么依赖包冲突,要么某些功能包编译不过。说白了,老老实实装20.04是最省心的。

安装要点:

  • 下载Ubuntu 20.04.6 LTS桌面版镜像(别下服务器版,没图形界面)
  • 制作启动U盘时用Rufus(Windows)或balenaEtcher(macOS)
  • 分区建议:/ 分区给30-50GB,/home 分区给剩余空间
  • Swap分区:内存8GB以下给4GB,16GB以上可以不给
⚠ 避坑指南: 我曾经在双系统安装时忘了关闭Windows的快速启动,结果Ubuntu挂载NTFS分区时直接只读。进BIOS关掉Fast Boot,能省你一小时。

3.2 ROS Noetic安装:一条命令搞定?没那么简单

官方教程说一行命令就能装完,但实际项目中你会发现,装完只是开始。我建议按这个顺序来:

# 1. 设置sources.list
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

# 2. 添加密钥
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

# 3. 更新并安装完整桌面版
sudo apt update
sudo apt install ros-noetic-desktop-full

# 4. 初始化rosdep
sudo rosdep init
rosdep update

# 5. 设置环境变量
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc

# 6. 安装构建工具
sudo apt install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential

核心知识点:

  • ros-noetic-desktop-full 包含所有核心工具、仿真器、可视化工具
  • rosdep 用于自动解决依赖,每次新工作空间都要跑一次
  • 环境变量必须写到 ~/.bashrc,否则每次开终端都要手动source

你可能会问:为什么不用apt直接装?其实可以,但desktop-full版本包含了rviz、rqt、gazebo这些我们后面做SLAM仿真必备的工具。我建议一步到位。

3.3 catkin工作空间创建:你的第一个ROS项目

catkin是ROS的构建系统。说白了,它帮你管理代码编译、依赖查找、消息生成这些杂事。我个人习惯把所有项目都放在~/catkin_ws下。

# 创建工作空间
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws

# 初始化(只做一次)
catkin_init_workspace src

# 编译(第一次编译会生成CMakeLists.txt的链接)
cd ~/catkin_ws
catkin_make

# 设置工作空间环境变量
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc

💡 我的习惯: 每次新建工作空间后,我会先跑一次catkin_make确认环境没问题。如果报错,90%是依赖没装全。用rosdep install --from-paths src --ignore-src -r -y一键解决。

这里有个细节:catkin_makecatkin build有什么区别?前者是传统方式,后者是catkin_tools提供的并行编译。我建议新手先用catkin_make,等熟悉了再换catkin build——它编译更快,但调试时信息不如前者直观。

3.4 rviz与rqt工具介绍:SLAM调试的左右手

rviz和rqt,说白了就是ROS的「眼睛」和「手」。rviz看数据,rqt调参数。我在做激光SLAM时,这两个工具几乎从不离手。

rviz:三维可视化利器

启动命令:rvizrosrun rviz rviz

常用显示类型:

显示类型 用途 SLAM场景
LaserScan 显示激光雷达点云 查看雷达数据是否正常
Map 显示栅格地图 建图结果可视化
TF 显示坐标变换树 检查机器人各部件坐标关系
Path 显示轨迹 查看机器人运动路径

我记得第一次用rviz看激光雷达数据时,满屏都是乱飞的噪点。后来才发现是雷达的坐标系没对齐。在rviz里把Fixed Frame改成laser,瞬间就清晰了。嗯,这种坑踩过一次就记住了。

rqt:图形化调试面板

启动命令:rqtrosrun rqt_gui rqt_gui

常用插件:

  • rqt_graph:查看节点通信关系图,排查话题是否连通
  • rqt_plot:实时绘制数据曲线,比如里程计误差
  • rqt_reconfigure:动态调整参数,不用重启节点
  • rqt_bag:回放rosbag数据,离线调试利器

实战技巧: 做SLAM调试时,我通常开三个窗口:一个rviz看地图和轨迹,一个rqt_plot看里程计误差曲线,一个终端跑节点。这样任何异常都能第一时间发现。

3.5 知识体系总览

下面这张图帮你理清本章的核心逻辑。从系统层到工具层,每一步都是下一层的基础。

ROS环境搭建与工具链知识体系 系统层:Ubuntu 20.04 LTS 双系统安装 / 分区规划 / 驱动配置 中间件层:ROS Noetic desktop-full安装 / rosdep初始化 / 环境变量配置 构建层:catkin工作空间 catkin_make编译 / 包管理 / 依赖解析 工具层:rviz + rqt 三维可视化 / 参数调试 / 数据回放 / 节点监控

从下往上看:系统装好了,ROS才能跑;ROS跑起来了,才能建工作空间;工作空间建好了,rviz和rqt才能派上用场。每一步都踩实了,后面做SLAM才不会手忙脚乱。

📌 最后提醒一句: 装完环境后,建议立刻跑一个roscore测试。如果终端能正常启动ROS Master,说明环境没问题。我曾经帮一个学员远程调试,他装了两天,结果只是忘了source环境变量——这种低级错误,咱们就别犯了。


公众号:蓝海资料掘金营,微信deep3321