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

Ubuntu 20.04上ROS2 Humble安装保姆级教程(含网络问题解决与编译避坑)

Ubuntu 20.04上ROS2 Humble安装全流程指南与疑难解析

作为一名长期从事机器人开发的工程师,我深知在Ubuntu系统上搭建ROS2环境时可能遇到的各种"坑"。本文将分享一套经过实战验证的安装流程,特别针对网络连接问题和编译错误提供解决方案,帮助开发者一次性完成ROS2 Humble的安装配置。

1. 系统准备与环境检查

在开始安装ROS2之前,确保系统环境配置正确至关重要。许多安装失败的问题都源于基础环境的不兼容或配置错误。

首先检查系统语言环境编码是否为UTF-8,这对于ROS2的正常运行是必需的:

locale

如果输出中LANGLC_ALL不是en_US.UTF-8,需要执行以下命令进行设置:

sudo apt update && sudo apt install locales sudo locale-gen en_US en_US.UTF-8 sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 export LANG=en_US.UTF-8

注意:修改语言环境后需要重新登录或重启终端才能生效

接下来更新系统软件包并安装必要的基础工具:

sudo apt update && sudo apt upgrade -y sudo apt install curl gnupg2 lsb-release -y

2. ROS2软件源配置与网络问题解决

ROS2的安装需要从官方仓库下载软件包,但由于网络原因,国内用户常遇到连接问题。以下是经过优化的配置方案。

2.1 配置国内镜像源

为提高下载速度,建议先更换Ubuntu的软件源为国内镜像。以中科大源为例:

sudo sed -i 's|http://.*archive.ubuntu.com|http://mirrors.ustc.edu.cn|g' /etc/apt/sources.list sudo sed -i 's|http://.*security.ubuntu.com|http://mirrors.ustc.edu.cn|g' /etc/apt/sources.list

2.2 添加ROS2 GPG密钥

ROS2软件包需要验证GPG密钥,但官方密钥服务器可能无法访问。我们可以直接下载密钥文件:

sudo curl -sSL https://mirrors.tuna.tsinghua.edu.cn/rosdistro/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg

如果遇到raw.githubusercontent.com无法访问的问题,可以修改hosts文件:

echo "185.199.108.133 raw.githubusercontent.com" | sudo tee -a /etc/hosts

2.3 添加ROS2软件源

使用以下命令添加ROS2 Humble的软件源:

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://mirrors.tuna.tsinghua.edu.cn/ros2/ubuntu $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

更新软件包索引:

sudo apt update

3. ROS2 Humble安装与依赖处理

3.1 安装核心软件包

ROS2 Humble提供了多种安装变体,推荐安装桌面版(包含GUI工具):

sudo apt install ros-humble-desktop -y

对于资源受限的环境,可以选择基础版:

sudo apt install ros-humble-ros-base -y

3.2 解决rosdep初始化问题

rosdep是ROS的依赖管理工具,但初始化时经常失败。以下是解决方案:

首先安装rosdep

sudo apt install python3-rosdep -y

如果sudo rosdep init失败,可以手动创建配置文件:

sudo mkdir -p /etc/ros/rosdep/sources.list.d/ echo "yaml https://mirrors.tuna.tsinghua.edu.cn/rosdistro/rosdep.yaml" | sudo tee /etc/ros/rosdep/sources.list.d/20-default.list

然后更新rosdep

rosdep update

提示:如果更新过程中出现超时错误,可以尝试多次执行rosdep update

4. 从源码构建ROS2(可选)

对于需要自定义修改或开发ROS2本身的用户,可以从源码构建。以下是关键步骤:

4.1 准备工作

安装构建工具和依赖:

sudo apt install python3-colcon-common-extensions python3-vcstool -y python3 -m pip install -U flake8 flake8-blind-except flake8-builtins flake8-class-newline flake8-comprehensions flake8-deprecated flake8-import-order flake8-quotes pytest pytest-repeat pytest-rerunfailures

4.2 获取源码

创建工作空间并获取源码:

mkdir -p ~/ros2_humble/src cd ~/ros2_humble vcs import --input https://mirrors.tuna.tsinghua.edu.cn/github-raw/ros2/ros2/humble/ros2.repos src

4.3 安装依赖

使用rosdep安装依赖:

rosdep install --from-paths src --ignore-src -y --skip-keys "fastcdr rti-connext-dds-6.0.1 urdfdom_headers"

4.4 编译ROS2

使用colcon工具进行编译:

colcon build --symlink-install

编译选项说明:

选项说明
--symlink-install使用符号链接而非复制文件,节省空间
--packages-up-to仅编译指定包及其依赖
--packages-select仅编译指定包
--cmake-args传递额外CMake参数

5. 环境配置与验证

5.1 设置环境变量

将以下内容添加到~/.bashrc文件中,使ROS2环境变量自动生效:

echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc source ~/.bashrc

如果是从源码构建的,使用以下命令:

