【ROS1从入门到精通】第1篇:ROS1简介与环境搭建(Ubuntu 20.04 + Noetic完整指南)
学习目标:通过本文,你将了解ROS是什么,为什么要学习ROS,以及如何在Ubuntu 20.04上安装配置ROS Noetic环境
一、引言
1.1 为什么需要学习ROS
想象一下,你正在开发一个智能机器人,需要处理摄像头图像、激光雷达数据、控制电机运动、实现路径规划...如果从零开始编写所有代码,可能需要几年时间。而**ROS(Robot Operating System)**的出现,让这一切变得简单!
在机器人领域,ROS已经成为事实上的标准。无论是学术研究还是工业应用,掌握ROS都是机器人工程师的必备技能。据统计,超过80%的机器人研究项目使用ROS,包括:
- 🚗 自动驾驶:百度Apollo、Autoware
- 🤖 服务机器人:PR2、TurtleBot、Pepper
- 🏭 工业机器人:Universal Robots、ABB
- 🚁 无人机:PX4、ArduPilot
1.2 本文内容概览
- 理论基础:深入理解ROS的设计理念和架构
- 环境搭建:手把手安装Ubuntu 20.04 + ROS Noetic
- 实战验证:运行小海龟仿真,验证安装成功
- 常见问题:解决90%的安装问题
二、理论基础
2.1 什么是ROS
ROS(Robot Operating System) 并不是传统意义上的操作系统,而是运行在Linux上的一个机器人软件开发框架。
核心特点:
- 🔧 分布式架构:将复杂系统分解为多个独立节点
- 📦 丰富的工具库:3000+开源功能包
- 🔄 硬件抽象:统一的硬件接口
- 🌍 活跃的社区:全球数万开发者贡献
2.2 ROS的架构设计
系统层 中间件层 应用层 Ubuntu Linux 设备驱动 ROS Master 话题通信 服务通信 参数服务器 导航 建图 视觉 控制
架构说明:
- 应用层:各种机器人功能的实现
- 中间件层:ROS核心,负责通信和协调
- 系统层:底层操作系统和硬件驱动
2.3 ROS vs ROS2 该如何选择
| 特性 | ROS1 | ROS2 |
|---|---|---|
| 稳定性 | ⭐⭐⭐⭐⭐ 非常稳定 | ⭐⭐⭐ 持续改进中 |
| 学习资源 | ⭐⭐⭐⭐⭐ 资源丰富 | ⭐⭐⭐ 逐步增加 |
| 实时性 | ⭐⭐ 软实时 | ⭐⭐⭐⭐⭐ 硬实时 |
| 跨平台 | Linux | Linux/Windows/MacOS |
| 适用场景 | 研究、原型开发 | 产品化、工业应用 |
建议:
- 🎓 初学者:从ROS1开始,学习资源丰富
- 🏢 企业应用:考虑ROS2,更适合产品化
- 🔬 科研项目:ROS1足够,生态成熟
三、环境准备
3.1 系统要求
硬件要求:
- CPU:双核 2.0GHz 以上
- 内存:4GB以上(建议8GB)
- 硬盘:20GB可用空间
- 显卡:支持OpenGL(可选)
软件要求:
- 操作系统:Ubuntu 20.04 LTS(推荐)
- Python:3.8+
- 网络:能访问Ubuntu软件源
3.2 安装方案选择
方案对比:
| 安装方式 | 难度 | 性能 | 适用场景 |
|---|---|---|---|
| 双系统 | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | 长期使用 |
| 虚拟机 | ⭐ | ⭐⭐⭐ | 学习测试 |
| WSL2 | ⭐⭐ | ⭐⭐⭐⭐ | Windows用户 |
| Docker | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | 快速部署 |
本文以双系统安装为例,其他方式原理相同。
四、ROS Noetic安装步骤
4.1 配置Ubuntu软件源
bash
# 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 install curl
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
推荐使用清华源(速度更快):
bash
# 使用清华源
sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'
4.2 安装ROS Noetic
bash
# 1. 更新软件包索引
sudo apt update
# 2. 安装完整版ROS(推荐)
sudo apt install ros-noetic-desktop-full
# 或者安装基础版(不含GUI工具)
# sudo apt install ros-noetic-base
# 或者最小安装(仅核心包)
# sudo apt install ros-noetic-ros-core
安装版本说明:
- desktop-full(推荐):包含ROS、rqt、rviz、仿真器等
- desktop:包含ROS、rqt、rviz等
- base:仅包含核心库,无GUI工具
- core:最小安装,仅通信库
4.3 初始化rosdep
bash
# 安装python3-rosdep
sudo apt install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential
# 初始化rosdep
sudo rosdep init
rosdep update
如果rosdep init失败(网络问题),使用以下方法:
bash
# 方法1:使用代理
export https_proxy=http://127.0.0.1:7890
export http_proxy=http://127.0.0.1:7890
sudo rosdep init
rosdep update
# 方法2:手动下载
sudo mkdir -p /etc/ros/rosdep/sources.list.d/
sudo curl -o /etc/ros/rosdep/sources.list.d/20-default.list https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list
rosdep update
4.4 环境配置
bash
# 1. 添加ROS环境变量到bashrc
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
# 2. 使环境变量生效
source ~/.bashrc
# 3. 验证安装
rosversion -d
如果输出noetic,说明安装成功!
4.5 安装常用工具
bash
# 安装常用工具包
sudo apt install ros-noetic-rqt ros-noetic-rqt-common-plugins ros-noetic-turtlesim ros-noetic-tf2-tools ros-noetic-tf
# 安装开发工具
sudo apt install python3-catkin-tools python3-osrf-pycommon
# 安装VS Code(可选)
sudo snap install code --classic
五、创建ROS工作空间
5.1 创建catkin工作空间
bash
# 1. 创建工作空间目录
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/
# 2. 初始化工作空间
catkin_make
# 3. 添加工作空间到环境变量
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc
# 4. 验证工作空间
echo $ROS_PACKAGE_PATH
目录结构说明:
catkin_ws/
├── build/ # 编译目录
├── devel/ # 开发目录
└── src/ # 源码目录
└── CMakeLists.txt
5.2 测试工作空间
bash
# 创建测试包
cd ~/catkin_ws/src
catkin_create_pkg test_pkg std_msgs rospy roscpp
# 编译
cd ~/catkin_ws
catkin_make
# 查看包路径
rospack find test_pkg
六、运行测试:小海龟仿真
6.1 启动小海龟仿真
终端1:启动ROS Master
bash
roscore
终端2:启动小海龟节点
bash
rosrun turtlesim turtlesim_node
终端3:启动键盘控制节点
bash
rosrun turtlesim turtle_teleop_key
6.2 查看系统状态
bash
# 查看所有节点
rosnode list
# 查看所有话题
rostopic list
# 查看话题内容
rostopic echo /turtle1/cmd_vel
# 查看节点信息
rosnode info /turtlesim
# 查看计算图
rqt_graph
6.3 预期效果
如果一切正常,你应该看到:
- 🐢 一个可爱的小海龟窗口
- ⌨️ 使用方向键可以控制海龟移动
- 📊 rqt_graph显示节点通信关系
效果截图:

