实验室入门——ubuntu20.04安装ros和ros2全流程
文章目录
- 前言
- 一、前置准备:系统与环境检查
- 1. 系统要求
- 2. 系统初始化
- 二、安装ROS Noetic(ROS1长期支持版)
- 2. 安装ROS Noetic
- 3. 初始化rosdep(依赖管理工具)
- 4. 配置环境变量
- 5.检验安装
- 三、安装ROS2 Foxy(ROS2长期支持版)
- 1. 配置ROS2软件源
- 2. 安装ROS2 Foxy
- 3. 配置环境变量
- 4. 安装ROS1-ROS2桥接工具(可选)
- 5. 测试ROS2 Foxy
- 6. 测试ROS1-ROS2桥接(可选)
- 四、ROS与ROS2共存建议
- 总结
前言
今年实验室招新第一批主要是社团成员,每一名同学都需要经历ubuntu双系统的安装的ros基础的学习,ROS(Robot Operating System) 作为常用的机器人控制软件和通信工具在实验室参加的竞赛中是必不可少的。随着版本和技术更新的需要,实验室逐渐从ros转向ros2系统。学长在这篇中将详细介绍在 Ubuntu20.04 系统上安装 ROS Noetic(ROS1长期支持版) 和 ROS2 Foxy(ROS2长期支持版) 的全流程,涵盖环境配置、安装步骤、验证测试及常见问题解决,助你快速搭建机器人开发环境。
一、前置准备:系统与环境检查
1. 系统要求
- 操作系统:Ubuntu20.04 LTS(推荐,ROS Noetic和ROS2 Foxy均官方支持)。
- 硬件:至少4GB内存(推荐8GB+),25GB可用磁盘空间(ROS依赖较多)。
- 网络:稳定联网(安装过程需下载约3-5GB数据)。
2. 系统初始化
安装前完成以下操作:
# 更新系统软件包,在系统初配置中已经完成
sudo apt update && sudo apt upgrade -y# 安装必要工具,视觉选手为了避免后续的重复性操作可以看视觉学习中的相关教程,而不是简单通过apt进行安装
sudo apt install -y git build-essential cmake
二、安装ROS Noetic(ROS1长期支持版)
ROS Noetic是ROS1的最后一个长期支持版本,适配Ubuntu20.04,适合传统机器人算法开发(如导航、SLAM)。
## 1. 配置ROS软件源
```bash
# 添加ROS官方源到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'
sudo sh -c 'echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu focal main" > /etc/apt/sources.list.d/ros-latest.list'# 导入ROS公钥(验证软件包完整性)觉得慢的可以参考视觉学习专栏进行加速
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -#或者换源curl -s https://gitee.com/ohhuo/rosdistro/raw/master/ros.asc | sudo apt-key add -
#添加完下载链接后需要进行apt更新
sudo apt update
2. 安装ROS Noetic
推荐安装桌面完整版其包含的可视化工具如RViz、RQt等,对于学习导航的同学来说是必不可少的:
sudo apt install -y ros-noetic-desktop-full
3. 初始化rosdep(依赖管理工具)
rosdep用于自动安装ROS包的系统依赖:
sudo rosdep init
#如果提示找不到rosdep命令,需要安装python-rosdep
#sudo apt install python3-rosdep
rosdep update
更新时发现,使用的是国外服务器可能导致time out
这里我就不给解决方案了,大家直接参考其他博主的解决思路
ROS学习——rosdep update 超时解决方法
4. 配置环境变量
为了避免每次启动终端都需要加载ROS环境变量,我们将配置命令写进.bashrc设置为永久生效:
# 永久生效(添加到~/.bashrc)
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
5.检验安装
让我们启动ROS1核心节点(roscore
),运行经典乌龟仿真:
# 终端1:启动roscore
roscore# 终端2:运行乌龟仿真节点(另外打开一个终端或者使用超级终端进行分割)
rosrun turtlesim turtlesim_node# 终端3:控制乌龟移动(同上)
rosrun turtlesim turtle_teleop_key
若看到乌龟窗口且可通过键盘控制,ROS1安装成功!
三、安装ROS2 Foxy(ROS2长期支持版)
ROS2基于DDS(数据分发服务),支持实时性、分布式通信,更适合工业级机器人开发。Ubuntu20.04官方支持ROS2 Foxy。
1. 配置ROS2软件源
# 添加ROS2官方源
#sudo sh -c 'echo "deb [arch=$(dpkg --print-architecture)] https://packages.ros.org/ros2/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros2-latest.list'
#中科大源
sudo sh -c 'echo "deb https://mirrors.ustc.edu.cn/ros2/ubuntu/ focal main" > /etc/apt/sources.list.d/ros2-latest.list'# 导入ROS2公钥(同ROS1使用相同密钥)
curl -s https://gitee.com/ohhuo/rosdistro/raw/master/ros.asc | sudo apt-key add -
2. 安装ROS2 Foxy
推荐安装桌面版(含示例和工具):
#桌面版安装,学长的电脑不知道怎么了,只能从官网源才能下载,对比其他博主的方法发现没啥区别,就很奇怪~结果发现似乎是学校网的问题,额彻底无语了。所以大家如果出现下载不了的问题可以试试用热点
sudo apt install -y ros-foxy-desktop
3. 配置环境变量
同样需加载ROS2环境变量:
# 临时加载(当前终端有效)
source /opt/ros/foxy/setup.bash# 永久生效(添加到~/.bashrc)
echo "source /opt/ros/foxy/setup.bash" >> ~/.bashrc
source ~/.bashrc
4. 安装ROS1-ROS2桥接工具(可选)
若需ROS1和ROS2节点通信,安装桥接工具:
sudo apt install -y ros-foxy-ros1-bridge
5. 测试ROS2 Foxy
启动ROS2核心节点(ros2 run
),运行发布-订阅示例:
# 终端1:启动talker(发布消息)
ros2 run demo_nodes_cpp talker# 终端2:启动listener(订阅消息)
ros2 run demo_nodes_cpp listener
若终端2输出“Hello World”日志,ROS2安装成功!
6. 测试ROS1-ROS2桥接(可选)
通过桥接工具让ROS1乌龟和ROS2节点通信:
# 终端1:启动ROS1 roscore
roscore# 终端2:打开ros1小乌龟
source /opt/ros/noetic/setup.bash
rosrun turtlesim turtlesim_node# 终端3(ROS2):开启与ros1桥接
#先声明ros1
source /opt/ros/noetic/setup.bash
#再声明ros2
source /opt/ros/foxy/setup.bash
#进行桥接
ros2 run ros1_bridge dynamic_bridge#终端4 ros2开启键盘控制
source /opt/ros/foxy/setup.bash
ros2 run turtlesim turtle_teleop_key
若ROS1乌龟随ROS2控制指令移动,桥接成功!
四、ROS与ROS2共存建议
- 环境隔离:通过
source
不同setup.bash
切换版本(如source /opt/ros/noetic/setup.bash
或source /opt/ros/foxy/setup.bash
)。 - 工作空间管理:ROS1工作空间(
~/catkin_ws
)和ROS2工作空间(~/ros2_ws
)分开存放。 - 工具兼容:VS Code、CLion等IDE可同时配置ROS和ROS2插件。
总结
通过本文,你已完成Ubuntu20.04下ROS Noetic和ROS2 Foxy的安装,并验证了基础功能。下一步可:
- 学习ROS1的
catkin
构建系统和ROS2的colcon
构建系统。 - 尝试编写第一个ROS1/ROS2节点(如订阅摄像头数据或控制机械臂)。
- 探索SLAM(如Cartographer)或导航(如MoveIt2)等机器人核心功能。
遇到问题时,善用官方文档(http://wiki.ros.org/、https://docs.ros.org/)和社区论坛(如ROS Answers),祝你实验室之旅顺利! 🚀