Creating a workspace:创建一个工作空间

简介: Creating a workspace:创建一个工作空间

@[toc]

参考官方文档:Creating a workspace

背景

工作区是包含 ROS 2 包的目录。 在使用 ROS 2 之前,有必要在您计划使用的终端中source您的 ROS 2 安装工作区。这使得 ROS 2 的包可供您在该终端中使用。

您还可以选择source一个“覆盖层”——一个辅助工作区,您可以在其中添加新包而不会干扰您正在扩展的现有 ROS 2 工作区,或“底层”。 您的底层必须包含覆盖层中所有包的依赖项。覆盖层中的包将覆盖底层中的包。也可以有多层底层和覆盖层,每个连续的覆盖层都使用其父底层的包。

1. source ROS 2环境

source /opt/ros/humble/setup.bash

2. 创建一个新的文件夹

最佳做法是为每个新工作区创建一个新目录。 名称并不重要,但它有助于表明工作区的用途。 让我们为“开发工作区”选择目录名称 ros2_ws:

mkdir -p ~/ros2_ws/src && cd ~/ros2_ws/src

3. 下载示例仓库

确保你在下载之前仍然在ros2_ws/src目录下。

在初学者开发人员教程的其余部分,您将创建自己的包,但现在您将练习使用现有包将工作区放在一起。

您将使用的现有包来自 ros_tutorials 存储库 (repo)。 turtlesim 就是此存储库中的一个包。

你可以在GitHub中查看这个repo

注意目录列表左侧的“Branch”下拉列表。 当您克隆此 repo 时,添加 -b 参数,后跟与您的 ROS 2 发行版对应的分支。

在ros2_ws/src目录下,为你所使用的发行版运行以下命令:

git clone https://github.com/ros/ros_tutorials.git -b humble-devel

现在 ros_tutorials 已克隆到您的工作区中。 ros_tutorials 存储库包含 turtlesim 包,我们将在本教程的其余部分使用它。 此存储库中的其他包未构建,因为它们包含 COLCON_IGNORE 文件。
image.png
现在您已经使用示例包填充了您的工作区,但它还不是一个功能齐全的工作区。 您需要先解决依赖关系并构建工作区。

4. 解决依赖

在构建工作区之前,您需要解决包依赖关系。 您可能已经拥有所有依赖项,但最佳做法是在每次克隆时检查依赖项。 您不希望由于缺少依赖项而在长时间等待后构建失败。

从你的工作空间(ros2_ws)的根部,运行以下命令:

# cd if you're still in the ``src`` directory with the ``ros_tutorials`` clone
cd .. && rosdep install -i --from-path src --rosdistro humble -y

如果您已经拥有所有依赖项,终端将返回:

All required rosdeps installed successfully

包在 package.xml 文件中声明它们的依赖关系(您将在下一个教程中了解有关包的更多信息)。 此命令遍历这些声明并安装缺少的声明。 您可以在另一个教程(即将推出)中了解更多关于 rosdep 的信息。

5. 使用colcon构建工作空间

从工作区的根目录 (ros2_ws),您现在可以使用以下命令构建您的包:

colcon build

终端将返回以下信息:

Starting >>> turtlesim
Finished <<< turtlesim [5.49s]

Summary: 1 package finished [5.58s]

下面是其他关于colcon build的参数:

--packages-up-to:构建你想要的软件包,以及它的所有依赖项,但不是整个工作区(节省时间)。
--symlink-install:使您不必每次修改 python 脚本时都必须重新构建。
--event-handlers console_direct+:在构建时显示控制台输出(否则可以在日志目录中找到)

一旦构建完成,在工作区根(~/ros2_ws)输入ls,你会看到colcon已经创建了新的目录:

build  install  log  src

install目录是你的工作空间的设置文件所在的地方,你可以用它来source你的覆盖层。

6. source覆盖层

在source之前,最好打开一个新终端,要与您构建工作区的终端分开。 在您构建的同一终端中source覆盖层,或者同样在source覆盖层后构建,可能会产生复杂的问题。 在新终端中,将你的主要 ROS 2 环境作为“底层”,这样你就可以在它“之上”构建覆盖层:

source /opt/ros/humble/setup.bash

进入你的工作空间的根部:

cd ~/ros2_ws

在根部,source你的覆盖层:

. install/local_setup.bash

现在你可以从覆盖层中运行turtlesim软件包:

ros2 run turtlesim turtlesim_node

但是,你怎么能知道这是在运行覆盖层的海龟模型,而不是你的ROS 2主安装的海龟模型?
让我们在覆盖层中修改turtlesim,这样你就可以看到效果了。你可以在覆盖层中单独修改和重建软件包,而不是在底层中。覆盖层比底层优先权更高。

7. 修改覆盖层

你可以通过编辑turtlesim窗口的标题栏在你的覆盖层中修改turtlesim。要做到这一点,找到 ~/ros2_ws/src/ros_tutorials/turtlesim/src 中的 turtle_frame.cpp 文件。用你喜欢的文本编辑器打开turtle_frame.cpp。

