当前位置: 首页 > 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.jsqmd.com/news/937321/

相关文章:

  • 嘉兴除甲醛行业解析:直营深耕与创业赋能协同发展 - 速递信息
  • 终极指南:OpCore-Simplify如何让Hackintosh配置变得简单快速
  • 如何用ImageJ轻松处理科学图像:3个实用技巧快速上手开源工具
  • AI动态简报之技术前沿篇(2026.06.02)
  • 告别命令行恐惧:用VScode的Remote-SSH插件,像操作本地文件一样玩转远程服务器
  • RLinf框架:强化学习通信与负载均衡的革新方案
  • 告别混乱的Controller层:我是如何用一套Java工具类统一EasyUI后台的响应、分页与异常的
  • 传统认为空腹运动燃脂最快,编写程序,根据血糖,作息数据,分析空腹运动风险,输出适配/禁忌人群。
  • 香港留学优选机构有哪些,2026年本地化红黑榜发布 - 速递信息
  • 163MusicLyrics:音乐歌词获取终极指南,告别歌词荒的烦恼
  • 魔兽争霸3终极优化指南:如何用WarcraftHelper实现3倍帧率提升
  • 别再傻傻分不清了!I420、NV12、NV21这些YUV格式到底怎么选?附FFmpeg实战代码
  • 告别Windows编译慢!在Ubuntu 22.04上从源码编译Chrono Engine全模块(含Irrlicht可视化)
  • 为什么你的AI助手无法同时处理多个项目?OpenCode的答案是:实例隔离
  • 告别DCNv3的卡顿:实测DCNv4在InternImage模型上速度提升80%的配置心得
  • TrollInstallerX深度解析:如何在iOS 14.0-16.6.1上实现智能TrollStore部署
  • 快手视频批量下载终极指南:3分钟学会获取高清无水印素材
  • 毫米波雷达MIMO发射模式怎么选?用AWR2944实测对比TDM与BPM的性能差异
  • AI Agent术语大揭秘:从底层模型到完整系统,一篇读懂!
  • 2026 年北京手表回收门店推荐:合扬手表回收同城高价变现首选 - 合扬奢侈品交易中心
  • 别再为版本对应头疼了!手把手教你搞定PyTecplot与Python、Tecplot的版本匹配(附避坑清单)
  • Cyberpunk2077存档编辑终极指南:三步掌握角色与物品深度定制
  • 【2026最新】Autodesk Revit安装超详细图解:中文免费版BIM建模神器
  • 实战指南:如何将闲置电视盒子改造成高性能Armbian服务器
  • Arduino倒计时器实战:从硬件连接到状态机编程
  • STM32H743的FDCAN到底有多快?实测TJA1042T收发器实现5Mbps数据段传输(附CubeMX配置避坑点)
  • 别再只用鼠标点点点了!用Blender局部坐标高效调整模型细节(以调整椅子腿为例)
  • input-overlay终极指南:如何在直播中完美显示键盘、鼠标和游戏手柄输入
  • 保姆级清理指南:彻底卸载VMware 17 Pro后,如何手动清注册表和残留文件让网卡‘重生’
  • 为什么你的微信聊天记录需要永久保存?WeChatMsg完整备份解决方案