1、ROS概述与环境搭建:ROS是什么、为什么学ROS、ROS版本选择(Noetic)、Ubuntu20.04安装、ROS Noetic安装与测试
1.1 ROS到底是什么?
ROS,全称Robot Operating System,翻译过来叫「机器人操作系统」。但说实话,它并不是一个真正的操作系统。
它更像是一个「机器人通信框架」。你想想看,一个机器人身上有摄像头、激光雷达、电机、机械臂……这些硬件来自不同厂家,语言也不一样。ROS的作用,就是让它们能互相说话、协同工作。
我个人习惯把ROS理解成「机器人的神经系统」。传感器是眼睛和耳朵,执行器是手脚,而ROS就是连接它们的那套神经网络。
核心要点:ROS = 通信框架 + 工具集 + 生态社区。它不是操作系统,但胜似操作系统。
1.2 为什么一定要学ROS?
这个问题我经常被问到。我的回答很简单:因为现在做机器人,几乎绕不开ROS。
我在项目中遇到过不少团队,一开始想自己写通信协议、自己搭框架。结果呢?三个月过去了,连基本的传感器数据都没对齐。而用ROS,同样的工作,三天搞定。
ROS的优势,说白了就三点:
- 代码复用:全球开发者贡献了数千个功能包。你要做个导航?直接拿
move_base改改参数就行。 - 可视化调试:Rviz、rqt这些工具,能让你「看到」机器人在想什么。我调试激光雷达时,经常盯着Rviz里的点云图看半天——比看日志高效多了。
- 仿真先行:Gazebo仿真环境里跑通了,再上真机。嗯,这个习惯帮我省了至少三台炸机的钱。
我的建议:如果你打算从事机器人行业,ROS就是必修课。就像做Web开发要学HTTP协议一样,做机器人就要学ROS。
1.3 版本选择:为什么是Noetic?
ROS的版本很多,Melodic、Noetic、Foxy、Galactic……初学者很容易懵。
我直接给结论:学ROS1,选Noetic;学ROS2,选Humble。
为什么推荐Noetic?原因有三:
| 版本 | Ubuntu版本 | 支持周期 | 推荐理由 |
|---|---|---|---|
| ROS Noetic | Ubuntu 20.04 | 2020-2025 | ROS1最终版,生态最成熟 |
| ROS Melodic | Ubuntu 18.04 | 2018-2023 | 已停止维护,不推荐 |
| ROS2 Foxy | Ubuntu 20.04 | 2020-2023 | 过渡版本,已停止维护 |
你看,Noetic是ROS1的最后一个长期支持版本,2025年才停止维护。这意味着你现在学的内容,至少未来两年内都不过时。
我曾经见过有人装了ROS Melodic,结果发现很多新功能包都不支持了,最后只能重装系统。嗯,这种坑咱们不踩。
注意:ROS版本和Ubuntu版本是绑定的。Noetic只能装在Ubuntu 20.04上,别想着在Ubuntu 22.04上硬装——我试过,全是依赖冲突。
1.4 Ubuntu 20.04安装指南
装系统这件事,说难不难,说简单也不简单。我装过不下50次Ubuntu,总结了一套「稳如老狗」的流程。
第一步:下载镜像
去Ubuntu官网下载20.04.6 LTS版本。别下成22.04或者24.04,记住:20.04.6,一个字符都不能错。
第二步:制作启动盘
用Rufus(Windows)或者balenaEtcher(Mac/Linux)把镜像写入U盘。我习惯用balenaEtcher,界面简单,不容易出错。
第三步:安装系统
重启电脑,按F2/F12/Del进BIOS,设置U盘启动。然后跟着安装向导走就行。这里有几个关键点:
- 分区建议:至少给Ubuntu分配50GB空间。我见过有人只给20GB,结果装完ROS就满了。
- 网络设置:安装时最好连上网,这样能自动下载更新和驱动。
- 双系统用户:如果你要装Windows+Ubuntu双系统,先装Windows,再装Ubuntu。顺序反了会很麻烦。
避坑指南:我曾经在安装时选了「最小安装」,结果后面装ROS时缺了一堆依赖,折腾了两小时。建议选「正常安装」,省心。
1.5 ROS Noetic安装与测试
装好Ubuntu 20.04后,就可以装ROS了。整个过程大概15分钟,跟着我来。
1.5.1 设置软件源
打开终端(快捷键Ctrl+Alt+T),输入以下命令:
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
1.5.2 添加密钥
sudo apt install curl
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
1.5.3 安装ROS Noetic
我建议安装完整桌面版,包含所有常用工具:
sudo apt update
sudo apt install ros-noetic-desktop-full
这个过程大概需要5-10分钟,取决于你的网速。去泡杯咖啡吧。
1.5.4 初始化rosdep
rosdep是ROS的依赖管理工具,必须初始化:
sudo rosdep init
rosdep update
常见问题:如果sudo rosdep init报错,多半是网络问题。可以试试挂代理,或者手动下载rosdep配置文件。我曾经在校园网环境下折腾了半小时才搞定。
1.5.5 设置环境变量
每次打开终端都要加载ROS环境,为了方便,把它写到.bashrc里:
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
1.5.6 安装其他工具
这几个工具我几乎天天用,建议一起装上:
sudo apt install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential
1.6 验证安装:跑一个简单的测试
装完了,怎么知道有没有装好?跑个小海龟试试。
第一步:启动ROS核心
roscore
看到类似started core service [/rosout]的输出,说明ROS核心启动成功。
第二步:启动小海龟仿真器
新开一个终端,输入:
rosrun turtlesim turtlesim_node
这时候应该会弹出一个窗口,里面有一只小海龟。
第三步:控制小海龟
再开一个终端,输入:
rosrun turtlesim turtle_teleop_key
然后用键盘的上下左右键控制小海龟移动。能动了?恭喜你,ROS安装成功!
小测试:试试用rostopic list查看当前有哪些话题在通信。你会看到/turtle1/cmd_vel、/turtle1/pose等话题——这就是ROS通信机制最直观的体现。
1.7 本章小结
这一章我们做了三件事:理解了ROS是什么、选对了版本、装好了环境。说实话,环境搭建是最枯燥的部分,但也是最重要的基础。
我见过太多人卡在安装这一步就放弃了。其实没必要,装系统装ROS就那么几条命令,照着敲就行。真遇到问题,去ROS社区搜一搜,99%的问题都有人遇到过。
下一章,我们会真正开始写ROS代码。到时候你会发现,前面这些准备工作,都是值得的。
课后作业:打开终端,输入rosnode list、rostopic list、rosservice list,看看当前系统里有哪些节点、话题和服务。不用理解全部含义,先混个眼熟。