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 listrostopic listrosservice list,看看当前系统里有哪些节点、话题和服务。不用理解全部含义,先混个眼熟。