尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
ROS2 Humble 从入门实战教程:第五章 ROS2工作空间与功能包:开发过程的大本营【VMware Ubuntu22.04实操】
专栏简介本专栏基于VMware Ubuntu22.04 ROS2 Humble环境全程实操、全程排坑适合零基础新手入门学习。本文为第五章核心内容带你彻底搞懂ROS2两大核心基础工作空间、功能包掌握ROS2项目完整组织结构、创建、编译、环境配置同时收录虚拟机环境专属高频报错解决方案。摘要所有ROS2代码开发都离不开工作空间和功能包。工作空间是机器人项目的「大本营」功能包是ROS2代码的「最小单元」。本文从零讲解二者核心概念、目录结构、区别联系手把手实操创建工作空间、下载官方源码、创建C/Python功能包、编译配置环境同时解决虚拟机环境下Git克隆报错、PIP安装告警等疑难问题。一、什么是ROS2工作空间做过软件开发的同学都知道开发项目前需要新建工程文件夹存放所有源码、配置、资源文件。在ROS2中这个存放所有机器人项目代码、编译文件、日志文件的专属文件夹就叫做工作空间Workspace。简单理解工作空间 ROS2项目总仓库一个工作空间可以存放无数个功能包且系统支持创建多个独立工作空间互不干扰。1.1 工作空间四大核心目录标准ROS2工作空间包含四个固定文件夹分工明确新手必须熟记ros2_ws/ ├── src/ # 源码空间唯一手动操作目录 ├── build/ # 编译中间文件自动生成 ├── install/ # 编译安装产物自动生成 └── log/ # 编译运行日志自动生成src核心重点源代码目录所有自定义功能包、开源源码必须放入此处是我们唯一需要手写代码、修改代码的目录。build编译缓存目录存放编译过程产生的中间文件无需手动修改。install安装目录编译成功后生成可执行文件、头文件、环境配置文件系统通过该目录识别我们的自定义功能包。log日志目录记录编译报错、运行警告排查问题时可查看。 核心口诀只改src不动build、install、log编译报错直接删除三个自动生成文件夹重建即可。1.2 手把手创建ROS2工作空间遵循ROS2官方规范工作空间必须手动创建src子目录否则编译工具无法识别项目# 1. 创建工作空间及src源码目录 mkdir -p ~/ros2_ws/src # 2. 进入源码目录所有功能包、源码都放这里 cd ~/ros2_ws/src二、下载全套ROS2教程源码排坑完整版为了配合课程实操我们需要克隆官方开源教程源码包含所有章节案例代码话题、服务、动作、参数、TF、URDF等。2.1 常见报错问题VMware虚拟机专属虚拟机网络不稳定完整克隆仓库极易出现以下TLS连接报错error: RPC failed; curl 56 GnuTLS recv error (-110): The TLS connection was non-properly terminated. fatal: early EOF fatal: fetch-pack: invalid index-pack output报错原因虚拟机网络波动、Git默认缓冲区过小大仓库传输中途断开。2.2 完美解决方案浅克隆推荐先清理克隆失败的残留文件夹再使用--depth1浅克隆仅拉取最新代码大幅减少传输量适配弱网虚拟机# 1. 清理残留文件 rm -rf ros2_21_tutorials # 2. 浅克隆官方源码虚拟机必用 git clone --depth1 https://gitee.com/guyuehome/ros2_21_tutorials.git2.3 拓展恢复完整仓库历史后续需要查看完整提交记录可进入目录执行命令补全cd ros2_21_tutorials git fetch --unshallow2.4 备选方案扩容Git缓冲区# 扩容缓冲区至500M git config --global http.postBuffer 524288000 # 重新克隆 git clone https://gitee.com/guyuehome/ros2_21_tutorials.git三、安装PIP与ROS依赖自动配置工具源码下载完成后需要安装依赖管理工具自动安装所有功能包所需依赖。3.1 安装python3-pip含报错排坑执行安装命令sudo apt install python3-pip安装末尾可能出现以下告警Error: GDBus.Error:org.freedesktop.systemd1.UnitMasked: Unit packagekit.service is masked.问题解析该告警为Ubuntu图形包管理服务被虚拟机系统屏蔽导致不代表安装失败完全不影响使用直接忽略即可3.2 验证PIP安装成功pip3 -V输出版本号即为安装成功同时推荐升级国内清华源加速版pippip3 install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple3.3 安装rosdep依赖工具# 安装rosdepc国内适配版解决官方rosdep超时问题 sudo pip3 install rosdepc # 初始化、更新依赖源 sudo rosdepc init rosdepc update # 一键安装工作空间所有源码依赖 cd ~/ros2_ws rosdepc install -i --from-path src --rosdistro humble -y四、编译ROS2工作空间ROS2使用colcon作为统一编译工具先安装编译依赖sudo apt install python3-colcon-ros4.1 完整编译命令# 回到工作空间根目录 cd ~/ros2_ws # 编译所有功能包 colcon build # 【开发推荐】符号链接编译修改代码无需重新编译 colcon build --symlink-install4.2 加载环境变量编译完成后必须加载环境系统才能识别自定义包# 当前终端临时生效 source install/setup.bash # 永久配置所有终端生效 echo source ~/ros2_ws/install/setup.bash ~/.bashrc source ~/.bashrc五、ROS2功能包详解代码最小单元工作空间是大仓库功能包Package就是仓库里的独立项目是ROS2可编译、可运行的最小代码单元。ROS2所有功能导航、建图、控制、视觉全部以功能包的形式存在方便代码拆分、复用、分享。5.1 功能包两大类型ROS2支持C、Python两种开发语言对应两种功能包构建类型C功能包构建类型ament_cmake编译型语言运行效率高适合核心控制、算法开发Python功能包构建类型ament_python解释型语言开发速度快适合脚本、视觉、上层逻辑5.2 核心配置文件合法的ROS2功能包必须包含两个核心文件package.xml包描述文件记录包名、版本、作者、依赖库告诉ROS2当前包的依赖关系C包CMakeLists.txt编译规则文件定义代码编译方式、生成可执行文件Python包setup.py程序入口配置文件定义脚本运行入口5.3 手把手创建自定义功能包必须在src目录下创建功能包cd ~/ros2_ws/src # 1. 创建C功能包依赖rclcpp核心库 ros2 pkg create --build-type ament_cmake my_cpp_pkg --dependencies rclcpp # 2. 创建Python功能包依赖rclpy核心库 ros2 pkg create --build-type ament_python my_py_pkg --dependencies rclpy5.4 单独编译指定功能包多包项目开发单独编译单个包速度更快cd ~/ros2_ws colcon build --packages-select my_cpp_pkg六、工作空间 VS 功能包通俗区分工作空间全局容器一个文件夹容纳多个功能包是项目的「大文件夹」功能包最小功能单元一个包实现一个独立功能是项目的「子模块」✅ 层级关系工作空间 功能包 源码文件七、ROS2包查询常用命令# 列出系统所有功能包 ros2 pkg list # 查找指定功能包路径 ros2 pkg find rclcpp # 查看功能包详细信息 ros2 pkg describe my_cpp_pkg八、VMware Ubuntu22.04 专属高频踩坑汇总坑1Git克隆源码TLS连接中断虚拟机网络不稳定导致克隆失败解决方案清理残留文件 浅克隆坑2apt安装pip出现packagekit告警系统服务被屏蔽导致的无害告警忽略即可不影响功能使用。坑3新建终端找不到自定义包未永久配置环境变量执行source ~/.bashrc或重启终端即可。坑4编译报错、文件冲突缓存文件异常清空自动生成目录重新编译rm -rf build install log colcon build --symlink-install坑5在根目录创建功能包功能包必须创建在src目录下否则colcon编译工具无法识别。九、本章总结工作空间是ROS2项目大本营src存放源码build/install/log为自动生成目录禁止手动修改。功能包是ROS2最小运行单元分为ament_cmakeC和ament_pythonPython两种类型。通过git浅克隆可完美解决虚拟机源码下载失败问题适配弱网环境。rosdepc可一键安装所有项目依赖colcon为ROS2标准编译工具。虚拟机环境存在专属网络、系统服务坑点掌握对应排坑方法可大幅提升开发效率。
RELATED