七、常见问题与解决方案
Q1: sudo rosdep init失败?
问题:连接raw.githubusercontent.com超时
解决方案:
bash
# 方案1:修改hosts文件
echo "199.232.28.133 raw.githubusercontent.com" | sudo tee -a /etc/hosts
# 方案2:使用国内镜像
wget https://gitee.com/ncnynl/rosdep/raw/master/rosdep_update.sh
chmod +x rosdep_update.sh
./rosdep_update.sh
Q2: roscore命令找不到?
问题:bash: roscore: command not found
解决方案:
bash
# 检查是否source了setup.bash
source /opt/ros/noetic/setup.bash
# 永久添加到bashrc
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
Q3: catkin_make编译失败?
问题:CMake Error或找不到包
解决方案:
bash
# 清理编译缓存
cd ~/catkin_ws
rm -rf build/ devel/
# 重新编译
catkin_make
# 如果还是失败,检查依赖
rosdep install --from-paths src --ignore-src -r -y
Q4: 虚拟机运行卡顿?
问题:虚拟机中ROS运行缓慢
优化方案:
- 分配更多内存(至少4GB)
- 启用3D加速
- 使用轻量级桌面环境
- 考虑使用Docker替代
Q5: 如何完全卸载ROS?
bash
# 卸载所有ROS包
sudo apt-get remove ros-*
# 清理配置
sudo apt-get autoremove
# 删除环境变量
# 编辑~/.bashrc,删除source /opt/ros/...行
八、总结
8.1 本文要点回顾
- ✅ 理解了ROS是什么:机器人开发的强大框架
- ✅ 掌握了安装流程:Ubuntu 20.04 + ROS Noetic
- ✅ 创建了工作空间:catkin_ws基础配置
- ✅ 验证了安装成功:小海龟仿真正常运行
8.2 ROS学习路线图
环境搭建 核心概念 话题通信 服务通信 Launch文件 TF变换 URDF建模 SLAM建图 自主导航 项目实战
8.3 下一步学习
- 推荐阅读 :第2篇:ROS1核心概念详解(节点、话题、服务一网打尽)
- 扩展学习 :
8.4 实践建议
- ✅ 完成小海龟仿真的各种控制
- ✅ 尝试查看和分析话题消息
- ✅ 使用rqt工具查看系统状态
- ✅ 创建自己的第一个功能包
九、参考资料
- 《ROS机器人程序设计》- 机械工业出版社
- 《机器人操作系统(ROS)浅析》- 清华大学出版社
附录A:ROS版本对应关系
| ROS版本 | Ubuntu版本 | Python版本 | 支持周期 |
|---|---|---|---|
| Noetic | 20.04 LTS | Python 3 | 2025年5月 |
| Melodic | 18.04 LTS | Python 2/3 | 2023年5月 |
| Kinetic | 16.04 LTS | Python 2 | 2021年4月(已结束) |
| Indigo | 14.04 LTS | Python 2 | 2019年4月(已结束) |
附录B:常用命令速查
ROS核心命令
bash
roscore # 启动ROS Master
rosrun pkg node # 运行节点
roslaunch pkg file.launch # 启动launch文件
roscd package_name # 切换到包目录
话题相关命令
bash
rostopic list # 列出所有话题
rostopic echo /topic # 打印话题内容
rostopic info /topic # 查看话题信息
rostopic hz /topic # 查看发布频率
rostopic pub /topic # 手动发布消息
节点相关命令
bash
rosnode list # 列出所有节点
rosnode info /node # 查看节点信息
rosnode kill /node # 关闭节点
rosnode ping /node # 测试节点连接
服务相关命令
bash
rosservice list # 列出所有服务
rosservice call /srv # 调用服务
rosservice type /srv # 查看服务类型
rosservice info /srv # 查看服务信息
参数相关命令
bash
rosparam list # 列出所有参数
rosparam get /param # 获取参数值
rosparam set /param # 设置参数值
rosparam dump file # 保存参数到文件
rosparam load file # 从文件加载参数
附录C:一键安装脚本
为了方便大家快速安装,我编写了一键安装脚本:
bash
#!/bin/bash
# ROS Noetic一键安装脚本
# 使用方法:bash install_ros_noetic.sh
echo "======================================"
echo " ROS Noetic 一键安装脚本"
echo " 适用系统:Ubuntu 20.04"
echo "======================================"
# 1. 添加ROS源
echo "[1/6] 配置ROS软件源..."
sudo sh -c 'echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
# 2. 更新软件包
echo "[2/6] 更新软件包列表..."
sudo apt update
# 3. 安装ROS
echo "[3/6] 安装ROS Noetic..."
sudo apt install -y ros-noetic-desktop-full
# 4. 安装依赖工具
echo "[4/6] 安装依赖工具..."
sudo apt install -y python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential
# 5. 初始化rosdep
echo "[5/6] 初始化rosdep..."
sudo rosdep init
rosdep update
# 6. 配置环境
echo "[6/6] 配置环境变量..."
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
# 创建工作空间
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/
catkin_make
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
echo "======================================"
echo " 安装完成!"
echo " 请运行 source ~/.bashrc"
echo " 或重新打开终端"
echo "======================================"
将以上内容保存为install_ros_noetic.sh,然后执行:
bash
chmod +x install_ros_noetic.sh
./install_ros_noetic.sh
🎉 恭喜你!已经成功踏出ROS学习的第一步!
如果本文对你有帮助,请点赞👍收藏⭐支持一下!
有问题欢迎在评论区讨论,我会及时回复!
系列持续更新中,关注我获取最新文章!