第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 | ⚠️ 最新但资料少 |
2.1.2 安装要点
安装Ubuntu时,有几点我特别想提醒你:
- 磁盘分区:至少给根目录留50GB。我曾经只给了20GB,装了几个功能包就满了,那叫一个尴尬。
- 软件源:安装完成后第一件事,换国内源。阿里云、清华、中科大,选一个就行。
- 显卡驱动:如果你用NVIDIA显卡,记得装驱动。不然RViz跑起来卡成PPT。
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]
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环境搭建全流程。你照着走,不会迷路。
好了,环境搭好了,命令也练了。下一章我们开始真正接触MoveIt,到时候你会感谢今天认真搭环境的自己。
课后作业:打开终端,把今天学的所有命令敲一遍。尤其是rostopic echo和rqt_graph,这两个在后续的导航调参中会频繁用到。