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以上可以不给
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_make和catkin build有什么区别?前者是传统方式,后者是catkin_tools提供的并行编译。我建议新手先用catkin_make,等熟悉了再换catkin build——它编译更快,但调试时信息不如前者直观。
3.4 rviz与rqt工具介绍:SLAM调试的左右手
rviz和rqt,说白了就是ROS的「眼睛」和「手」。rviz看数据,rqt调参数。我在做激光SLAM时,这两个工具几乎从不离手。
rviz:三维可视化利器
启动命令:rviz 或 rosrun rviz rviz
常用显示类型:
| 显示类型 | 用途 | SLAM场景 |
|---|---|---|
| LaserScan | 显示激光雷达点云 | 查看雷达数据是否正常 |
| Map | 显示栅格地图 | 建图结果可视化 |
| TF | 显示坐标变换树 | 检查机器人各部件坐标关系 |
| Path | 显示轨迹 | 查看机器人运动路径 |
我记得第一次用rviz看激光雷达数据时,满屏都是乱飞的噪点。后来才发现是雷达的坐标系没对齐。在rviz里把Fixed Frame改成laser,瞬间就清晰了。嗯,这种坑踩过一次就记住了。
rqt:图形化调试面板
启动命令:rqt 或 rosrun rqt_gui rqt_gui
常用插件:
- rqt_graph:查看节点通信关系图,排查话题是否连通
- rqt_plot:实时绘制数据曲线,比如里程计误差
- rqt_reconfigure:动态调整参数,不用重启节点
- rqt_bag:回放rosbag数据,离线调试利器
实战技巧: 做SLAM调试时,我通常开三个窗口:一个rviz看地图和轨迹,一个rqt_plot看里程计误差曲线,一个终端跑节点。这样任何异常都能第一时间发现。
3.5 知识体系总览
下面这张图帮你理清本章的核心逻辑。从系统层到工具层,每一步都是下一层的基础。
从下往上看:系统装好了,ROS才能跑;ROS跑起来了,才能建工作空间;工作空间建好了,rviz和rqt才能派上用场。每一步都踩实了,后面做SLAM才不会手忙脚乱。
📌 最后提醒一句: 装完环境后,建议立刻跑一个roscore测试。如果终端能正常启动ROS Master,说明环境没问题。我曾经帮一个学员远程调试,他装了两天,结果只是忘了source环境变量——这种低级错误,咱们就别犯了。
公众号:蓝海资料掘金营,微信deep3321