相关推荐

Codex默认模式提速50%:减少返工与结构化提示词实战

Codex默认模式提速50%:减少返工与结构化提示词实战

我给自己排了一个 28 天的 Codex 实践计划,每天只做一个主题。第一天我没有去背更多高级参数,反而把所有时间花在“默认模式”上。结果有点出乎意料:同样两个改代码的任务,完成时间从 120 分钟压到 65 分钟左右,换算下…

📅 2026/10/10 9:04:52
DeepSeek提升自动化测试效率:用例生成、失败分析与AI维护实战

DeepSeek提升自动化测试效率:用例生成、失败分析与AI维护实战

搞自动化测试这些年,我最大的感受就是:用例维护比写用例累十倍,断言写不好等于白测,环境一崩全队emo。所以当 DeepSeek 这类 AI 工具开始把编程能力拉到接近普通工程师水平之后,我第一反应不是拿它写业务代码&#xff…

📅 2026/10/10 9:04:52
ERP系统蓝图设计:业务与IT的翻译契约

ERP系统蓝图设计:业务与IT的翻译契约

简介:本资源是一份面向大型集团企业CIO、信息化负责人及ERP实施顾问的数字化转型顶层设计方案,聚焦ERP系统蓝图规划与业财一体化落地路径。方案直击传统外贸集团在主数据混乱、系统分散、业财脱节、海外IT整合困难等痛点,系统梳理了背景研判、…