在第52行你会看到函数 setWindowTitle("TurtleSim"); 。将 "TurtleSim"的值改为 "MyTurtleSim",并保存文件。

回到你先前运行colcon build的第一个终端,再次运行它。

返回到第二个终端(source覆盖层的终端),再次运行turtlesim:

ros2 run turtlesim turtlesim_node

你会看到海龟模拟窗口的标题栏现在显示 "MyTurtleSim"。

为了查看你的底层是否仍然完好无损,打开一个全新的终端,只用source你的ROS 2安装。再次运行turtlesim:

ros2 run turtlesim turtlesim_node

窗口名称仍然是TurtleSim。

你可以看到,对覆盖层的修改实际上并没有影响到底层的任何东西。

相关实践学习
使用ROS创建VPC和VSwitch
本场景主要介绍如何利用阿里云资源编排服务,定义资源编排模板,实现自动化创建阿里云专有网络和交换机。
ROS入门实践
本课程将基于基础设施即代码 IaC 的理念,介绍阿里云自动化编排服务ROS的概念、功能和使用方式,并通过实际应用场景介绍如何借助ROS实现云资源的自动化部署,使得云上资源部署和运维工作更为高效。
目录
相关文章
|
前端开发 数据可视化 大数据
Echarts通过ajax获取数据定时更新轮询的解决方案及问题分析
Echarts通过ajax获取数据定时更新轮询的解决方案及问题分析
520 0
|
分布式计算 运维 监控
Dataphin离线数仓搭建深度测评:数据工程师的实战视角
作为一名金融行业数据工程师,我参与了阿里云Dataphin智能研发版的评测。通过《离线数仓搭建》实践,体验了其在数据治理中的核心能力。Dataphin在环境搭建、管道开发和任务管理上显著提效,如测试环境搭建从3天缩短至2小时,复杂表映射效率提升50%。产品支持全链路治理、智能提效和架构兼容,帮助企业降低40%建设成本,缩短60%需求响应周期。建议加强行业模板库和移动适配功能,进一步提升使用体验。
|
5月前
|
Linux 开发工具 Python
具身智能:零基础入门睿尔曼机械臂(三)——夹爪抓取与释放控制全解析
本文详解睿尔曼第三代机械臂电动夹爪的Python SDK控制方法,聚焦`set_gripper_pick_on`与`set_gripper_release`核心函数,拆解速度、力度、阻塞等参数含义,结合“运动+抓取+释放”完整流程代码,手把手实现夹爪抓放实操,助力零基础用户快速掌握从代码到动作的全流程控制。
508 13
|
5月前
|
存储 数据采集 算法
具身智能:零基础入门睿尔曼机械臂(六)——手眼标定代码库详解,从原理到实践
本文详解睿尔曼手眼标定代码库,涵盖眼在手上与眼在手外两种模式的实现原理及核心代码解析。内容包括数据采集、位姿处理、相机标定与手眼矩阵求解全流程,结合OpenCV的Tsai算法实现高精度坐标转换,助力机器人视觉精准抓取应用开发。
771 3
|
机器人 网络性能优化 Python
ROS2教程 10 launch
这篇文章是关于ROS2(Robot Operating System 2)的launch文件的详细教程,包括如何创建和使用launch文件来启动ROS2节点,以及如何通过参数、命名空间和条件判断等高级特性来控制节点的启动行为。
1356 0
|
存储 Ubuntu 安全
ROS2教程02 ROS2的安装、配置和测试
本文是关于ROS2(机器人操作系统2)的安装、配置和测试的教程。内容包括使用一键安装脚本快速安装ROS2 Humble版,手动安装步骤,设置语言环境、添加软件源、更新软件包、安装ROS2桌面版和开发工具,配置ROS2环境,创建工作空间,配置ROS2领域以避免网络冲突,以及如何删除ROS2。此外,还包括了测试ROS2是否安装成功的两个案例:基本的Topic通信测试和使用Turtlesim演示程序。适用于Ubuntu 22.04操作系统。
5070 1
ROS2教程02 ROS2的安装、配置和测试
|
传感器
stm32f407探索者开发板(二十二)——通用定时器基本原理讲解
stm32f407探索者开发板(二十二)——通用定时器基本原理讲解
1831 0
|
存储 机器人 C++
ROS2教程 06 自定义消息接口
本文是关于如何在ROS2(机器人操作系统2)中创建和使用自定义消息接口的教程,包括创建功能包、定义消息和请求/响应服务、修改CMakeLists.txt和package.xml文件,以及编译和测试消息接口的步骤。
1226 0
|
存储 缓存 机器人
ROS2教程 01 创建工作空间
本文是关于如何在ROS2(机器人操作系统2)中创建和管理工作空间的教程,介绍了工作空间的概念、ROS1与ROS2工作空间的区别、创建工作空间的步骤,包括建立工作空间文件夹、更新包依赖、编译工作空间以及设置环境变量以便于调用新生成的文件和脚本。
1619 0

热门文章

最新文章