第2章:ROS环境搭建——Ubuntu系统安装与配置、ROS发行版选择与安装、ROS工作空间创建、ROS基础命令练习

各位同学,欢迎来到第二章。上一章我们聊了MoveIt和导航的整体框架,从这章开始,咱们要真正动手了。

ROS环境搭建,说白了就是给你的机器人灵魂找个合适的家。我见过太多同学,代码写得漂亮,结果卡在环境配置上,一卡就是两三天。嗯,咱们今天就把这个坑填平。

2.1 Ubuntu系统安装与配置

ROS对Linux的依赖很深,我个人习惯用Ubuntu。为什么?因为社区支持最好,遇到问题随便一搜就有答案。

2.1.1 版本选择

记住一个原则:ROS版本和Ubuntu版本是绑定的。你没法在Ubuntu 20.04上装ROS 2 Humble,就像你不能把柴油加进汽油车里。

ROS发行版 对应Ubuntu版本 我的推荐
ROS Noetic Ubuntu 20.04 LTS ✅ 稳定,适合初学者
ROS 2 Foxy Ubuntu 20.04 LTS ⚠️ 过渡版本,不推荐
ROS 2 Humble Ubuntu 22.04 LTS ✅ 新项目首选
ROS 2 Iron Ubuntu 22.04 LTS ⚠️ 最新但资料少
我的建议:如果你是新手,直接上Ubuntu 20.04 + ROS Noetic。这个组合我用了三年,踩过的坑都已经被前人填平了。

2.1.2 安装要点

安装Ubuntu时,有几点我特别想提醒你:

  • 磁盘分区:至少给根目录留50GB。我曾经只给了20GB,装了几个功能包就满了,那叫一个尴尬。
  • 软件源:安装完成后第一件事,换国内源。阿里云、清华、中科大,选一个就行。
  • 显卡驱动:如果你用NVIDIA显卡,记得装驱动。不然RViz跑起来卡成PPT。
避坑指南:我曾经在虚拟机里装ROS,结果跑导航仿真时,Gazebo直接崩溃。如果你有条件,尽量双系统或直接装实体机。虚拟机做简单练习可以,做SLAM和导航,算力不够。

2.2 ROS发行版选择与安装

选好Ubuntu,接下来就是装ROS了。这里我以ROS Noetic为例,因为它是ROS 1的最后一个长期支持版,稳定得让人感动。

2.2.1 安装步骤

打开终端,一行一行来:

# 1. 设置软件源
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

# 4. 安装完整版(推荐)
sudo apt install ros-noetic-desktop-full

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

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

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

关键点:第5步的rosdep init经常失败,因为要访问raw.githubusercontent.com。如果卡住了,试试挂代理,或者手动下载那个配置文件。我遇到过三次,都是网络问题。

2.2.2 验证安装

装完别急着高兴,先跑个命令验证一下:

roscore

如果看到类似这样的输出,说明ROS核心跑起来了:

... logging to /home/yourname/.ros/log/...
started core service [/rosout]
小技巧:roscore启动后,再开一个新终端,输入rosnode list,如果看到/rosout,说明你的ROS环境完全OK。

2.3 ROS工作空间创建

工作空间,就是你写代码的文件夹。ROS里叫catkin workspace。我习惯把它放在~/catkin_ws/下。

2.3.1 创建流程

# 创建文件夹
mkdir -p ~/catkin_ws/src

# 进入src目录
cd ~/catkin_ws/src

# 初始化工作空间
catkin_init_workspace

# 回到根目录
cd ~/catkin_ws

# 编译
catkin_make

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

编译成功后,你会看到build和devel两个文件夹自动生成。devel里藏着你的可执行文件和库文件。

注意:每次你新建了功能包,都要重新catkin_make一次。我刚开始学的时候,经常忘了这步,然后死活找不到自己写的节点。嗯,别学我。

2.4 ROS基础命令练习

命令是ROS的肌肉记忆。我建议你每天敲一遍,一周后闭着眼睛都能打出来。

2.4.1 核心命令速查

命令 作用 我的使用频率
roscore 启动ROS核心 每次必用
rosrun 运行单个节点 ⭐⭐⭐⭐⭐
roslaunch 启动多个节点 ⭐⭐⭐⭐⭐
rostopic 查看话题 ⭐⭐⭐⭐
rosservice 调用服务 ⭐⭐⭐
rosnode 查看节点信息 ⭐⭐⭐
rqt_graph 可视化节点关系 ⭐⭐⭐⭐

2.4.2 实战练习

来,跟我做一组练习:

# 终端1:启动核心
roscore

# 终端2:运行小乌龟
rosrun turtlesim turtlesim_node

# 终端3:控制小乌龟
rosrun turtlesim turtle_teleop_key

# 终端4:查看话题
rostopic list
rostopic echo /turtle1/cmd_vel

看到小乌龟在屏幕上动了吗?这就是ROS最基本的发布-订阅模型。你按键盘,turtle_teleop_key节点发布速度指令,turtlesim_node订阅并执行。

我的经验:调试机器人时,rqt_graph是我最常用的工具。它能画出所有节点和话题的关系图。有一次我的导航一直不转弯,打开rqt_graph一看,发现一个话题名字拼错了。这种问题,看代码看一天都找不到,看图一眼就明白。

2.5 本章知识体系

下面这张图,是我自己总结的ROS环境搭建全流程。你照着走,不会迷路。

ROS环境搭建知识体系 Ubuntu系统安装 ROS发行版安装 工作空间创建 版本选择 磁盘分区 软件源配置 显卡驱动 Noetic/Foxy rosdep init 环境变量 验证安装 catkin_init catkin_make devel/setup 功能包管理 ROS基础命令:roscore / rosrun / rostopic / rqt_graph 每一步都环环相扣,缺一不可 Ubuntu是地基 ROS是骨架 工作空间是血肉

好了,环境搭好了,命令也练了。下一章我们开始真正接触MoveIt,到时候你会感谢今天认真搭环境的自己。

课后作业:打开终端,把今天学的所有命令敲一遍。尤其是rostopic echo和rqt_graph,这两个在后续的导航调参中会频繁用到。