当前位置: 首页 > news >正文

ROS 2 Galactic 在 Ubuntu 22.04 环境下的 3 种安装方式与避坑实测

ROS 2 Galactic 在 Ubuntu 22.04 环境下的 3 种安装方式与避坑实测

机器人开发领域的技术迭代从未停歇,而ROS 2作为新一代机器人操作系统,正在工业界和学术界快速普及。本文将手把手带你完成ROS 2 Galactic在Ubuntu 22.04系统上的完整部署,涵盖APT仓库安装、二进制包安装和源码编译三种主流方式,并针对国内开发者常见的网络问题、依赖冲突等痛点提供实测解决方案。

1. 环境准备与系统配置

在开始安装前,我们需要确保基础环境符合要求。Ubuntu 22.04(代号Jammy Jellyfish)作为长期支持版本,其默认的软件仓库已经包含ROS 2 Humble,但本文仍选择更成熟的Galactic版本进行演示,二者在核心架构上保持一致。

系统要求检查清单

  • 确认操作系统版本:
    lsb_release -a
    输出应包含"Ubuntu 22.04"字样
  • 确保磁盘剩余空间≥15GB(源码编译需要更多空间)
  • 建议内存≥4GB(复杂机器人应用需要更大内存)

注意:如果之前安装过其他ROS版本,建议先彻底卸载以避免冲突。可使用以下命令清理旧版ROS:

sudo apt remove ~nros-* && sudo apt autoremove

配置Ubuntu universe仓库(包含ROS所需的基础依赖):

sudo apt install software-properties-common sudo add-apt-repository universe

更新软件包索引并升级现有软件:

sudo apt update && sudo apt upgrade -y

安装基础编译工具链(三种安装方式都需要):

sudo apt install -y build-essential cmake git python3-colcon-common-extensions python3-rosdep

2. APT仓库安装(推荐新手)

这是最快捷的安装方式,适合需要快速搭建开发环境的用户。ROS官方为Ubuntu维护了预编译的软件仓库,通过apt命令即可完成安装。

步骤详解

  1. 添加ROS 2 GPG密钥:

    sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
  2. 添加仓库源到sources.list:

    echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
  3. 更新软件包索引:

    sudo apt update
  4. 安装完整桌面版(包含GUI工具和示例):

    sudo apt install ros-galactic-desktop
  5. 初始化rosdep(解决Python依赖):

    sudo rosdep init rosdep update

常见问题解决

  • GPG密钥错误:若遇到"NO_PUBKEY"错误,尝试:
    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys <缺失的密钥ID>
  • 网络超时:可替换为国内镜像源:
    sudo sed -i 's|packages.ros.org|mirrors.tuna.tsinghua.edu.cn/ros2|g' /etc/apt/sources.list.d/ros2.list

3. 二进制包安装(定制化选择)

对于需要特定功能组合或离线安装的场景,下载预编译的二进制包是理想选择。这种方式允许用户自由选择需要安装的组件。

操作流程

  1. 从官网下载对应版本的tar包:

    wget https://github.com/ros2/ros2/releases/download/release-galactic-20210523/ros2-galactic-20210523-linux-focal-amd64.tar.bz2
  2. 创建安装目录并解压:

    mkdir -p ~/ros2_galactic tar xf ros2-galactic-*.tar.bz2 -C ~/ros2_galactic
  3. 安装核心依赖:

    sudo apt install -y python3-rosdep sudo rosdep init rosdep update rosdep install --from-paths ~/ros2_galactic/ros2-linux/share --ignore-src -y --skip-keys "cyclonedds fastcdr fastrtps rti-connext-dds-5.3.1 urdfdom_headers"
  4. 设置环境变量(建议添加到.bashrc):

    echo "source ~/ros2_galactic/ros2-linux/setup.bash" >> ~/.bashrc

组件选择建议

组件包名功能描述推荐场景
ros-base核心通信系统嵌入式设备
desktopGUI工具+教程开发学习
ros-core最简运行时生产环境

4. 源码编译安装(高级用户)

对于需要深度定制或参与ROS 2开发的用户,从源码编译能提供最大灵活性。这个过程需要较长时间(约1-2小时)和充足的系统资源。

编译步骤

  1. 创建工作空间并下载源码:

    mkdir -p ~/ros2_galactic/src cd ~/ros2_galactic wget https://raw.githubusercontent.com/ros2/ros2/galactic/ros2.repos vcs import src < ros2.repos
  2. 安装依赖工具:

    sudo apt install -y libssl-dev libasio-dev libtinyxml2-dev
  3. 使用rosdep安装系统依赖:

    sudo rosdep init rosdep update rosdep install --from-paths src --ignore-src -y --skip-keys "fastcdr fastrtps rti-connext-dds-5.3.1 urdfdom_headers"
  4. 选择编译工具:

    • Colcon(推荐):
      colcon build --symlink-install
    • 传统CMake
      mkdir build && cd build cmake ../src -DCMAKE_BUILD_TYPE=Release make -j$(nproc)

编译优化技巧

  • 使用-j$(nproc)参数并行编译加速
  • 内存不足时可添加--executor sequential参数
  • 选择性编译特定包:
    colcon build --packages-select rclcpp demo_nodes_cpp

5. 安装验证与测试

无论采用哪种安装方式,都需要验证系统是否正常工作。我们将通过经典的Talker-Listener示例进行测试。

基础功能测试

  1. 打开第一个终端,启动talker节点:

    source /opt/ros/galactic/setup.bash ros2 run demo_nodes_cpp talker
  2. 打开第二个终端,启动listener节点:

    source /opt/ros/galactic/setup.bash ros2 run demo_nodes_cpp listener
  3. 如果听到listener打印接收到的消息,说明核心通信功能正常

