news 2026/5/27 2:03:40

告别roscore!从ROS1到ROS2,手把手教你用Ubuntu 20.04安装Galactic版本(附环境配置与首个Demo)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
告别roscore!从ROS1到ROS2,手把手教你用Ubuntu 20.04安装Galactic版本(附环境配置与首个Demo)

从ROS1到ROS2实战迁移指南:Ubuntu 20.04安装Galactic与首个Demo全解析

当你在ROS1中熟练地启动roscore时,是否思考过这个中心化架构的局限性?ROS2带来的不仅是技术栈的革新,更是一场机器人开发范式的变革。本文将带你以实践者的视角,完成从ROS1到ROS2的关键跨越——在Ubuntu 20.04上安装Galactic版本,并通过经典talker/listener案例验证环境。不同于普通教程,我们特别关注ROS1用户的实际痛点,比如环境共存、命令差异等迁移细节。

1. 为什么ROS2值得你立即迁移

如果你曾在ROS1中遭遇过这些场景:

  • 主节点崩溃导致整个系统瘫痪
  • 网络波动造成通信中断
  • 需要实时性保障的嵌入式部署困难

那么ROS2的设计改进将直击这些痛点。其核心变革在于采用去中心化的DDS通信中间件,这带来了三个革命性优势:

  1. 无单点故障:每个节点都具备自主发现能力
  2. QoS可配置:可根据场景平衡实时性与可靠性
  3. 跨平台支持:从x86到ARM架构的无缝移植
# ROS1 vs ROS2架构对比示意 ROS1: [Node A] --> [Master] <-- [Node B] ROS2: [Node A] <--DDS--> [Node B]

典型应用场景对比:

特性ROS1适用场景ROS2优势场景
实时性教学演示工业控制
网络依赖实验室稳定网络车联网不稳定环境
系统规模单机系统多机器人协作
部署环境开发原型产品级应用

实践建议:即使暂时不需要ROS2的新特性,提前熟悉其架构也能为未来技术升级储备能力

2. 准备你的Ubuntu 20.04环境

在开始安装前,需要确保系统满足以下条件:

  • 已安装Ubuntu 20.04.3 LTS或更新版本
  • 至少15GB可用磁盘空间
  • 稳定的网络连接(建议配置国内镜像源加速下载)

关键步骤解析:

2.1 配置APT软件源

执行以下命令添加ROS2官方源(含国内用户优化方案):

# 设置locale(避免潜在问题) sudo apt update && sudo apt install -y locales sudo locale-gen en_US en_US.UTF-8 sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 # 添加ROS2 GPG密钥 sudo apt install -y curl gnupg lsb-release sudo curl -sSL https://mirrors.tuna.tsinghua.edu.cn/rosdistro/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg # 添加软件源(默认使用清华镜像) echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] https://mirrors.tuna.tsinghua.edu.cn/ros2/ubuntu/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

2.2 解决常见依赖问题

ROS1用户需特别注意这些包冲突:

# 检查冲突包 dpkg -l | grep -E 'ros-melodic|ros-noetic' # 若存在冲突可选择性卸载(确保不影响现有ROS1工作区) sudo apt remove --purge ros-melodic-* ros-noetic-* # 慎用!

3. 安装ROS2 Galactic完整版

推荐安装桌面完整版(包含GUI工具):

# 更新软件索引 sudo apt update # 安装完整版(含RViz、RQT等工具) sudo apt install -y ros-galactic-desktop # 安装开发工具 sudo apt install -y python3-colcon-common-extensions ros-dev-tools

环境变量配置技巧:

# 永久生效配置 echo "source /opt/ros/galactic/setup.bash" >> ~/.bashrc # 临时测试用配置 source /opt/ros/galactic/setup.bash

故障排查:若遇到Unable to locate package错误,请检查/etc/apt/sources.list.d/ros2.list文件格式是否正确

4. 验证安装:第一个ROS2 Demo

让我们用经典的talker/listener测试安装结果:

步骤1:启动消息发布者

ros2 run demo_nodes_cpp talker

你将看到持续输出的消息:

[INFO] [1620000000.000000000] [talker]: Publishing: 'Hello World: 1' [INFO] [1620000000.100000000] [talker]: Publishing: 'Hello World: 2'

步骤2:启动消息订阅者

新终端中运行:

ros2 run demo_nodes_py listener

成功订阅后会显示:

[INFO] [1620000000.100000000] [listener]: I heard: [Hello World: 1] [INFO] [1620000000.200000000] [listener]: I heard: [Hello World: 2]

关键现象观察:

  • 无需预先启动roscore
  • 节点自动发现通常需要2-3秒
  • 按Ctrl+C可优雅终止节点

5. ROS1与ROS2共存方案

对于需要同时使用两个版本的用户,推荐以下管理策略:

方案1:终端会话隔离

# ROS1环境 source /opt/ros/noetic/setup.bash # ROS2环境 source /opt/ros/galactic/setup.bash

方案2:工作区隔离

创建独立的workspace并配置对应环境:

