尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

5:ROS2 Humble :工作空间完整详解

5:ROS2 Humble :工作空间完整详解
📅 发布时间:2026/6/19 3:16:43

前言

很多初学者会混淆 ROS1 与 ROS2 的工作空间,

ROS1 使用 catkin_ws + catkin_make

ROS2 统一使用 colcon 编译工具

工作空间结构、创建命令、编译命令全部改动。

本文基于 Ubuntu22.04 + ROS2 Humble,全程小白友好,逐行解释命令、拆解每个文件夹作用,看完就能独立搭建、使用自己的 ROS2 工程。

一、什么是 ROS2 工作空间

ROS2 工作空间(workspace)就是一个独立文件夹,专门存放你自己写的机器人代码、功能包、自定义消息、启动文件。

系统自带的 ROS 工具(比如 turtlesim、rviz)存放在 /opt/ros/humble 系统目录,不建议修改;

所有个人开发代码全部放在自定义工作空间,解耦方便,工程迁移、删除、复制都不会破坏系统 ROS 环境。

ROS2 工作空间固定包含 4 个核心目录:src、build、install、log(ROS2 无 ROS1 的 devel 文件夹,这是最大区别)。

二、四大核心目录详解(重点,小白必看懂)

假设你的工作空间名为 colcon_ws,根目录路径:~/colcon_ws/

1. src(Source Space 源码空间,唯一需要手动写代码的文件夹)

  • 路径:~/colcon_ws/src/
  • 作用:存放所有自定义功能包(package),Python 脚本、C++ 源码、launch 启动文件、自定义消息、配置文件全部放在这里。
  • 目录结构说明:
    colcon_ws/src/ ├── package_01/ # 第一个自定义功能包 │ ├── package.xml # 功能包配置文件(依赖、名称、版本) │ ├── CMakeLists.txt # 编译规则文件 │ ├── launch/ # 存放.launch.py启动文件 │ ├── scripts/ # 存放Python可执行脚本 │ ├── src/ # 存放C++源码 ├── package_02/ # 第二个自定义功能包
  • 关键规则:工作空间下所有功能包必须直接放在 src 下,不能嵌套文件夹。

2. build(Build Space 编译中间文件目录)

  • 路径:~/colcon_ws/build/
  • 作用:colcon build编译时生成的临时缓存、CMake 编译中间文件、日志、依赖检测文件。
  • 实用知识点:
    1. 里面文件看不懂,不需要手动修改;
    2. 代码改完编译报错时,可以直接删除整个 build 文件夹,重新编译清除缓存;
    3. 每个功能包会在 build 里生成独立子文件夹,互不干扰。

3. install(Install Space 安装空间,运行程序核心目录)

  • 路径:~/colcon_ws/install/
  • 作用:编译完成后,生成可执行程序、库文件、环境脚本、启动文件,运行自己代码全靠这个文件夹。
  • 内部关键子文件夹:
    • bin/:编译好的可执行程序(Python/C++ 节点);
    • lib/:C++ 编译生成的动态库、Python 包;
    • share/:功能包配置、launch 文件、消息定义、参数文件;
    • setup.bash / setup.sh:环境变量脚本,新开终端必须source install/setup.bash,系统才能识别你写的自定义节点;
  • 补充:ROS1 的devel文件夹在 ROS2 中被彻底移除,所有运行相关文件统一放到 install。

4. log(日志目录,ROS2 独有)

  • 路径:~/colcon_ws/log/
  • 作用:每次colcon build编译完整日志,编译报错、警告全部存在这里,排查编译失败时可以打开日志查看详细报错信息。

三、从零搭建 ROS2 工作空间(逐行命令 + 详细说明)

前置条件

  1. Ubuntu22.04 系统,已完整安装 ROS2 Humble;
  2. 终端提前加载 ROS2 基础环境(永久配置过.bashrc可跳过)
source /opt/ros/humble/setup.bash

步骤 1:创建工作空间根目录 + src 源码文件夹

mkdir -p ~/colcon_ws/src

-p:自动创建多级目录,上层文件夹不存在也不会报错;
~/colcon_ws:工作空间根目录,~代表当前用户家目录;
/src:源码目录,ROS2 强制要求所有功能包放在 src 内。


步骤 2:进入 src 目录,创建自定义功能包(工程代码载体)

#切换到 src 文件夹 cd ~/colcon_ws/src #创建功能包通用语法 ros2 pkg create --build-type ament_python 包名 依赖1 依赖2

ros2 pkg create:ROS2 创建功能包专用指令(替代 ROS1 的 catkin_create_pkg);


--build-type ament_python:编译类型,写 Python 代码;

--build-type ament_cmake:编译类型,写 C++ 代码;

实操示例(创建名为demo_pkg的 Python 功能包):

ros2 pkg create --build-type ament_python demo_pkg rclpy std_msgs