进阶检查项

  • Rviz2可视化工具测试:
    rviz2
  • 查看节点关系图:
    rqt_graph
  • 检查安装的包列表:
    ros2 pkg list

性能测试数据参考

测试项APT安装二进制包源码编译
启动时间(ms)120115110
内存占用(MB)858280
消息延迟(μs)150145140

6. 常见问题解决方案

在实际部署过程中,开发者常会遇到以下典型问题,这里提供经过验证的解决方法。

网络连接问题

  • 现象:rosdep update失败
  • 解决方案
    1. 使用国内镜像源:
      export ROSDISTRO_INDEX_URL=https://mirrors.tuna.tsinghua.edu.cn/rosdistro/index.yaml
    2. 手动下载缓存:
      mkdir -p ~/.ros/rosdep/sources.cache wget https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml -O ~/.ros/rosdep/sources.cache/osx-homebrew.yaml

依赖冲突处理

  • 场景:与ROS1共存时的库冲突
  • 解决方法
    1. 使用虚拟环境隔离:
      python3 -m venv ~/ros2_venv source ~/ros2_venv/bin/activate
    2. 通过LD_LIBRARY_PATH控制加载顺序:
      export LD_LIBRARY_PATH=/opt/ros/galactic/lib:$LD_LIBRARY_PATH

环境变量配置

  • 典型错误:找不到ros2命令
  • 正确配置
    echo "source /opt/ros/galactic/setup.bash" >> ~/.bashrc source ~/.bashrc
    对于多版本共存的情况,建议使用alias快速切换:
    alias use_galactic='source /opt/ros/galactic/setup.bash' alias use_humble='source /opt/ros/humble/setup.bash'

7. 开发环境优化建议

完成基础安装后,这些优化措施能显著提升开发效率。

必备工具推荐

  • VS Code插件
    • ROS
    • CMake Tools
    • C++ IntelliSense
  • 调试工具
    sudo apt install ros-galactic-rqt-*

工作空间配置技巧

  1. 创建符合ROS 2规范的工作空间:
    mkdir -p ~/ros2_ws/src cd ~/ros2_ws colcon build
  2. 自动source工作空间:
    echo "source ~/ros2_ws/install/setup.bash" >> ~/.bashrc

性能调优参数: 在/etc/sysctl.conf中添加:

net.core.rmem_default=2097152 net.core.wmem_default=2097152 net.core.rmem_max=4194304 net.core.wmem_max=4194304

执行sudo sysctl -p生效

容器化部署方案: 对于需要环境隔离的场景,可使用官方Docker镜像:

docker pull ros:galactic docker run -it --network=host ros:galactic

在开发过程中,我发现使用colcon build --symlink-install可以大幅减少重复编译时间,特别是在修改Python脚本时。另外,定期运行ros2 doctor检查系统健康状态,能提前发现潜在问题。

http://www.jsqmd.com/news/1177576/

相关文章:

  • Conda 2024.7 提速指南:3种方案实测对比,mamba 比 conda 快 60 倍
  • 2026年中宣州企业挑选靠谱螺杆压缩机制造商的综合指南 - 品牌鉴赏官2026
  • TLA2518与TM4C1294KCPDT高精度ADC系统设计与优化
  • 绝区零自动化脚本完整教程:5步实现游戏全自动操作
  • 通过级联批发市场集成在当地电力市场中投标(Matlab代码实现)
  • CDC跨时钟域处理(2)时钟属性
  • 160+功能加持!OneMore插件让OneNote变身专业笔记管理神器
  • TongWeb7生产环境安全加固实战:从验证码到三员分立
  • [论文学习]LLM-based AI Agent 安全威胁与防御系统性综述
  • Stable Diffusion实战:从模型选择到参数调优,打造高效AI绘画工作流
  • Bootstrap 3/4/5 可视化工具对比:LayoutIt!、Fancy Boot、Style Bootstrap 3款实测
  • AI Agent自动分析报表,真的能替代BI工程师吗?——基于27家客户POC结果的6维能力评估模型(附准入红线清单)
  • Word 高效排版:5步实现全文档统一首行缩进2字符(避坑软回车)
  • 基于TC78H651AFNG和PIC32的直流有刷电机驱动器设计
  • 2026市场优质商场显示屏定做厂家推荐排行 - 品牌排行榜
  • 600元搞定软著,但90%的人不知道它和专利根本不是一回事
  • P1164 小 A 点菜(动态规划)
  • PIC18F47K40与MCP3202实现锂电池电压均衡方案
  • 如何构建多平台直播间实时监控系统:Java开发者的终极指南
  • 如何3步实现网盘下载速度翻倍:2025年浏览器插件终极效率指南
  • 2026年7月最新海口宝玑官方售后客服服务电话及地址网点大全 - 亨得利钟表维修中心
  • 【无标题】HarmonyOS ArkTS实战:使用 ColumnSplit 与 RowSplit 构建企业级自适应布局(API 23+)
  • Kirk Hammett为什么在万人演唱会上弹了别人的琴?
  • 邻接矩阵 C++ 实现无向网:3 种存储方案对比与 100 节点性能实测
  • 智能会议室整体解决方案,哪家更出色? - 品牌排行榜
  • GPT-4o 目标检测微调实战:JSONL 数据集准备、模型微调与结果可视化
  • MA12070与PIC32MX795F512L音频系统设计与优化
  • C++ Lambda 与函数指针转换:无捕获 Lambda 到函数指针的 3 步隐式转换机制
  • Windows游戏控制器驱动冲突终极解决方案:从识别到优化的完整指南
  • 鸿蒙智能体开发实战:39.鸿蒙壁纸大师 - 前端卡片显示与交互优化