# 示例:ROS2工作区 mkdir -p ~/ros2_ws/src cd ~/ros2_ws source /opt/ros/galactic/setup.bash colcon build

共存时的注意事项:

  • 避免同时激活两个环境
  • 使用which rosrun检查当前生效版本
  • RViz2/RQt2等工具需要对应版本支持

6. 必须掌握的ROS2核心命令

下表对比了ROS1用户需要适应的命令变化:

功能ROS1命令ROS2对应命令变化说明
节点管理rosnoderos2 node改为子命令模式
话题查看rostopicros2 topic功能基本一致
服务调用rosserviceros2 service新增类型检查
参数管理rosparamros2 param支持动态修改
启动文件roslaunchros2 launch语法有较大变化

常用诊断命令示例:

# 查看节点列表 ros2 node list # 监视话题频率 ros2 topic hz /chatter # 图形化节点关系 rqt_graph

7. 深入理解DDS通信配置

ROS2允许通过QoS策略精细控制通信行为。查看默认QoS配置:

ros2 topic info /chatter --verbose

典型QoS配置示例(Python API):

from rclpy.qos import QoSProfile, QoSReliabilityPolicy # 配置可靠通信(类似TCP) qos_reliable = QoSProfile( depth=10, reliability=QoSReliabilityPolicy.RELIABLE ) # 配置尽力而为通信(类似UDP) qos_best_effort = QoSProfile( depth=10, reliability=QoSReliabilityPolicy.BEST_EFFORT )

性能提示:在自动驾驶等实时场景中,适当调整QoS可降低端到端延迟30%以上

8. 迁移实践:将ROS1包转换为ROS2

以经典teleop_twist_keyboard为例,展示改造要点:

关键修改点:

  1. package.xml格式升级为格式3
  2. 替换roscpp依赖为rclcpp
  3. 重写节点初始化逻辑:
// ROS1风格 ros::init(argc, argv, "teleop_node"); ros::NodeHandle nh; // ROS2风格 rclcpp::init(argc, argv); auto node = std::make_shared<rclcpp::Node>("teleop_node");
  1. 使用colcon替代catkin_make构建

构建命令对比:

# ROS1构建 catkin_make # ROS2构建 colcon build --symlink-install

在完成第一个ROS2 Demo后,建议尝试用ros2 pkg create创建新包,体验现代化的构建流程。将原本需要roscore的架构改造为去中心化设计时,最大的惊喜是发现节点间通信变得如此 resilient——即使任意节点崩溃,其他通信对仍能继续工作。这种架构韧性正是产品级应用所需要的。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/27 2:02:19

数据同步利器 Kettle:Windows 安装配置及基础使用详解

Kettle 是一款开源、免费的 ETL 数据集成工具&#xff0c;广泛应用于数据抽取、转换、加载、跨库数据同步等场景。本文详细讲解 Windows环境下 Kettle 的安装步骤、环境配置&#xff0c;并搭配入门案例演示基础使用方法&#xff0c;零基础也能快速上手。 一、工具简介 1、什么…

作者头像 李华
网站建设 2026/5/27 2:01:25

一个入口搞定 Claude/Grok,技术难题全拿捏

平时不管是打工人、程序员还是学生党&#xff0c;用 AI 解决问题时总免不了糟心事儿&#xff1a;写代码要切 ChatGPT&#xff0c;处理长文档得找 Claude&#xff0c;想做创意生成又得换 Gemini&#xff0c;来回切换窗口、重复登录账号&#xff0c;光是折腾平台就要耗掉半小时&a…

作者头像 李华
网站建设 2026/5/27 2:00:10

鸿蒙 PC 开发:传统前端经验为什么会失效?

网罗开发&#xff08;小红书、快手、视频号同名&#xff09;大家好&#xff0c;我是 展菲&#xff0c;目前在上市企业从事人工智能项目研发管理工作&#xff0c;平时热衷于分享各种编程领域的软硬技能知识以及前沿技术&#xff0c;包括iOS、前端、Harmony OS、Java、Python等方…

作者头像 李华
网站建设 2026/5/27 1:58:58

【Lovable写作助手开发避坑白皮书】:基于17个真实项目复盘,揭示API延迟超标、上下文丢失、风格漂移的根因与修复公式

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;Lovable写作助手开发避坑白皮书导论 Lovable写作助手是一款面向技术创作者的智能内容协同工具&#xff0c;其核心目标是提升高质量技术文档的产出效率与可维护性。在实际开发过程中&#xff0c;团队发现大量重…

作者头像 李华
网站建设 2026/5/27 1:49:04

让AI助手从翻车到carry的实战指南

你有没有过这种体验&#xff1f;兴冲冲用上 Claude Code、Codex 这些 AI 编程助手&#xff0c;想着终于能解放双手&#xff0c;让它帮我改 bug、做功能&#xff0c;结果发现 —— 这哪是帮手&#xff0c;分明是个添乱的&#xff01;让它改个小问题&#xff0c;它改完给你搞出一…

作者头像 李华