echo "source ~/ros2_humble/install/setup.bash" >> ~/.bashrc source ~/.bashrc

5.2 验证安装

运行简单的发布/订阅示例验证安装:

在第一个终端运行发布者:

ros2 run demo_nodes_cpp talker

在第二个终端运行订阅者:

ros2 run demo_nodes_py listener

如果能看到消息传递,说明ROS2安装成功。

6. 常见问题与解决方案

6.1 网络连接问题

  • 症状raw.githubusercontent.com无法访问
  • 解决方案
    1. 修改hosts文件(如前面所述)
    2. 使用国内镜像源替代
    3. 检查代理设置(如有)

6.2 rosdep初始化失败

  • 症状sudo rosdep init返回错误
  • 解决方案
    1. 手动创建配置文件
    2. 使用国内镜像源
    3. 检查网络连接

6.3 编译错误

常见编译错误及解决方法:

错误类型可能原因解决方案
包找不到依赖未安装运行rosdep install
头文件缺失开发包未安装安装对应的-dev
链接错误库路径问题检查LD_LIBRARY_PATH

6.4 运行时问题

  • 症状ROS_DOMAIN_ID冲突
  • 解决方案:设置不同的ROS_DOMAIN_ID环境变量
  • 命令
    export ROS_DOMAIN_ID=<唯一数字>

7. 性能优化与开发建议

7.1 编译加速

使用并行编译可以显著减少构建时间:

colcon build --symlink-install --parallel-workers 8

7.2 选择性编译

当只修改了特定包时,可以只重新编译该包:

colcon build --symlink-install --packages-select <包名>

7.3 开发工具推荐

  • IDE:VS Code + ROS插件
  • 调试工具rqt_graph,ros2 topic echo
  • 性能分析ros2 run --prefix 'perf record -g'

在实际项目中,我发现保持ROS2环境的干净非常重要。建议为每个项目创建独立的工作空间,并使用colcon--merge-install选项来避免冲突。

http://www.gsyq.cn/news/1448674.html

相关文章:

  • 告别命令行恐惧:用VScode的Remote-SSH插件,像操作本地文件一样玩转远程服务器
  • AI动态简报之技术前沿篇(2026.06.02)
  • 香港留学优选机构有哪些,2026年本地化红黑榜发布 - 速递信息
  • 别再傻傻分不清了!I420、NV12、NV21这些YUV格式到底怎么选?附FFmpeg实战代码
  • 魔兽争霸3终极优化指南:如何用WarcraftHelper实现3倍帧率提升
  • 2026 年北京手表回收门店推荐:合扬手表回收同城高价变现首选 - 合扬奢侈品交易中心
  • AI Agent术语大揭秘:从底层模型到完整系统,一篇读懂!
  • Arduino倒计时器实战:从硬件连接到状态机编程
  • 实战指南:如何将闲置电视盒子改造成高性能Armbian服务器
  • STM32H743的FDCAN到底有多快?实测TJA1042T收发器实现5Mbps数据段传输(附CubeMX配置避坑点)
  • OpenHarmony开发避坑:musl与glibc混用导致编译失败的5个常见场景及解决
  • 从玩具舵机到机械臂:手把手教你用STM32F103+CubeMX配置PWM,驱动SG90和MG995搭建第一个机器人关节
  • 保姆级避坑指南:用Anaconda3和PyTorch 1.12.0在Windows上搞定NeRF-PyTorch环境(附清华源)
  • gibMacOS:跨平台下载macOS系统镜像的专业解决方案
  • AI动态简报之商业洞察篇(2026.06.02)
  • AI与大数据融合实践:从架构设计到场景落地的全链路指南
  • 新手必看:用Keil和Proteus 8.9给AT89C51单片机做个简易秒表(附完整代码和仿真文件)
  • 传统喝水越多越好,编写程序,结合气温运动量,肾功能数据,计算个人每日精准饮水量,预警饮水过量。
  • Web工程化命题,拒绝页面仔
  • 2026 深圳钻石回收实测榜单|五大正规机构真实测评! - 合扬奢侈品交易中心
  • 大模型的典型应用场景
  • WuWa-Mod:鸣潮游戏模组终极指南,5分钟解锁15+隐藏功能
  • Ansaldo 167A.0100009电源驱动板
  • 2026年榆次同城搬家公司权威口碑排行榜 - 资讯快报
  • 2节锂电池保护芯片PW7120集成过充过放过流短路保护
  • 向量空间JBoltAI:智能包装审核系统功能拆解
  • 基于Micro:bit的嵌入式游戏开发:从零构建太空鸟游戏
  • 防爆空调怎么选?资质、性能、售后三维评估+五大厂家汇总 - 深度智识库
  • 游戏闪退?可能是Vulkan的锅!Windows双显卡(独显+核显)环境下排查与切换Vulkan渲染器的完整指南
  • 别再瞎调电压了!用Density Evolution算法给NAND闪存和LDPC码做“联合体检”