📅 2026/10/10 8:59:50
MORE NEWS

更多资讯

📰

如何选择论文降重工具 认准合规适配核心标准

不少毕业论文返修、期刊投稿退稿的案例中,重复率不达标是最常见的原因。近年学术审核标准持续升级,不仅重复率要求不断收紧,多数院校和期刊还新增了AI生成内容筛查环节,双重检测的压力让很多写作者犯难。自己手动降重不仅耗时耗力…

📰

大模型安全之四十五:从数据到输出----GenAI 版权、知识产权与伦理合规实战指南

一、问题的起点:一份“数据质量报告”背后的法律地雷 数据集供应商从互联网各处收集了监管指南、行业白皮书和公开合规框架,但没有验证其中任何一份的许可权利。 这看似是一个数据质量问题,实际上是一颗法律地雷:每一个出现在训…

📰

梯度下降与反向传播算法:NYU-DLSP20 第二周课程笔记的数学原理与 PyTorch 实现

示例工程 【免费下载链接】NYU-DLSP20 NYU Deep Learning Spring 2020 项目地址: https://gitcode.com/gh_mirrors/pyt/pytorch-Deep-Learning 点击查看 免费下载 本文基于 NYU-DLSP20(NYU Deep Learning Spring 2020)课程第二周第一节讲义&…

📰

个人技能数据基础设施:构建可验证、可衰减、可进化的技能事件流系统

1. 项目概述:当“skills”不再只是简历上的单词,而成为可验证、可组合、可进化的个人能力操作系统“skills”这个词最近在技术社区、职业发展平台和教育产品后台的搜索日志里,出现频率陡增——但它早已不是求职简历末尾那行加粗的“Technical…

📰

262K 长上下文实测:把整本书喂给 Yandex 新模型,它记住了多少

262K 长上下文实测:把整本书喂给 Yandex 新模型,它记住了多少 【免费下载链接】AliceAI-Foundation-80B-A3B-Base 项目地址: https://ai.gitcode.com/hf_mirrors/yandex/AliceAI-Foundation-80B-A3B-Base "上下文 262K"在参数表里只是…

📰

用JavaCC实现类C编译器:词法、语法、语义与三地址码全解析

简介:重庆理工大学编译原理课程设计的完整项目,基于Java语言与JavaCC工具构建类C编译器,覆盖文法设计、词法分析、语法分析、自动测试与结果验证等核心环节,适合正在完成编译原理课程设计的学生,也适合需要参考完整编译…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