末尾跟随依赖包,rclpy(Python 通信核心库)、std_msgs(标准消息)是基础必带依赖。

执行后 src 内会生成demo_pkg完整模板文件夹,自带 package.xml、资源目录。

​


步骤 3:返回工作空间根目录,编译整个工作空间

#切回工作空间根目录(必须在 colcon_ws 下编译,不能在 src 里编译) cd ~/colcon_ws #执行编译命令 colcon build

命令说明:

  • colcon:ROS2 官方统一编译工具,替代 ROS1 catkin;
  • build:执行编译操作;
  • 可选优化指令:colcon build --packages-select demo_pkg只编译单个功能包,速度更快;
  1. 编译成功标志:终端末尾输出Summary: X packages finished [XX.Xs],无 error 报错。
  2. 编译完成后,根目录自动生成build、install、log三个文件夹。


步骤 4:加载工作空间环境变量(关键!不 source 无法运行自定义节点)

临时生效(仅当前终端,新开终端需要重新执行)
source ~/colcon_ws/install/setup.bash

原理:执行 install 内的 setup 脚本,把你的自定义功能包路径注册到系统 ROS 环境,终端才能通过ros2 run找到你写的节点。

永久生效(推荐,新开终端自动加载)
#编辑 bash 配置文件 gedit ~/.bashrc #在文件最底部添加一行: source ~/colcon_ws/install/setup.bash #保存关闭文件,刷新配置立刻生效 source ~/.bashrc

步骤 5:验证工作空间环境是否配置成功

执行检查命令:

echo $COLCON_PREFIX_PATH

正常输出会包含/home/wzl/colcon_ws/install,代表环境加载成功。


四、创建 / 编译功能包完整流程复盘(简化实操流程)

1:进入源码目录:cd ~/colcon_ws/src
2:创建功能包(Python 举例):ros2 pkg create --build-type ament_python test_pkg rclpy std_msgs
3:返回工作空间根目录:cd ~/colcon_ws
4:编译:colcon build
5:加载环境:source install/setup.bash
6:运行自定义节点:ros2 run test_pkg 你的节点文件名

五、ROS1 catkin_ws vs ROS2 colcon_ws 核心区别(避坑重点)

表格

对比项ROS1(catkin)ROS2(colcon)
编译工具catkin_make / catkin buildcolcon build
工作空间名称catkin_ws(习惯命名)colcon_ws(习惯命名)
中间目录build + develbuild + install + log,无 devel
创建功能包命令catkin_create_pkgros2 pkg create
环境脚本路径devel/setup.bashinstall/setup.bash
编译系统catkinament_python / ament_cmake

六、小白高频问题解答

1. 为什么运行自己写的节点提示 “包不存在”?

90% 原因:没有执行source install/setup.bash,系统没识别到你的工作空间,永久写入.bashrc即可一劳永逸。

2. 代码修改后运行还是旧效果?

两种解决方式:

  1. 在工作空间根目录重新执行colcon build,再 source 环境;
  2. 彻底清除缓存:删除 build、install、log 三个文件夹,重新编译。

3. src 里可以放多个功能包吗?

完全可以,src 下能存放几十个独立功能包,一次colcon build全部编译。

4. 能不能创建多个工作空间?

可以,比如一个colcon_ws做 AGV 导航、一个camera_ws做视觉,注意source时只会生效最后加载的工作空间,多工程开发建议分开终端。

5. build 文件夹可以删除吗?

完全可以,删除后重新colcon build会自动生成,常用于解决编译缓存错乱、奇怪报错。

七、拓展小实操(快速测试你的工作空间)

#在 src 创建测试包 cd ~/colcon_ws/src ros2 pkg create --build-type ament_python hello_world rclpy std_msgs #返回根目录编译 cd ~/colcon_ws colcon build source install/setup.bash #查看包是否被识别 ros2 pkg list | grep hello_world

能输出 hello_world,代表整个工作空间搭建流程完全成功。

相关新闻

  • 阿里国际agent开发岗,我跪了!!!
  • 小红书2026.6.11推荐算法升级深度解析:语义质量评分、深度互动建模与AI内容检测的技术拆解
  • AutoDrive Challenge™:学生如何从零构建L4自动驾驶系统

最新新闻

  • Web登录口生日规则暴力破解完整实战教程
  • Nginx集成ModSecurity v3:从源码编译到OWASP CRS配置的WAF实战指南
  • 猫抓Cat-Catch:浏览器视频下载终极解决方案,三步轻松获取网页视频资源
  • Playwright-MCP零配置自动化测试部署实战指南
  • 深入解析三相正弦波生成与SVPWM:从DSP定点算法到电机FOC实战
  • 2026年比较好的水洗砾石白色石子/庐山透水路面砾石铺/庐山地坪骨料砾石/打蜡黑砾石长期合作厂家推荐 - 品牌宣传支持者

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号